Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Question d'une quiche...
Question d'une quiche...
Par kaliyouga le 10/7/2002 à 13:16:39 (#1786055)
-Est 'il possible, lors d'un dialogue, qu'une réponse du pj le téléporte (le pj bien sur) a tel ou tel endroit?Et si oui comment?
-Peut -on, faire en sorte qu' un pnj assis, lorsqu'on lui parle reste assis, ou se rassoit apres la discussion? si oui comment?
-Comment fé t on déjà, pour faire qu' un pnj aborde un pj la première fois qu'il le voit? (et seulement la première)
hum... c tout pour le moment :o)
merci d'avance :D
Re: Question d'une quiche...
Par Machin le 10/7/2002 à 15:03:34 (#1786642)
-Est 'il possible, lors d'un dialogue, qu'une réponse du pj le téléporte (le pj bien sur) a tel ou tel endroit?Et si oui comment?
Vi, même n'importe quelle action scriptable en fait. Il suffit de placer ton script dans la zone "action taken" de la phrase du dialogue.
Pour la teleportation, voir ActionJumpToLocation() /ActionJumpToObject()
-Peut -on, faire en sorte qu' un pnj assis, lorsqu'on lui parle reste assis
Je ne crois pas. Du moment que tu assigne une nouvelle action au PNJ, (comme engager une discution, par ex), l'action "s'asseoir" est automatiquement arretée, donc le PNJ se leve.
Par contre, il est possible d'afficher une ligne de texte au dessus d'un PNJ assit grâce à la fonction SpeakString (et non ActionSpeakString)
ou se rassoit apres la discussion? si oui comment?
De même que plus haut, il suffit d'assigner le bon script à la phrase terminant la discution.
-Comment fé t on déjà, pour faire qu' un pnj aborde un pj la première fois qu'il le voit? (et seulement la première)
En utilisant les variables locales des objects. Dès que ton PNJ à remarqué le PJ et s'apprête à entrer en discution avec lui, positionne un booleen sur vrai (grâce a SetLocalInt()). Ensuite, il suffit d'encadrer tout ca par un test sur ce marqueur, et le tour est joué.
Voila ce que ca peut donner, en supposant que le script suivant s'execute sur un evenement perceived :
object oPerceived = GetLastPerceived();
if (GetIsPC(oPerceived) && (!GetLocalInt(oPerceived, "bConversationEngage")))
{
SetLocalInt(oPerceived, "bConversationEngage", TRUE);
ActionMoveToObject(oPerceived);
ActionStartConversation(oPerceived);
}
Il est bien sur possible d'affiner la chose, si tu souhaite par exemple que le garde ne réagisse que sur une parception basé sur la vue. Pour ca, voir le fameux "cours pour les quiches" leçon quatre, il y a une section qui décrit ce genre de problemes.
Re: Re: Question d'une quiche...
Par Koryl le 10/7/2002 à 15:28:01 (#1786763)
Provient du message de Machin
Je ne crois pas. Du moment que tu assigne une nouvelle action au PNJ, (comme engager une discution, par ex), l'action "s'asseoir" est automatiquement arretée, donc le PNJ se leve.
Il me semble, si mes souvenirs sont bons, que dans la campagne officielle, les pnjs parlent en restant assis.
Par ZeDuckMaster le 10/7/2002 à 16:24:01 (#1786963)
Par contre, il est possible d'afficher une ligne de texte au dessus d'un PNJ assit grâce à la fonction SpeakString (et non ActionSpeakString)
ActionSpeakString permet bien d'afficher une ligne de texte au dessus de la tete d'un pnj (ou d'un pj) mais l'utilisation en est differente de SpeakString.
SpeakString est instantannée et est executée par l'objet qui appelle le script.
ActionSpeakString doit etre assignée en tant qu'action a un objet.
sinon le fait de parler à un pnj (tu cliques dessus pour lui parler) arretes bien l'action de s'asseoir (ou alors pas vu ou fallait cocher pour eviter ca ;) ) ...... par contre je n'ai pas testé le fait que c'est le pnj qui demarre la conversation ....
g trouvé!
Par kaliyouga le 10/7/2002 à 20:45:35 (#1788161)
Alors. Il faut aller dans l'éditeur de dialogue, prendre un dialogue vide, (ou un dialogue déjà existant).
-Dans le cas du dialogue vide: il fo cliquer a droite sur "root", puis sur add. Comme NPC greenting il ne faut rien mettre.
Ensuite il fo cliquer sur la phrase [OWNER] qui vient d'apparaitre, allez dans l'onglet (en bas a droite) "Current file" (le dernier onglet). Dans la case"normal" il fo mettre le script qui a servi a assoir votre pnj, et dans la case aborted ossi.
-Dans le cas d'un dialogue déjà existant: Il fo cliquer sur la premiere phrase [owner], allez dans l'onglet (en bas a droite) "Current file" (le dernier onglet). Dans la case"normal" il fo mettre le script qui a servi a assoir votre pnj, et dans la case aborted ossi.
woila.
le seule probleme, c que desfois le pnj reste assis en parlant, mé desfois il se leve lorsqu'on lui parle et se rassoit apres.
J'ai essayer ca qu'avec le texte au dessus d'la tete du pnj.
JOL Archives 1.0.1
@ JOL / JeuxOnLine