Nenfëa Auxiliaire ArchipelModeur
Nombre de messages : 34 Age : 40 Date d'inscription : 04/04/2007
| Sujet: [Basique/moyen] Musique personnalisée dans une cellule Dim 15 Avr 2007, 13:42 | |
| Type de script : --- Objet --- (difficulté basique/moyenne) Utilité : ce script montre comment jouer des musiques personnalisées dans le jeu. Il est réadaptable à des scripts de quête. Mode d'emploi :- Spoiler:
Dans le cas présent, le script est attaché à un objet bidon (de préférence hors de portée du joueur) qui ne sert qu'à jouer la musique au moment où le joueur entre dans la cell. Explications :- Spoiler:
L'objet est chargé en mémoire quand le joueur entre dans la cell : le bloc OnLoad permet donc de détecter l'entrée du joueur dans la même cell que l'objet. Dans ce cas là, on lance notre musique grace à la fonction StreamMusic. Du fait d'un bug de la fonction StreamMusic, on est obligé de lancer la fonction d'abord sur les musiques par défaut, puis d'attendre une frame, pour enfin pouvoir lancer la musique qui nous intéresse. Limitations :- Spoiler:
La fonction StreamMusic étant pas mal bugguée, les musiques de la cell ne doivent pas être de type Default, sans quoi ce script ne fonctionnera pas. Attention également, si le joueur rencontre un ennemi, la musique personnalisée sera remplacée par la musique du combat et ne reprendra pas après le combat (remplacée par une des musiques par défaut). - Code:
-
; Script d'objet permettant de jouer une musique personnalisée quand le joueur entre dans la cell. ; Attention, les musiques de la cell ne doivent pas être de type Default, sans quoi ce script ne fonctionnera pas.
Scn nen_music_script
short nen ; Variable indiquant l'état de l'objet
Begin OnLoad Set nen to 1 ; On indique que l'objet vient d'être chargé. End
Begin GameMode if ( nen == 0 ) ; Si l'objet n'a pas été chargé ou que l'état a été réinitialisé... Return ; ... on ne fait rien. endif
if ( nen == 1 ) ; Si l'objet vient d'être chargé... StreamMusic Random ; ... on lance une musique au hasard pour passer outre les bugs de la fonction StreamMusic... Set nen to 2 ; ... on indique qu'on a lancé une musique aléatoire... Return ; ... et on attend une frame. endif
if ( nen == 2 ) ; Si on a lancé la fonction StreamMusic correctement sur une musique aléatoire... StreamMusic "Data\Music\nen\AlguesAuRythme.mp3" ; ... on la relance sur la vraie musique qui nous intéresse... Set nen to 0 ; ... et on réinitialise l'état de l'objet. endif End | |
|