Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

comment une créature emmet-elle un son...

Par Morethil le 3/11/2002 à 0:02:25 (#2465993)

Je n'arrive pas a faire emettre un son par une créature dans un scriptes.
Quelqu'un pourrait il m'expliquer comment ça fonctionne ?

Voilà ce que j'ai fait :
- J'ai crée un trigger.
- J'ai créer un son que j'ai disposé sur la map, et j'ai décoché la case "actif" sur le son
- J'ai ma créature pas loin.

Ensuite j'ai mis un Scripte sur le OnEnter du trigger (le OnPerception de la créature n'allait pas car les PJ sont visible de trop loin)

Le scripte :


void main()
{
//Ma créature
object oCreature = GetNearestObjectByTag("tag_creature");
//c'est le nom du fichier de son (avec le tag du son crée ça ne
//marchait pas)
string sAboie = "as_an_dogbark5";
//Le PJ qui va déclancher le trigger
object oMoveTo = GetEnteringObject();
//L'endroit d'où viens la créature, et ou elle va retourner
object oNiche = GetWaypointByTag("WP_de_creature");
//Un jeton interne au trigger pour qu'il ne s'active qu'une
//seule fois
int iTalk = GetLocalInt(OBJECT_SELF,"Talk_Once");
//Les conditions (si jamais activé et oMoveTo = PJ)
if (GetIsPC(oMoveTo) && (iTalk==0))
{
//Les conséquences
// Poser le jeton sur le trigger
SetLocalInt(OBJECT_SELF,"Talk_Once",1);
// Commande retardée d'1s (La créature va vers le PJ en
//courrant)
DelayCommand(1.0f, AssignCommand(oCreature,
ActionMoveToObject(oMoveTo, TRUE)));
//Commande retardée de 1+4s (la créature emmet le son)
DelayCommand(5.0f, AssignCommand(oGorgone, PlaySound
(sAboie)));
//Commande retardée de 5+3s (La créature retourne a la
//niche en marchant)
DelayCommand(8.0f, AssignCommand(oGorgone,
ActionMoveToObject(oNiche)));
//Commande retardé de (8+3s (la créature fait s'oriente dans
//le sens de son waypoint)
DelayCommand(11.0f,ActionDoCommand(SetFacing(GetFacing
(oNiche))));
}
}

Voilà. Mon probleme se situe au niveau du son. Je l'entend bien, mais après que la créature soit retourné a sa niche.
Je ne sait même pas si c'est mon scripte qui le lance.
Si vous pouviez juste me donner une petite leçon sur les son :)

Merci d'avance.

Par Morethil le 3/11/2002 à 21:33:39 (#2472864)

Je fait remonter le post. C'est bien une question :)
Donc si vous avez déja réussit a faire emettre un son par une créature à partir d'un scripte, je veux bien que vous m'expliquiez comment vous avez fait. Oui, je sait, la réponse doit etre simple :)

A+

Par mobidique le 3/11/2002 à 23:41:20 (#2473998)

beuh ... Ok met le son en inactif tu l'as fait ensuite moi je mettrais le son en une seule fois au niveau de la fréquence je crois pas en random ou boucle ... je crois que c'est ça les trois options, une fois random ou en boucle, faut que tu mettes une fois ... Sinon je vois pas ... Dans la catégorie recyclage, dans trashcity1 dans une zone souterraine qui s'appelle "Ya comme un bug", en passant sur un trigger, un son se déclanche et un bugbear accourt ...

Par Jedaï le 4/11/2002 à 0:05:26 (#2474166)

Par ailleurs, si tu as créé un objet c'est pas PlaySound() qu'il faut utiliser mais ObjectSoundPlay("tagdel'objetson") (ou un truc comme ça, fais une recherche avec "Sound", et puis pour le faire stopper c'est ObjectSoundStop()...). Normalement PlaySound est une "action" qui se place en haut de la file d'action du NPC qui l'appelle...
Mais alors pourquoi elle retarde !!! :confus:

Par Morethil le 4/11/2002 à 8:00:17 (#2475070)

Merci pour la réponse, je vais regarder ça de plus près. Ca doit venir du probleme de la commande.

Par mobidique le 4/11/2002 à 10:07:18 (#2475432)

Je crois que j'ai compris ... Effectivement playsound devrait être sur un script lié au son et c'est objectplaysound qu'il aurait fallu uriliser. Par ailleurs pourquoi le son est joué quand même ... ET bien je crois que c'est un bug ... Comme je le disais auparavant, j'ai fait un truc similaire et mon pb c'est que ... mse persos rentraient dans la pièce, passaient sur le trigger, le son était joué une fois et basta ... les persos quittaient cette zone ... Mais s'ilrevenaient dans cette zone, passé un petit délai le son était joué de nouveau sans passage sur le trigger, et alors même que j'avais fait un objectsoundstop ... un destroyobject sur un objet son ne change rien à l'affaire ... c'est étrange et embétant ... pour voir si c'est ça morethil, tu rentres dans ton area mais ne passe pas sur ton trigger pour voir ...

Par Morethil le 4/11/2002 à 10:49:31 (#2475607)

Voilà ce que j'ai mis a la place de mon ancienne ligne :


DelayCommand(5.0f, SoundObjectPlay(oAboie));


Et cette fois ca ne marche pas du tout. Je n'entend rien.
Pour cette ligne la j'ai définit le son comme un objet (c'est ce qui était indiqué par aurora), avec pour referance le ("Tag") de l'objet son. (GetNearestObjectByTag, etc)

Entre ça et ce que j'avais fait precedament j'ai essayé avec le AssignCommand (oGorgone, etc. mais ca ne donnait rien non plus. Donc j'ai supposé que le son était joué directement (et non a travers une créature, puisqu'il était directement nommé comme objet.

Juste pour repréciser ce qu'il y avait avant :

DelayCommand(5.0f, AssignCommand(oGorgone, PlaySound
(sAboie)));


La reference sAboie était définie a partir du nom du fichier du son que je cherchait. sAboie = "fichier_son_x";

Si vous voyez ce qui cloche, moi je seche.

Par eMRaistlin le 4/11/2002 à 11:16:03 (#2475750)

Et cette fois ca ne marche pas du tout. Je n'entend rien.
Pour cette ligne la j'ai définit le son comme un objet (c'est ce qui était indiqué par aurora), avec pour referance le ("Tag") de l'objet son. (GetNearestObjectByTag, etc)

Et bien entendu, tu as positionné un son sur l'area avec le toolset ? Ou alors, tu fais un createobject ?

Par Morethil le 4/11/2002 à 12:53:57 (#2476474)

J'ai positionné un son avec le toolset. Un son que j'ai "personalisé" avec la case "actif" décoché, et un tag propre pour le reconnaitre.

JOL Archives 1.0.1
@ JOL / JeuxOnLine