Aller au contenu


Ajouter Sa Bande Son.


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

#1 Thallan

Thallan

Posté 29 décembre 2010 - 14:19

Bonjour à tous et à toutes, c'est encore moi, Thallan.
Une petite question que je me suis souvent posé concernant le TESCS.

Est-il possible de rajouter des musiques ? Oui ? Non ?

Si oui, comment ? Quelle est la démarche à suivre ? Faut-il un format spécial (Comme WAV par exemple) ?
Et si oui, est-il possible de déclencher la musique a X endroit et a X moment de la "Cell" ?

Merci d'avance pour vos réponses, Coordialement, Thallan.

#2 Near

Near

    Jamais très loin


Posté 29 décembre 2010 - 14:29

Salut !

Tu peux ajouter des musiques (en mp3, je ne sais pas si d'autres formats sont supportés) dans les différents dossiers du répertoire "...\Oblivion\Data\Music".
Elles se retrouvent déjà classées en fonction des endroits où on veut qu'elles se déclenchent (villes, donjons, ...), par contre pour un déclenchement précis dans une cellule donnée, je crois que c'est possible avec l'éditeur mais je serais bien incapable de donner la marche à suivre ^^
You come from nothing, you're going back to nothing. What have you lost ? Nothing !

#3 Thallan

Thallan

Posté 29 décembre 2010 - 15:09

Merci pour ta réponse ^^
J'ai la moitié de ce que je voulais avoir, mais c'est déjà pas mal.

#4 Near

Near

    Jamais très loin


Posté 29 décembre 2010 - 15:13

J'y pense, le mod Club de Sucre-Lune associe des musiques particulières à des cells, si je me souviens bien il y avait même un peu de documentation sur la façon de s'y prendre. Tu peux peut-être regarder par là, en attendant une éventuelle réponse d'un moddeur plus calé.
You come from nothing, you're going back to nothing. What have you lost ? Nothing !

#5 Shadow she-wolf

Shadow she-wolf

    Le katana de la GBT


Posté 29 décembre 2010 - 16:48

Voir le messageNear, le 29 décembre 2010 - 15:13, dit :

J'y pense, le mod Club de Sucre-Lune associe des musiques particulières à des cells, si je me souviens bien il y avait même un peu de documentation sur la façon de s'y prendre. Tu peux peut-être regarder par là, en attendant une éventuelle réponse d'un moddeur plus calé.
Oui...avec la fonction de script StreamMusic...

Seulement, comme il est précisé dans le wiwiki, la musique une fois terminée, passe le relais à la musique par défaut de la cellule dans laquelle se trouve le PJ...

Pour jouer en boucle une même musique, il faut ruser...
Dans le script, lorsque l'on lance la musique on démarre un timer...
Qui quand il tombe à zéro, relance la musique...

Il faut donc bien initialiser le timer pour qu'il correspond à la durée de la piste en question...


Le club surcelune met bien en forme ceci...
Begin GameMode


If ( trigger == 1 )

	If ( chance == 1 )
		StreamMusic "Data\MusicCSL\AMBBains1.mp3"
		  set timer to AA3Music.AMBBains1
		; 202s
	ElseIf ( chance == 2 )
		StreamMusic "Data\MusicCSL\AMBBains2.mp3"
		  set timer to AA3Music.AMBBains2
		; 337s
	Endif

Set trigger to 2
Endif




If ( trigger == 2 )
Set timer to ( timer - getsecondspassed )

If ( timer <= 0 )
	If ( chance == 1 )
		Set chance to 2
	ElseIf ( chance == 2 )
		Set chance to 1
	Endif
	 Set trigger to 1
Endif

Endif
End

La variable Trigger est mise à 1 lorsque le PJ rentre dans la zone où il faut jouer la musique...
La valeur de la variable Chance est elle aussi choisie à ce moment là...

Bon...la mise en forme du code n'est pas optimale...mais ce n'est pas trop trop grave...

Bref, lorsque Trigger passe à 1, on part du principe que Chance vaut 1 aussi...
Alors le moteur de script exécute cette partie là...
	If ( chance == 1 )
		StreamMusic "Data\MusicCSL\AMBBains1.mp3"
		  set timer to AA3Music.AMBBains1
		; 202s
Il joue la musique avec StreamMusic, et démarre le timer, en l'initialisant avec la valeur stockée dans la variable "AA3Music.AMBBains1", qui est sensé correspondre à 202 secondes d'après le commentaire...
Or, cette variable a pour valeur 212...
Si j'en crois ce qui a été appliqué systématiquement dans ce mod, il a toujours mit une valeur ayant dix points de plus que le temps prévu...je ne sais pas pourquoi...

Bref, il finit par passer la variable trigger à 2, on rentre donc ici...
If ( trigger == 2 )
Set timer to ( timer - getsecondspassed )
Qui fait décrémenter le timer...

Et lorsque le timer tombe à zéro, on entre là...
If ( timer <= 0 )
	If ( chance == 1 )
		Set chance to 2
	ElseIf ( chance == 2 )
		Set chance to 1
	Endif
	 Set trigger to 1
Endif
Qui change la valeur de Chance à 2, et repasse le trigger à 1, pour recommencer une nouvelle musique... :)

#6 Thallan

Thallan

Posté 29 décembre 2010 - 16:57

Oulhalalala... une bien belle réponse que tu m'offres là, et complète, pour sûr.
Malheureusement, je suis au niveau 5/100 en ce qui concerne les scripts d'Oblivion.

Et je ne sais pas quoi prendre comme point de repère ni où insérer ce script.
Comment peut-on activer ce script uniquement dans la cellule que je désire ? ^^

Désolé, je t'en demande beaucoup, mais une fois que c'est fait, ce sera fait pour tout le monde sur le forum je pense...

Coordialement, Thallan.
Merci d'avance.

#7 Shadow she-wolf

Shadow she-wolf

    Le katana de la GBT


Posté 29 décembre 2010 - 17:28

Il y a plusieurs façon de faire...

Le club a utilisé des trigger...
Je t'invite à regarder dans le mod en question pour savoir comment ceci a été fait...

Personnellement, je vais utiliser ce que l'on nomme un script de quête, car je préfère...honnêtement, la méthode du trigger doit être légèrement plus performante, mais pas de beaucoup...

Bref, il faut créer une quête, créer un script de type "Quest"...
Ce script sera a attaché à la quête créée...

Ensuite, le script prendra une telle forme...
Je ne vais faire que pour une musique, pour simplifier...

scn IDDeMonScript

Short PlayStream
Float Timer

Begin GameMode

;tant que l'on est pas dans la bonne cellule, on ne fait rien...
if ( Player.GetInCell IDMaCellule != 1 )
   Set Timer to 0
   Set PlayStream to 0
   return
endif

if ( PlayStream == 0 )
   ;On lance la musique...
   StreamMusic "blabla\MaMusique.mp3"
   Set Timer to 212 ;musique dure 202 secondes...
   Set PlayStream to 1
endif

Set timer to ( timer - getsecondspassed ) ; on décrémente le timer...

if ( Timer <= 0 )
   ;Lorsque le Timer arrive à 0, on recommence la lecture de la musique...
   Set PlayStream to 0
endif

End


Je fais ça de tête...

#8 Thallan

Thallan

Posté 29 décembre 2010 - 18:17

Merci pour ta réponse, j'essayerais sa demain ;)




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

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