Aller au contenu


Problême Sur Un Script De Son


  • Veuillez vous connecter pour répondre
4 réponses à ce sujet

#1 Kiitiara

Kiitiara

Posté 24 décembre 2009 - 09:41

Bonjour,

Pour un des mes mods j'ai créé un anneau que lorsque l'on s'en équipe, fonctionne comme des écouteurs radio. Jusque là elle fonctionne très bien.
Mais je crois que la fonction StopSound ne fonctionne pas... (pour l'éteindre) -> voir vers la fin du script
Enfin si quelqu'un pourrait m'aider ?...

voici le script en questions :

Spoiler

Modifié par Kiitiara, 24 décembre 2009 - 15:21.


#2 elendell

elendell

    Mécano Dell'Arte


Posté 26 décembre 2009 - 05:12

Bonjour Kiitiara,

Tout d'abord, pourrais-tu mettre tes scripts dans des balises "Code" en plus des balises "spoiler", stp ? Cela permet de conserver les tabulations et c'est plus facile à lire.

Pour ton problème, il faut savoir que la commande "StopSound" n'est pas faite pour stopper le son.  :)
Je présume qu'on s'est tous fait avoir avec ça. Elle est faite pour stopper la commande de jouer le son et non le son lui-même !

La commande "PlaySound" que tu utilises sert à déclencher un son mais elle n'est active que pendant une frame. Ensuite, le son est joué sur toute la durée du fichier wav mais le jeu n'a aucun moyen de savoir que le son est en train d'être joué et n'a plus aucun contrôle sur lui.

Pour pouvoir stopper le son, il faut que tu le fasses jouer avec une autre commande. Soit "StreamMusic" (que je déteste car elle place le volume à 100 si on n'utilise pas MCP), soit "PlayLoopSound3DVP" (que je te conseille).

Pour avoir un anneau avec un script local qui fait tourner un son de feu quand il est équipé, tu pourrais faire ceci :

Spoiler

Mais si tu l'essayes, tu verras que le son se lance bien mais ne stoppe pas non plus quand tu déséquipes l'anneau. Ceci car il y a un autre problème qui est dû à "OnPCEquip".

Il y a plusieurs solutions mais la plus simple est sans doute de faire jouer le son non pas par l'anneau mais par le PJ, en ciblant sur lui l'instruction. Essaye ce petit script local que tu placeras sur un anneau :

Spoiler

Note qu'en utilisant ainsi "PlayLoopSound3DVP", il y a un élément dont tu devras peut-être tenir compte : Quand le morceau se terminera, il sera automatiquement rejoué, tant que le script ne recevra pas l'instruction "StopSound".

A part ça, la commande "PlaySound" n'a pas besoin du chiffre 1 que tu lui ajoutes en fin d'instruction. Les IDs (de son ou autres) n'ont pas besoin de guillemets si le nom ne contient pas d'espace (mais ça ne gêne pas le script non plus). Laisse un espace entre les différents boutons de ta MessageBox de choix de musique (entre le guillemet de fermeture de l'un et celui d'ouverture du suivant).

Autre conseil : Tu dois chercher au maximum à optimiser tes scripts. Par exemple, dans tous les "elseif" tu as l'instruction "set reset to 1". Tu pourrais t'arranger pour ne le marquer qu'une seule fois. Au lieu de ça :

Spoiler

tu pourrais faire ça :

Spoiler

Et en cherchant un peu, tu devrais aussi pouvoir éliminer tous les "PlaySound "enchant fail"" pour n'en laisser qu'un seul.  ;)

#3 Kiitiara

Kiitiara

Posté 28 décembre 2009 - 18:37

Bonjour,

Suite à ton aide j'ai essayé de refaire le script de la manière suivant comme tu me l'as indiqué :

Spoiler

Mais il y a eu un message d'erreur et je ne sais pas trop ce qu'il veux dire... (j'ai indiqué la ligne 88 dans le script)

Spoiler


Merci d'avance

Bye

Modifié par Kiitiara, 28 décembre 2009 - 18:38.


#4 Korfandar

Korfandar

    Ch'ti dragon normand...dans son trou


Posté 28 décembre 2009 - 19:18

Tu as oublié de fermer les if par des endif à l'intérieur des "elseif ( button ==..." d'où un dépassement du quota de if ouverts autorisés.

L'abus de SMS est dangereux pour l'élocution mentale

Le mod qui révèle (presque) tout sur les dwemers : Dwarmor

Fervent Partisan de l'Instabilité Avatarienne
Quart du quarteron des VGM...


#5 elendell

elendell

    Mécano Dell'Arte


Posté 29 décembre 2009 - 01:53

Bonjour,

Voir le messageKiitiara, le 28.12.2009 à 18:51, dit :

Suite à ton aide j'ai essayé de refaire le script de la manière suivant comme tu me l'as indiqué :
Tu n'as fait qu'une petite partie de ce que je t'ai indiqué :sorcerer: :

Voir le messageelendell, le 26.12.2009 à 05:26, dit :

- Les IDs (de son ou autres) n'ont pas besoin de guillemets si le nom ne contient pas d'espace (mais ça ne gêne pas le script non plus).
- Laisse un espace entre les différents boutons de ta MessageBox de choix de musique (entre le guillemet de fermeture de l'un et celui d'ouverture du suivant).
- Tu dois chercher au maximum à optimiser tes scripts. Par exemple, dans tous les "elseif" tu as l'instruction "set reset to 1". Tu pourrais t'arranger pour ne le marquer qu'une seule fois.
- Et en cherchant un peu, tu devrais aussi pouvoir éliminer tous les "PlaySound "enchant fail"" pour n'en laisser qu'un seul.  :shocked:

Ton script est dur à lire car les tabulations ne sont pas optimisées pour faciliter la lecture et la vérification des "if/endif". L'erreur signalée par Korfandar t'aurais sauté aux yeux si tes lignes étaient alignées de la bonne manière.

A part ça, j'ai essayé de voir comment je le ferais. La variable "reset" me semble inutile. Comme j'ai un doute et n'ai pas le temps de tester, j'ai fait 3 versions. Essaye les 3 et dis-moi ce que ça donne, stp. Bien sûr, il faut que tu complètes les "..." avant essai.

Version 1 :

Spoiler

Version 2 :
Spoiler

Version 3 :
Spoiler





0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)