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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Trigger générique

Par Le Hamster le 23/9/2002 à 13:38:52 (#2216195)

C'est quoi t-est-ce qu'il faut faire pour q'un trigger générique ne fonctionne qu'une seule fois sur le on enter et une seule fois sur le onexit ?


Hein ?

Bisous

Par miriandel le 23/9/2002 à 14:19:35 (#2216514)

Y a plusieurs manières.

La plus simple est de mettre un compteur avec un simple SetLocalInt(OBJECT_SELF, "compteur_in", 1)
et de ne déclencher l'action que si ce compteur est nul.

Une autre manière, que j'utilise souvent, est de détruire le trigger quand on n'en a plus besoin, par DestroyObject(OBJECT_SELF);

oiiiiinnnnnnnnnnnn

Par Le Hamster le 24/9/2002 à 11:21:36 (#2221759)

Bon, j'essaye de comprendre l'histoire du compteur, j'ai fait ça mais ça fonctionne pas.

J'ai mis ce script sur le on enter du trigger.

Quanc je dis que ça fonctionne pas, c'est que le trigger se rédéclenche sans cesse.

En mettant DestroyObject, le script suivant ne va pas jusqu'au bout (même si je mets cette fonction sur le Onexit du trigger)

Ce qui doit se passer (pour bien me faire comprendre) :

Les PJ entre dans une pièce. Le PNJ "Heurbeurte" les attend. Dès que le premier PJ fait un pas, il entre dans le trigger. Heurbeurte les convie à s'asseoir, laisse un peu de temps, et demande à parler au chef du groupe.

Je ne peux tester qu'avec un seul PJ, je ne voudrais pas que si plusieurs PJ entre dans le trigger, Heurbeurte reprenne son blala. De plus quand mon PJ ressort de la pièce il redéclenche le script (pas bo l'effet !!)

Le script en question :

int StartingConditional()
{

// Inspecter variables locales
if(!(GetLocalInt(OBJECT_SELF, "Compteur_in") < 1))
return FALSE;

return TRUE;
}


void main()
{
SetLocalInt(OBJECT_SELF, "compteur_in", 2);


object oHeurb = GetObjectByTag("HeurbeurteL");
object oBrief = GetObjectByTag("Brief");

ActionDoCommand(AssignCommand(oHeurb, ClearAllActions()));
ActionDoCommand(DelayCommand(0.3, AssignCommand(oHeurb, ActionSpeakString("Je vous en prie, asseyez-vous"))));
ActionDoCommand(DelayCommand(1.3, AssignCommand(oHeurb, ActionMoveToObject(oBrief))));

ActionDoCommand(DelayCommand(7.0, AssignCommand(oHeurb, ActionPlayAnimation(ANIMATION_FIREFORGET_READ))));
ActionDoCommand(DelayCommand(8.0, AssignCommand(oHeurb, ActionSpeakString("Bien. Puis-je parler au chef du groupe ?"))));

}


C'est où que ça cloche ?

Merci

Bises

Par Darkmore le 24/9/2002 à 14:26:58 (#2222818)

Est ce que le compteur et la conditionelle sont vraiment nécessaires ?
Parce que d'apès ton scénario un script OnEnter se terminant par un DestroyObject suffirait.

Le PJ entre dans le trigger, déclanche le discours du PNJ et les PJ suivant ne pourront pas déclancher le trigger si il a disparu.

Par Père Elric le 24/9/2002 à 23:38:58 (#2226417)

Oui je pense que Darkmore a raison...

Du moin c'est comme cela que j'aurai fait...

vi mais...

Par Le Hamster le 25/9/2002 à 0:15:08 (#2226549)

J'ai suivi le conseil de Darkmore, mais, je reste indécis...

Pour que mon script fonctionne, je dois faire un DelayCommand(20.0, DestroyObject(OBJECT_SELF));

(le temps du delay correspond au temps d'execution du script) sinon, le script ne se termine pas. Si je mets Destroy en entrée de script, il ne se déclenche pas. Et de plus, comme je l'ai dit dans mon post précédent, je ne peux tester qu'avec un seul PJ(moi, qui de plus connait le script qui suit). J'imagine que si plusieurs PJ se succède dans le trigger, ça va me mettre un beau bordel.

C'est pourquoi, j'aimais bien l'idée du compteur (que j'arrive pas à faire)

Un petit coup de pouce sur l'histoire me serait agréable.

Merci

Voili voilà.

Bises

JOL Archives 1.0.1
@ JOL / JeuxOnLine