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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Pour comprendre ActionSpeakString

Par Le Hamster le 15/9/2002 à 13:33:53 (#2160854)

bonjour, moi qui croyais avoir compris (hum)

Peuxt-on m'expliquer pourquoi le déroulement de ces scripts ne fonctionnent pas.

L'area : Dans une crèche se trouve une conteuse qui raconte une histoire quelconque. Quand le pj arrive dans la pièce, il faut parler à la conteuse pour que les scripts se mettent en route.

Le premier script se trouve à la fin d'une conversation, il est le suivant :

void main()
{
object oChaise;
int nChaise = 1;
oChaise = GetNearestObjectByTag("ChaiseClient", OBJECT_SELF, nChaise);
ClearAllActions();
ActionSit(oChaise);

DelayCommand(1.0,ExecuteScript("par_conteuse",OBJECT_SELF));
}

Jusque là ça fonctionne (y'a pas de raisons)

Mais le script appelé par_conteuse ne démarre pas. D'où ma demande d'explication quand à la manière de fonctionner d'ActionSpeakString.

Le script par_conteuse est le suivant :

void main()
{

ActionSpeakString("Il y a longtemps,...");

DelayCommand(5.0,ActionSpeakString("les dragons se prenaient pour des poissons"));
DelayCommand(5.0,ActionSpeakString("ils n'avaient pas de pourvoirs"));
DelayCommand(5.0,ActionSpeakString("et voulaient une mobylette."));
DelayCommand(5.0,ActionSpeakString("Mais comme les mobylettes n'existaient pas,"));
DelayCommand(5.0,ActionSpeakString("ils furent malheureux."));
DelayCommand(5.0,ActionSpeakString("C'est en ce temps d'avant qu'ils s'adonnaient"));
DelayCommand(5.0,ActionSpeakString("aux joies de la musique."));
DelayCommand(5.0,ActionSpeakString("L'un d'eux fut plus ambitieusx et inventa..."));
DelayCommand(5.0,ActionSpeakString("une musique que les autres ne connaissaient pas."));
DelayCommand(5.0,ActionSpeakString("Cette musique ne leur plut pas."));
DelayCommand(5.0,ActionSpeakString("Ils occirent le dragon ambitieux"));
DelayCommand(5.0,ActionSpeakString("qui s'appelait Clayderman"));
DelayCommand(5.0,ActionSpeakString("C'est depuis ce temps que les dragons sont hostiles."));

DelayCommand(5.0,ExecuteScript("par_conteuse",OBJECT_SELF));


Voili voilà

bises à toutes et à tous

Par Adalorn le 15/9/2002 à 14:14:28 (#2161087)

déja, DelayCommand se calcule à partir du début du script, le script ne s'arrette pas au moment de DelayCommand :

DelayCommand(1.0,ActionFabriquePizza);
ActionAlumeTele();

est égal à :
ActionAlumeTele();
DelayCommand(1.0,ActionFabriquePizza);


à chaque foi, le perso va ActionAlumeTele() puis, 1seg aprés, il va DelayCommand(1.0,ActionFabriquePizza).

essaye de décaler tes DelayCommand, ça marchera peut-etre mieu

sinon, pour toute info sur les scripts : Manuel de référence NWNScript

compris le delaycommand

Par Le Hamster le 15/9/2002 à 15:26:18 (#2161435)

Merci.

J'ai décalé tous les delaycommand et le script fonctionne très bien. Je ne reposerai plus la question !!

En fait les deux scripts fonctionnent bien sauf si je les enchaîne. En clair, quand ma conteuse est assise, elle ne conte rien.


Vous savez où se situe la faille ?


Bises à toutes et à tous.

Par Darkmore le 15/9/2002 à 15:27:43 (#2161444)

Ou plus simplement tu alternes les ActionSpeakString et avec de ActionWait .
Pourquoi faire compliqué :D

Re: compris le delaycommand

Par Sempai le 15/9/2002 à 15:47:28 (#2161580)

Provient du message de Le Hamster
En fait les deux scripts fonctionnent bien sauf si je les enchaîne. En clair, quand ma conteuse est assise, elle ne conte rien.


Vous savez où se situe la faille ?


La faille se situe dans la gestion des actions. On ne peut pas en faire plusieurs en même temps. Soit elle est assise, soit elle conte.

Si tu veux qu'elle conte assise, mieux vaut utiliser SpeakString plutôt qu'ActionSpeakString.

JOL Archives 1.0.1
@ JOL / JeuxOnLine