Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Un NPC immobile dans une conversation
Un NPC immobile dans une conversation
Par Ocan Aegis-CGR le 2/11/2002 à 18:10:15 (#2463452)
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.
Cela semble assez simple à faire.
Voici le scripte que jai fait pour cela, jai enlevé les autres lignes de code que jai effacé par la suite pour tester.
#include "NW_I0_GENERIC"
void main()
{
//Jaffecte mes variables pour identifier les 2 PNC
object oNPC = GetNearestObjectByTag("NPCB");
object oDest = GetNearestObjectByTag("NPCA");
// Je vide la file dattente des actions du NPCB
AssignCommand(oNPC,ClearAllActions());
// Je donne lordre 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 lensemble 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 dun Trigger (pour tester le scripte) et là miracle le NPC se met à se diriger vers lautre NPC.
Quelquun peut me donner une piste de réflexion sur ce qui manque à ma conversation pour avoir le même effet quen rentrant sur mon Trigger ?
Peut-être que cela nest pas possible pendant une conversation ?
Une parade pour contourner cela ?
Lancer une simulation de lEvent 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 laction 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 linitialisation de certaine bibliothèque ?
Comment simuler un Event ou appeler un scripte dun autre event, un peu comme le OnUserDefinited pour les event dun 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 lEvent 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)
Par Ocan Aegis-CGR le 4/11/2002 à 18:35:02 (#2479494)
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)
pour le moveto, essaye ca : ActionForceFollowObject(object, float)
Par Morethil le 5/11/2002 à 1:27:53 (#2482994)
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)
Par Morethil le 5/11/2002 à 1:52:51 (#2483063)
Donc tu a les 2 posssibilité, avec texte flotant au dessus ou pas ;)
Par Jedaï le 5/11/2002 à 9:56:05 (#2483977)
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)
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)
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)
JOL Archives 1.0.1
@ JOL / JeuxOnLine