Petite question sur le DelayCommand

Répondre
Partager Rechercher
Ben je pense que eM va me repondre rapidement vu comment il adore cette commande
Enfin, je me demandais, le DelayCommand execute l'action au bout de X seconde, ou l'execute toutes les X seconde? Dans le deuxime cas, faut il faire un ClearAllAction pour stoper la boucle?

Merci d'avance

Prophetia
Tout a fait ^^ (A savoir que DestroyObject s'effectue durant lexecution du script, en supprimant la reference de l'objet, meme si l'objet in-game n'est detruit qu'a la fin du script)

J'ajouterait que l'interet d'un Delay_Command est qu'il recalcule les données entrée au moment de l'execution.

Exemple, un Objet avec un vector loc (1.0,1.0,1.0) a qui ont fait un Jump pour les coordonnées (10.0,10.0,10.0), et a qui on demande ensuite via un DelayCommand sa position, donnera bien 10.0,10.0,10.0 ^^


PS : pour faire des animations, je prefere utiliser ActionDoCommand, plutot que DelayCommand, car DelayCommand n'est pas supprimable une fois lancé (et ca, c'est un peut dommage... C'est une source de bug : certains delayCiommand pour faire un destroyObject, par exemple, qui se produisent suffisement longtemps apres que l'objet ne soit plus la, par exemple, fera souvent planter le serveur... J'essaie de trouver une regle de plantage, mais bon...)
Bein, si, tu fais le calcul avant le DelayCommand (oO)

exemple :

Code PHP:

void main()
{

//DECLARATION + ASSIGNCommand jump position de depart
object oPCGetIridian();
object oArea GetArea(oPC);
vector vVec1 Vector(1.0,1.0,1.0);
vector vVec2 Vector(10.0,10.0,1.0);
location lLoc1 Location(oArea,vVec1,0.0);
location lLoc2 Location(oArea,vVec2,0.0);

AssignCommand(oPC,JumpToLocation(lLoc1));


//ICI, on montre ^^
DelayCommand(10.0,AssignCommand(oPC,JumpToLocation(lLoc2)));
DelayCommand(10.0,AssignCommand(oPC,SpeakString("X = "+FloatToString(GetPostion(oPC).x))));
DelayCommand(10.0,AssignCommand(oPC,SpeakString("Y = "+FloatToString(GetPostion(oPC).y))));
/*
Ci dessus, je recalcule a la fin : apres le Jump en postion 2 : j'attends X = 10 et Y = 10
*/
DelayCommand(20.0,AssignCommand(oPC,JumpToLocation(lLoc1)));
vector vPosTeste GetPosition(oPC);
DelayCommand(20.0,AssignCommand(oPC,SpeakString("X = "+FloatToString(vPosTeste.x))));
DelayCommand(20.0,AssignCommand(oPC,SpeakString("Y = "+FloatToString(vPosTeste.y))));
/*
ici, la position est calculée avant le Jump, donc la position qui va être annoncée est celle au moment du script, puis le PC va etre jumpé a la position 2
*/

Voila, qui, j'espere repond a ta question...

(PS : amuse toi a mettre du ActionDoCommand la-dedans, pour rigoler un peu )
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés