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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Besoin d'un petit script pour une quiche !!

Par drclick le 29/10/2002 à 19:55:01 (#2434948)

Il me faudrai un script ou je pourrais fairer dialoguer plusieurs NPC mais que leurs reponses coincide a peu pres avec les questions !!!

Pas de trucs du genre "Comment ca va ??" et l'autre "oui il fait beau !" !! C pas tellement intelligent !!

Merci d'avance et j'attends votre reponse le plus vite possible !!

Par eMRaistlin le 29/10/2002 à 21:21:32 (#2435686)

La seule solution que je vois : un OnSpawn unique sur le NPC 1 avec :

SpeakString("Blablah");
AssignCommand(NPC2,SpeakString("BloBlo"));
SpeakString("Blablah");
AssignCommand(NPC2,SpeakString("BloBlo"));
SpeakString("Blablah");
AssignCommand(NPC2,SpeakString("BloBlo"));


et ainsi de suite, avec bien entendu, des delayCommand entre...

Par LeProctophantasmiste le 29/10/2002 à 23:50:57 (#2436657)

Je ne sais pas si cela correspond à ce que tu veux faire, mais tu peux aussi créer une conversation (un dialogue, pas besoin de script) entre deux ou plusieurs NPC et un joueur. En laissant les noeuds du PJ blancs, cela te fait une conversation entre NPC qui avance au rythme choisi par le PJ.

Au cas où la marche à suivre:
Tu crée une conversation entre le PJ et un des PNJ, Et tu affectes les noeuds voulus non pas au joueur ou à ce PNJ mais à un tag correspondant au PNJ souhaité (je te conseille de donner aux PNJ des tags que tu n'utilises pas par ailleurs).

Par drclick le 30/10/2002 à 0:01:46 (#2436727)

Merci procto mais c pas vraiment ca que je recherche !!

Merci quand meme pour ta reponse !! ;) ;) :mdr:

Par Morethil le 30/10/2002 à 2:00:33 (#2437217)

Provient du message de eMRaistlin
La seule solution que je vois : un OnSpawn unique sur le NPC 1 avec :

SpeakString("Blablah");
AssignCommand(NPC2,SpeakString("BloBlo"));
SpeakString("Blablah");
AssignCommand(NPC2,SpeakString("BloBlo"));
SpeakString("Blablah");
AssignCommand(NPC2,SpeakString("BloBlo"));


et ainsi de suite, avec bien entendu, des delayCommand entre...


ok, je regarde ce que je peut trouver de mon cote.

Par eMRaistlin le 30/10/2002 à 2:09:39 (#2437248)

void main()
{
ClearAllActions();

object oNPC1 = OBJECT_SELF;
object oNPC2 = GetNearestObjectByTag("NPC_02");

if (GetIsPC(GetLastPerceived()))
{
ActionSpeakString("Salut ca va ??"));
DelayCommannd(5.0f,AssignCommand(oNPC2, ActionSpeakString("Oui bien et toi ??")));
DelayCommannd(10.0f,ActionSpeakString("Ca baigne ??"));
DelayCommannd(15.0f,AssignCommand(oNPC2, ActionSpeakString("Ok")));
}
}


Sur le OnPerception du NPC 1

Par Morethil le 30/10/2002 à 5:58:27 (#2437572)

Provient du message de eMRaistlin


DelayCommannd


Sur le OnPerception du NPC 1


Merci pour cette commande, j'essayait desesperement avec les Action Wait...

Moi j'ai mis ça sur un trigger, dans le OnEnter :


void main()
{
object oCreature = GetEnteringObject();
object oSam = GetObjectByTag ("TAG_DE_SAM");
object oLeo = GetObjectByTag ("TAG_DE_LEO");
object oBob = GetObjectByTag ("TAG_DE_BOB");

// Verification pour voir si l'entrant est un PC.
int iTalk = GetLocalInt(OBJECT_SELF,"Talk_Once");
if (GetIsPC(oCreature) && (iTalk==0))
{
SetLocalInt(OBJECT_SELF,"Talk_Once",1);
AssignCommand (oSam, SpeakString("Ha, ha ha ha ! He, raconte
celle de l'elephant rose !"));
DelayCommand (2.0f, AssignCommand (oLeo, SpeakString("Une
autre fois Sam.")));
DelayCommand (4.0f, AssignCommand (oBob, SpeakString("Allez
Leo ! On s'ennui ici, amuse nous un peu.")));
DelayCommand (6.0f, AssignCommand (oSam, SpeakString("Ha,
tu vois !")));
DelayCommand (8.0f, AssignCommand (oBob, SpeakString("He he
he, un jour il va craquer...")));
DelayCommand (10.0f, AssignCommand (oLeo, SpeakString("On
est la pour une demo les gars, pas pour que je raconte des
blagues.")));

//Et ca pour détruire le trigger une fois qu'il est utilisé.
DelayCommand (11.0f, DestroyObject (GetObjectByTag
("Tag_du_trigger")));
}
}


L'interet du trigger c'est que les personnages qui parlent peuvent être derrière un mur, donc de faction hostile, et tous le toutim.
Le delay des secondes est un peu court chez moi (vu en test)
Il marche dans l'etat, mais risque de se repêter si un autre PC entre dans le trigger avant la fin.

Et je suis contant de moi :D

Edit J'ai rajouté quelques elements tiré d'un scripte de Lyoness

//int iTalk = GetLocalInt(OBJECT_SELF,"Talk_Once"); sur la ligne precedant le if
//&& (iTalk==0)) sur la ligne du if (pensez a ajuster les parentheses
//SetLocalInt(OBJECT_SELF,"Talk_Once",1); Sur la première ligne d'execution (sous l'accolade du if)

Ca ajoute une codition de plus a l'execution du scripte, qui va fonctionner uniquement si l'objet entrant est un PC & si le trigger n'a pas de compteur.
Le SetLocalInt... ajoute ce fameux compteur

Par drclick le 30/10/2002 à 21:55:54 (#2444317)

Je fais juste remonter le post !

Par Stritis le 30/10/2002 à 22:01:09 (#2444353)

Pourquoi tu fais remonter ce post ?:confus:

Par Morethil le 30/10/2002 à 22:01:14 (#2444355)

Provient du message de drclick
Je fais juste remonter le post !


?
Ben tu l'a ta réponse pour faire dialoguer plusieurs NPC, t'en a même deux pour le prix d'une ;p
Si tu veux que la réponse du NPC2 puisse être differente a chaque fois il faut que tu introduise les variantes. Pour ce genre de truc je te conseille de voir l'exemple de "l'auberge animée"

Par Stritis le 30/10/2002 à 22:04:53 (#2444383)

Provient du message de Morethil
?Ben tu l'a ta réponse pour faire dialoguer plusieurs NPC, t'en a même deux pour le prix d'une ;p


Un peu en retard

Provient du message de Morethil
Si tu veux que la réponse du NPC2 puisse être differente a chaque fois il faut que tu introduise les variantes. Pour ce genre de truc je te conseille de voir l'exemple de "l'auberge animée"


La aussi un peu en retard

JOL Archives 1.0.1
@ JOL / JeuxOnLine