[Problème] Utilisation de la fonction "DelayCommand"

Répondre
Partager Rechercher
Bon, j'ai un problème qui se pointe quand j'utilise la fonction DelayCommand afin de retarder une instruction.
J'ai la très forte impression (pour ne pas dire une certitude) que les instructions que je passe en délai ne s'exécutent pas du tout.

Code PHP:

void main()
{
PrintInteger(2);//pour tester la commande
DelayCommand(2.0PrintInteger(2));//La meme en differe


//Initialisation de variables
object oDeclencheur GetEnteringObject();
string sTexte "un petit test";

SendMessageToPC(oDeclencheursTexte);//pour tester la commande
DelayCommand(2.0SendMessageToPC(oDeclencheursTexte));//La meme en differe

Je place ce script dans le OnEnter d'une zone de rencontre.
La zone de rencontre s'active bien et les 2 commandes qui ne sont pas différées fonctionnent.
Par contre dès que je les diffère, poufff, disparu, plus rien.

Quelqu'un a-t'il une idée du pourquoi du comment de l'affaire ?
C'est louche .
Euh ben je voix pas pourquoi

*teste*

Euh en tout cas chez moi les deux marches

Essaye ceci desfois que les encouter soit encore plus mal fait que les triggers ...

Code PHP:

void main()
{
PrintInteger(2);//pour tester la commande
DelayCommand(2.0,AssignCommand(OBJECT_SELF,  PrintInteger(2)));//La meme en differe


//Initialisation de variables
object oDeclencheur GetEnteringObject();
string sTexte "un petit test";

SendMessageToPC(oDeclencheursTexte);//pour tester la commande
DelayCommand(2.0,AssignCommand(OBJECT_SELFSendMessageToPC(oDeclencheursTexte)));//La meme en differe

Bon bein ça passe pas.
Les commandes classiques passent, les commandes delayed ont dû rester en 2003 .

A titre indicatif, je suis en SoU 1.30

Sérieusement, je ne capte pas .
Bon, je vais essayer de trouver la 1.32... par contre je cherche le fichier zip, je ne veux pas le télécharger par le logiciel vu que j'ai 2 jeux à patcher (le mien et le pc du frangin) et que je ne veux pas me retaper le download si je formate .

Y a un truc de 90 meg sur le site bioware, c'est le seul en SOU. C'est ça que je dois prendre ? Bizarre c'est un critical rebuild .
Tu peux cocher une option dans l'updater qui te permet d'enregistrer les fichiers télécharges dans ton répertoire d'installation de nwn. Cliques bouton droit sur l'updater et regarde les options, je m'en souviens plus et je suis pas a cote de mon jeu (500KM, c'est pas a cote )
Est-ce que tu detruit le trigger/encounter apres ?
(genre, c'est une rencontre one shot ? Ou le script contient un DestroyObject un peu plus bas, ou autre ?)

si le trigger est plus la au moment du delaycommand, alors le Delay Va echouer.
Citation :
Provient du message de Archamedes_Fr
Tu testes en joueur ou en DM ?
En joueur.

Citation :
Provient du message de eMRaistlin
Est-ce que tu detruit le trigger/encounter apres ?
(genre, c'est une rencontre one shot ? Ou le script contient un DestroyObject un peu plus bas, ou autre ?)

si le trigger est plus la au moment du delaycommand, alors le Delay Va echouer.
Il me semble qu'on s'approche du problème .
J'ai testé le même script dans le OnEnter de la zone plutôt que dans le OnEnter de la rencontre et là les 2 fonctionnent.

Je suppose qu'il faut voir au niveau de mon trigger de rencontre, les propriétés de celui-ci.

J'upload les screen des propriétés de ma rencontre. J'ai essayé de bidouiller la dedans aussi des fois que mais ça n'a pas donné grand chose. Maintenant que je sais que ça peu venir de là, je vais creuser mais si quelqu'un voit, qu'il me facilite le travail .
http://loekit.free.fr/nwn/rencontre1.jpg
http://loekit.free.fr/nwn/rencontre2.jpg
http://loekit.free.fr/nwn/rencontre3.jpg (le script "test" contient exactement ce que j'ai publié au dessus dans mon premier message)
http://loekit.free.fr/nwn/rencontre4.jpg
Pour test, tu peux faire faire l'action à la zone.
Code PHP:

void main()
{
PrintInteger(2);//pour tester la commande
AssignCommand(GetArea(OBJECT_SELF), DelayCommand(2.0PrintInteger(2)));//La meme en differe


//Initialisation de variables
object oDeclencheur GetEnteringObject();
string sTexte "un petit test";

SendMessageToPC(oDeclencheursTexte);//pour tester la commande
AssignCommand(GetArea(OBJECT_SELF), DelayCommand(2.0SendMessageToPC(oDeclencheursTexte)));//La meme en differe

Sait-on jamais.
je suppose que le trigger est detruit lors du passage, et que la checkbox de Bioware "respawn" va gerer un delayCommand qui va le recreer...

essaye ca :

Code PHP:

void main()
{
float fNsecRespawn 11.0//ici, je met le temps que tu as mis en seconde dans la rencontre, +1
PrintInteger(2);//pour tester la commande
AssignCommand(GetModule(),DelayCommand(fNsecRespawnAssignCommand(GetObjectByTag("R_FAC_GROUPE_ARAIGNEE"),PrintInteger(2))));//La meme en differe
//j'assigne la commande au module, dans le cas ou ma theorie sur la disparition du trigg est juste :
//Si j'assigne une commande a un objet qui va disparaitre, elle ne le ferait plus.


//Initialisation de variables
object oDeclencheur GetEnteringObject();
string sTexte "un petit test";

SendMessageToPC(oDeclencheursTexte);//pour tester la commande
DelayCommand(2.0SendMessageToPC(oDeclencheursTexte));//La meme en differe


voila : en gros, pour tester, j'assigne au mdule l'operation d'assigner au trigger de printer 2 11 secondes apres l'entree, (donc en laissant le temps au trigger de se recreer, s'il s'avere qu'il se detruit effectivement bien lors de sa resolution)



@Archa : tu assigne la commande a l'Area de printer, ce qui, je crois, ne devrait pas marcher (quoique, ca depend de la fonction print, vu que ce n'est aps un speakstring...)
Le DelayCommand est très bizarre, mais j'ai remarqué un truc:

Si tu le places dans un OnEnter de quelque chose et que le Delay doit s'exécuter alors que le OnExit a été déclenché, ça ne s'exécute pas.

Le placer dans un trigger c'est pas une bonne idée à mon avis, à moins que le trigger soit gigantesque.
Répondre

Connectés sur ce fil

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