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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

besoin d'une pause !

Par daemogorgon le 13/11/2002 à 22:22:20 (#2556738)

Non, c'est pas moi qui en ai besoin, quoi que !

J'ai besoin dans 1 script de faire 1 pause de 10secondes, avant une autre action automatique.
Qq1 à une idée, j'y arrive plus ........

Par miriandel le 13/11/2002 à 22:31:06 (#2556795)

Certains utilisent ActionWait, moi je préfère DelayCommand, à toi de voir ;)

Par Jedaï le 13/11/2002 à 23:00:50 (#2557007)

Fais attention, il n'existe aucune fonction permettant d'arrêter l'éxécution d'un script pdt un tps donné.
Il existe par contre des commandes qui peuvent retarder l'éxécution d'une fonction. (Ces commandes n'auront aucun effet sur l'éxécution du reste du script)
DelayCommand(fDelay, aActionToDelay) retarde l'exécution de la fonction aActionToDelay de fDelay secondes, mais les fonctions qui se trouve après un delaycommand s'exécute immédiatement.
ActionWait(fTime) ne change pas plus l'exécution du script : il rajoute l'action "attendre pdt fTime secondes" à la file d'action du NPC.

Exemple :


void main()
{
DelayCommand(5.0, ClearAllActions());
DelayCommand(6.0, ActionMoveToObject(oBidule));

ActionMoveToObject(oBidule);
}


Le NPC va se diriger vers oBidule, si au bout de 5 s il n'est pas arrivé, il va arrêter de se déplacer, puis après 1 seconde, il va recommencer à se déplacer vers oBidule. Le deuxième delaycommand() n'est absolument pas influencé par le premier : il s'exécute normalement à la suite des autres fonctions.




void main()
{
ActionWait(5.0);
ActionWait(6.0);
ActionMoveToObject(oBidule);
ActionWait(2.0);
ActionMoveToObject(oBidule2);
}


Le NPC va rester sur place 11 s : il "attend" pdt 5 s puis il "attend" pdt 6 s. Ensuite il va jusqu'à oBidule, une fois arrivé là-bas, il ne fait rien pdt 2 s puis il se dirige vers oBidule2.


Donc il faut préter beaucoup d'attention à l'utilisation de ces fonctions, leur emploi n'est pas toujours évident...:p

Par Aziphael le 13/11/2002 à 23:11:16 (#2557091)

Tiens pendantqu'on y est... Comant fait-on pour retarder les fonctions telles que:
"CreateItemOnObject"...
Delay command ne fonctionne pas dans ce cas là :doute:

Par miriandel le 13/11/2002 à 23:16:37 (#2557132)


void VoidCreateItemOnObject(string sItemTemplate, object oTarget=OBJECT_SELF, int nStackSize=1) {
CreateItemOnObject(sItemTemplate, oTarget, nStackSize);
}

void VoidCreateObject(int nObjectType, string sTemplate, location lLocation, int bUseAppearAnimation=FALSE) {
CreateObject(nObjectType, sTemplate, lLocation, bUseAppearAnimation);
}

...

Par Aziphael le 13/11/2002 à 23:29:13 (#2557215)

Je sais bien comment marchent ces deux fonctions... Ce que tu me donne c'est leur définition... ce qui apparaît lorsque tu les selectionne... ca ne me dit pas comment les décaler...
(où alors je suis encore plus bête que je en pensais)
:confus:

Par eMRaistlin le 14/11/2002 à 0:11:11 (#2557459)

C'est poas ca... c'est juste que avec ca, tu peut faire un DelayCommand, sur ces void, alors que tu peux pas sur les create... ^^

Par shadoh le 14/11/2002 à 0:27:50 (#2557547)

Vous pourriez au moins etre poli et dire s'il vous plait et merci lorsque vous demandez un truc...

Par Aziphael le 14/11/2002 à 16:53:02 (#2561707)

Provient du message de shadoh
Vous pourriez au moins etre poli et dire s'il vous plait et merci lorsque vous demandez un truc...


C'est à moi que ça s'adresse ? sachez Monsieur que je suis toujours aimable, dans la mesure du possible.
Je n'avais pas compris la réponse de miriandiel et je ne pense en aucun cas avoir été impoli...
Maintenant que j'ai une réponse qui permet à mon intelligence limitée de trouver l'illumination,
OUI
Je dis Merci à vous deux pour votre patience (comme je le fais à chaque fois !).

PS: si vous avez trouvé mon attitude irrespectueuse je vous présente mes plus plates excuses :merci: , ce n'a jamais été mon attention.

Par daemogorgon le 14/11/2002 à 21:41:39 (#2564119)

Je reviens sur ma pause. En fait, je me suis mal exprimé.

Un perso joueur doit faire une action précise, a partir de ce momment, il peux faire ce qu'il veut, mais 1mn après une action ce produit indépendament de ce qu'il peux faire.
(en fait, c'est pas le perso que je veut pauser, mais l'action suivante d'un objet).

Voilà, c'est + clair.

Par Jedaï le 14/11/2002 à 22:37:48 (#2564566)

Pas tellement mais bon...:doute:

Je suppose que si tu n'as pas trouvé ton bonheur dans mes exemples c'est que tu veux en fait qu'un autre objet fasse l'action 1 min après le script, non ?:confus:

Dans ce cas il suffit de faire un AssignCommand().

Ex. :


AssignCommand(oNPC2, DelayCommand(55.0, ClearAllActions()));
AssignCommand(oNPC2, DelayCommand(60.0, ActionMoveToObject(oBidule)));


Placé dans le script de ton NPC1 (qui peut bien danser la javanaise pdt ce tps là, on s'en fout !), ces fonctions déclencheront, une minute après leur utilisation, une envie irrépressible chez oNPC2 d'aller voir ce que peut bien être oBidule.:p

Par daemogorgon le 14/11/2002 à 22:58:06 (#2564744)

Je pense que c'est exactement ce que je veux.

Mais (je suis assez débutant), oPNC1 ou 2, tu le déclares ou ?

Encore merci.

Par Jedaï le 14/11/2002 à 23:04:42 (#2564795)

Quand je dis oNPC1, c'est juste celui qui appelle(qui lance) le script, un simple OBJECT_SELF si tu en as besoin. Le oNPC2, tu le déclare avant les delay/assign mais sinon la méthode dépend de la façon dont tu le récupère (Tag : GetObjectByTag(), dialogue : GetPCSpeaker(), type : GetNearestCreature()...):cool:

Par daemogorgon le 14/11/2002 à 23:10:06 (#2564841)

J'essai. .....

Par daemogorgon le 14/11/2002 à 23:17:06 (#2564893)

Mon ami, ..... je vous aime !!!!!

C'est parfait, ça marche.

Encore merci.

JOL Archives 1.0.1
@ JOL / JeuxOnLine