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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

retard sur 1 dialogue

Par daemogorgon le 11/1/2003 à 22:36:30 (#2999581)

Voilà, j'ai 1 perso qui passe dans déclencheur (NW_perso). Dans le On_Enter de ce déclencheur, un script faisant ce déplacer un PNJ d'un endroit qquonque vers le perso.
J'aimerais que le PNJ lance un dialogue seulement quand il est devant le perso. Le problème, c'est que le perso peut être prêt du PNJ comme il peut être loin du PNJ, ce qui fait que le dialogue n'est jamais au bon moment.

Y'a 1 commande qui peut m'aider ?

Par sounéva le 11/1/2003 à 23:38:07 (#2999970)

ben en vérifiant :
-la distance du PJ par rapport au PNJ égale a 1 mètre on va dire..
-une variable mis sur le PJ quand il passe sur le déclencheur = à 1
(pour pas qu'il lance la conversation a chaque fois qu'il rencontrer un PJ)

Par Azrael07 le 12/1/2003 à 0:04:58 (#3000124)

ben tu peux pas faire simplement un speakstring après l'action de déplacement ?

Par eMRaistlin le 12/1/2003 à 0:27:44 (#3000229)

euh... en faisant jouer la pile d'action, ca ira tout seul... ^^


Tu fais un ActionForceMoveToObject(oPC) : ca va mettre le mouvement dans la pile.

Puis tu fais un AssignCommand (ou un actionDoCommand) pour faire la conversation : ca va le placer sous la pile.

Resultat : le dialogue ne commence qu'une fois le NpC arrive vers le pc...

Par Jedaï le 12/1/2003 à 9:43:52 (#3001602)

eMRaistlin>> Peut-être pourrait-on utiliser directement ActionSpeakString() ou ActionStartConversation() directement plutôt que ces saloperies de BiduleCommand() qui s'attaque à ton CPU ? ;)

Par Jedaï le 12/1/2003 à 9:50:57 (#3001621)

Bon pour résumer les divers avis, le script devrait donner ça au final :


//Dans le OnEnter
void AllerEtParler(object oPJ);

void main()
{
object oNPC = GetObjectByTag("Tag du NPC");
object oPC = GetEnteringObject();

AssignCommand(oNPC, AllerEtParler(oPC));
}

void AllerEtParler(object oPJ)
{
ClearAllActons();
ActionForceMoveToObject(oPJ);
ActionStartConversation(oPJ);
//ActionSpeakString("bonjour");//si j'ai pas bien compris ce que tu voulais faire
}

Par daemogorgon le 12/1/2003 à 10:12:08 (#3001664)

:merci: Jedaï.
Ca marche comme je le veux.
En +, ca m'a permis de comprendre un truc que je cherchais depuis quelque temps les #include (y'avais pas de include dans ton script, mais j'ai adapte 2 scripts avec le tien).

:merci: encore.

Attention

Par Jedaï le 12/1/2003 à 10:20:26 (#3001688)

Même si c'est un H.S., j'ai un conseil très important à te donner sur les include (si tu le savais déjà bah tant mieux ;) ) : Pour qu'un changement sur un include prenne effet, il faut recompiler tous les scripts qui l'utilisent !!! (on peut faire un build plutôt, c'est moins chiant :D )

Par daemogorgon le 12/1/2003 à 10:51:14 (#3001789)

Un build ?

Par Jedaï le 12/1/2003 à 11:26:07 (#3001950)

Un build (je ne sais pas comment ça s'appelle dans la VF) est l'un des choix du menu build (idem), il te permet d'effectuer un certain nombre d'action sur l'ensemble de ton module, par exemple de recompiler tous les scripts ou de vérifier les zones (objets inaccessibles) et les ressources inutilisées.:)

C'est très utile. A faire avant tout test de son module, ça évite de chercher deux heures une erreur qui n'existe en réalité plus...:D

Par daemogorgon le 12/1/2003 à 11:33:57 (#3001997)

ok, j'avais pas fait le rapprochement.

JOL Archives 1.0.1
@ JOL / JeuxOnLine