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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Un NPC immobile dans une conversation

Par Ocan Aegis-CGR le 2/11/2002 à 18:10:15 (#2463452)

Bonjour,

Voilà j’ai un petit soucis de scripte qui m'apparait, j’en fait profité la communauté. Je continue dans mon coin à chercher.

L’idée est de faire se déplacer un NPC B après que le PC est parlé à un NPC A.
Le NPC A fait une série d’action qui marche très bien sauf cette ligne de code dans le scripte.

Cela semble assez simple à faire.

Voici le scripte que j’ai fait pour cela, j’ai enlevé les autres lignes de code que j’ai effacé par la suite pour tester.

#include "NW_I0_GENERIC"
void main()
{
//J’affecte mes variables pour identifier les 2 PNC
object oNPC = GetNearestObjectByTag("NPCB");
object oDest = GetNearestObjectByTag("NPCA");

// Je vide la file d’attente des actions du NPCB
AssignCommand(oNPC,ClearAllActions());

// Je donne l’ordre au NPCB de se déplacer vers le NPCA
AssignCommand(oNPC,ActionForceMoveToObject(oDest));

}


Je place ce script dans les actions conséquentes de la conversation du PC avec le NPCA, rien ne se passe le NPCB reste sourd à la commande.

Je vide l’ensemble des commandes qui elles, marchent très bien, mais qui pourrait influer et je ne laisse que celle-ci, rien ne ce produit.

Je place le même scripte dans le ONEnter d’un Trigger (pour tester le scripte) et là miracle le NPC se met à se diriger vers l’autre NPC.

Quelqu’un peut me donner une piste de réflexion sur ce qui manque à ma conversation pour avoir le même effet qu’en rentrant sur mon Trigger ?
Peut-être que cela n’est pas possible pendant une conversation ?
Une parade pour contourner cela ?
Lancer une simulation de l’Event OnEnter de mon trigger qui marche ? Si oui, comment faire ?

Pour info mon NPCA effectue des actions, mon NPCB est un commerçant. Je le dis au cas où cela pourrait influencer ou bloquer l’action conséquente dans la conversation et non dans le Trigger.

Bref pour généraliser et aller un peu plus loin, pensez vous que les actions définie dans les conversations sont gérées différemment et ou sont limitées, ou elle demande l’initialisation de certaine bibliothèque ?
Comment simuler un Event ou appeler un scripte d’un autre event, un peu comme le OnUserDefinited pour les event d’un NPC mais appelé par un autre object. Par exemple, pour en revenir à mon cas comment je pourrais dans le scripte de la conversation lancer le scripte de l’Event OnEnter de mon Trigger.


Ocan (The Quiche !)

Re: Un NPC immobile dans une conversation

Par Morethil le 3/11/2002 à 4:46:18 (#2466978)

Provient du message de Ocan Aegis-CGR
Bonjour,

Voilà jai un petit soucis de scripte qui m'apparait, jen fait profité la communauté. Je continue dans mon coin à chercher.

Lidée est de faire se déplacer un NPC B après que le PC est parlé à un NPC A.
Le NPC A fait une série daction qui marche très bien sauf cette ligne de code dans le scripte.

Ocan (The Quiche !)


J'utilise pas mal les conversation pour lancer des évènements. Notament pour que les NPC s'en aillent.

J'utilise la même ligne de commande :

AssignCommand(oNPC,ActionForceMoveToObject(oDest, FALSE, 2.0));
//en ajoutant les variables d ecourse (ou non) et de distance)



Ce que j'ai remarqué, c'est que les PNJ affecté ne vont se mouvoir a partir d'une action conséquente de conversation que tant que la fenêtre de conversation est ouverte.
Je ne sait pas comment régler ça, et même si c'est faisable.
Donc en fait ton PNJB (celui qui bouge) doit bien aller vers le PNJA, mais tu ne le vois pas pendant que tu discute, et lorsque tu ferme la fenetre de conversation, il stoppe son mouvement.

Si quelqu'un a une solution a ça, je suis aussi demandeur. Ca rend mon module un peu trop exigeant envers les PJ :)

Par Jedaï le 3/11/2002 à 9:50:21 (#2467291)

Vous pouvez mettre ce script sur le [End Dialog] du PC et non sur la dernière réplique du NPC ou tenter de faire un DelayCommand(), je pense que l'une ou l'autre de ces manips devrait régler le problème.

Par Ocan Aegis-CGR le 4/11/2002 à 18:35:02 (#2479494)

Merci cela m'a beaucoup aidé dans l'avancement de mon module et surtout dans l'utilisation du Delaycommand et des variables de courses.

Mon pnj se déplace à chaque solicitation sauf et c'est bien la le problème actuellement, si le Tag de destination est celui d'un PNJ.
J'ai vérifié si cela ne provenait pas du tag, il n'y a aucune erreur puisque si je le recopie dans un Trigger il fonctionne parfaitement.

J'ai palié cela en changeant le tag de destination par un waypoint à coté du pnj mais cela est valable uniquement pour un pnj statique mais comme par hasard mon pnj de destination justement se déplace et de manière aléatoire qui plus est en allant chercher des tag d'objet. (oui je sais cela semble bizarre mais je vous assure que dans le module cela donne son petit effet, si :D )
J'ai du donc modifié la logique de déplacement et c'est un peu dommage.

Par contre du coup si quelqu'un avait un scripte ou plutot des explications pour déplacer un objet quelconque, un placeable ou autre (un waypoint par exemple :D) je suis preneur ;)

Je recherche également la possibilité d'afficher des messages jaunes (Comme ceux qui apparaissent pour le journal de quete ou lorsqu'on obtient un objet) j'ai pas trop fouillé le nom de la commande que je finirais par trouver un jour mais si quelqu'un l'avait ça serait bien ;)

Ocan (The quiche)

Par eMRaistlin le 4/11/2002 à 21:21:24 (#2481335)

Essaye FloatingTextOnCreature...


pour le moveto, essaye ca : ActionForceFollowObject(object, float)

Par Morethil le 5/11/2002 à 1:27:53 (#2482994)

Les message jaune c'est la commende :
SendMessageToPC, ou un truc du genre.
Ca s'ecrit a peu près

SendMessageToPC (oPC, "un vent froid vous glasse les os, balbla...");

Attention, pas d'accents possible, vu que le texte est ecrit directement sur le scripte.

Je te conseille quand meme de regarder dans la recherche (a droite de ton edit de scripte) plutôt que de coppier juste ce que j'ai mis. Je le fait de tête.

Par eMRaistlin le 5/11/2002 à 1:35:28 (#2483016)

nan, je confirme : le SendMessage va juste faire une ligne dans la fenetre en bas.... Le FloatingText va faire la meme chose, avec en plus une ligne au dessus de ton PC qui va pouvoir la voir plus facilement... (et si tu veux, ses potes ausi, suivant le dernier parametre ^^)

Par Morethil le 5/11/2002 à 1:52:51 (#2483063)

Y'avait pas de contradiction par rapport a ce que tu disait Mraistlin :)
Donc tu a les 2 posssibilité, avec texte flotant au dessus ou pas ;)

Par Jedaï le 5/11/2002 à 9:56:05 (#2483977)

Je signale, car certaines personnes ne semblent toujours pas le savoir, qu'il est possible et même assez facile de mettre des accents dans les script, avec un COPIER-COLLER. A partir de la barre de recherche ! :D

MERCI BEAUCOUP

Par Etienne le 5/11/2002 à 10:38:41 (#2484240)

Provient du message de Jedaï
Je signale, car certaines personnes ne semblent toujours pas le savoir, qu'il est possible et même assez facile de mettre des accents dans les script, avec un COPIER-COLLER. A partir de la barre de recherche ! :D


Je me suis effectivement demandé de comment faire pour mettre des accets. Iol faut donc avoir son editeur favoris ouvert a coté de soi.

A ces Americains et leur "SANS ACCENT", su'oi de plu poétique que nos divers accets sur les e, les i les o et les u.

:bouffon:

Par Jedaï le 5/11/2002 à 19:35:26 (#2489020)

Eh, relis mon post ! :doute:
J'ai justement dit que c'était pas la peine de se faire chier à ouvrir Notepad : On peut mettre des accents dans la zone de saisie pour la recherche !(en haut à gauche)... pourquoi là et pas dans les script ? Ben c'est comme ça, c'est tout ! :mdr:

Par Frolo Xeres le 5/11/2002 à 20:56:41 (#2489900)

Citation :
Provient de Morethil
"Ce que j'ai remarqué, c'est que les PNJ affecté ne vont se mouvoir a partir d'une action conséquente de conversation que tant que la fenêtre de conversation est ouverte.
Je ne sait pas comment régler ça, et même si c'est faisable."

Le problème viens des scripts par defaut de fin de conversation !
Dans "fichier actuel", deux scripts qui s'executent quand la conversation se termine ! ( A enlever si tu enclanche des actions pour le PNJ dans la conversation ; A GARDER s'il doit prendre en compte ses waypoints après... )
-> Ils sont simples :
void main() {
walkToWaypoint();
}
M'enfin çà suffit à bloquer toutes les actions courantes d'un PNJ... Dois y avoir un clearAllActions() dans cette fonction...

Edit :
"Une petite question hors sujet comment vous faites pour que vos scripts soient tout joli tout beau sans qu'il vous bouffe vos espaces ?"

Par Jedaï le 5/11/2002 à 21:06:54 (#2489999)

Pour avoir de zolis scripts, tu les mets entre des balise PHP (elles sont dans la barre de balises au-dessus du message) :cool:

JOL Archives 1.0.1
@ JOL / JeuxOnLine