| Résolu - Déclencher un dialogue entre 2 PNJ | |
|
|
Auteur | Message |
---|
Drace Magicien
Nombre de messages : 75 Age : 34 Date d'inscription : 01/08/2008
| Sujet: Résolu - Déclencher un dialogue entre 2 PNJ Ven 02 Avr 2010, 23:36 | |
| Bonjour, cela fait longtemps que j'étais pas venu. J'ai recommencé mon mod et je voudrais savoir comment faire pour que, lors d'une quête où je doit espionner 2 pnj parler, ceux-ci se mettent à parler.
J'ai déjà vu StartConversation, mais je ne sais pas comment le mettre en forme dans un script ... si vous pouvez m'aider se serais génial.
J'ai aussi fait en sorte que le pnj1 "find" le pnj 2 mais il ne bouge pas du tout ce bougre ...
Merci | |
|
| |
Mike89 Maître ArchipelModeur
Nombre de messages : 3151 Age : 68 Date d'inscription : 06/03/2007
| Sujet: Re: Résolu - Déclencher un dialogue entre 2 PNJ Sam 03 Avr 2010, 15:01 | |
| - Drace a écrit:
- Bonjour, cela fait longtemps que j'étais pas venu. J'ai recommencé mon mod et je voudrais savoir comment faire pour que, lors d'une quête où je doit espionner 2 pnj parler, ceux-ci se mettent à parler.
J'ai déjà vu StartConversation, mais je ne sais pas comment le mettre en forme dans un script ... si vous pouvez m'aider se serais génial. Ce nest pas obligatoire de faire un script pour faire une conversation entre deux pnj. Un simple quête avec un onglet conversation bien réglé suffit. Regarde comme exemple la quête MageConvsystem. L'enchainement dépend de Link From, Link to, et de Next Speaker. Et aussi des conditions qui limitent les NPC capables de dire les phrases : tel faction ou tel NPC, ou... etc. - Drace a écrit:
- J'ai aussi fait en sorte que le pnj1 "find" le pnj 2 mais il ne bouge pas du tout ce bougre ...
Un seul package est sélectionné à la fois : le plus prioritaire dans l'ordre des packages de l'AI du NPC concerné, et aussi il faut que les conditions du package soient vraies au moment de la sélection des packages dans le jeu. Regarde dans le jeu à la console quel package est actif sur le NPC (Sélectionne le NPC, puis commande TDT puis commande SDT 0 et retourne dans le jeu). Cela te donne l'écran 0 du Toggle Debug Text. Pour arrêter le texte, retourne à la console et tape à nouveau TDT. | |
|
| |
Drace Magicien
Nombre de messages : 75 Age : 34 Date d'inscription : 01/08/2008
| Sujet: Re: Résolu - Déclencher un dialogue entre 2 PNJ Sam 03 Avr 2010, 19:17 | |
| Merci, j'ai regarder vite fait mais je ne comprend pas l'enchainement (dsl ...) existe il un tuto qui explique cela ? Sinon bhé je ferais des essais. | |
|
| |
Drace Magicien
Nombre de messages : 75 Age : 34 Date d'inscription : 01/08/2008
| Sujet: Re: Résolu - Déclencher un dialogue entre 2 PNJ Dim 04 Avr 2010, 16:46 | |
| J'ai regardé la quête MS29 (concurrence hostile) car c'est exactement ce que je veux faire comme type de quête, en tout cas le début mais je ne comprend rien. | |
|
| |
Mike89 Maître ArchipelModeur
Nombre de messages : 3151 Age : 68 Date d'inscription : 06/03/2007
| Sujet: Re: Résolu - Déclencher un dialogue entre 2 PNJ Dim 04 Avr 2010, 18:00 | |
| - Drace a écrit:
- J'ai regardé la quête MS29 (concurrence hostile) car c'est exactement ce que je veux faire comme type de quête, en tout cas le début mais je ne comprend rien.
Bon, tu voulais faire un dialogue entre deux pnj... Maintenant une copie de MS29. Tu ne comprends rien. C'est vague çà, très vague. Peux tu préciser pas à pas ce que tu ne comprends pas ? Et une seule question précise à la fois. Tel écran, tel onglet, tel boite sur l'onglet, telle condition... | |
|
| |
Drace Magicien
Nombre de messages : 75 Age : 34 Date d'inscription : 01/08/2008
| Sujet: Re: Résolu - Déclencher un dialogue entre 2 PNJ Dim 04 Avr 2010, 20:52 | |
| J'ai dit que je voulais faire parler deux pnj, oui pour une quête ou je doit les espionner j'ai précisé. Et c'est précisément ce qui se passe dans la première partie de la quête MS29 lorsque Thoronir et Agarmir se parlent.
L'enchainement conversation j'ai compris, l'IA j'ai compris, mais pour les scripts nécessaire à la condition "GetInVariable" je sais vraiment pas le décoder.
Ce que je comprend pas c'est qu'il y a plusieurs script (nécessaire pour lancer le dialogue avec les conditions et aussi pour que le joueur ne puisse pas bouger). Le problème c'est que je ne comprend pas comment faire pour refaire ces script en changeant les noms car je ne sais pas ce que ca veut dire ou à quoi c'est rattaché donc si je les modifient il y aura écrit que je peut pas l'enregistrer avec ces noms. | |
|
| |
Drace Magicien
Nombre de messages : 75 Age : 34 Date d'inscription : 01/08/2008
| Sujet: Re: Résolu - Déclencher un dialogue entre 2 PNJ Lun 05 Avr 2010, 16:18 | |
| Bon ... voilà : - Spoiler:
scriptname MS29script
short MerchSend short TalkOnce short True short Convo float fQuestDelayTime short MoveAway short Doonce short GoAttack
begin gamemode
;Triggers conversation between Agarmir and Thoronir if player is near if ( GetStage MS29 >= 20 ) && ( TalkOnce == 2 ) if ( Player.GetDistance MS29ThoronirAgarmirMeet <= 100 ) && ( ThoronirRef.GetDistance MS29ThoronirMeets <= 200 ) && ( AgarmirRef.GetDistance MS29AgarmirMeets <= 200 ) DisablePlayerControls ThoronirRef.startconversation AgarmirRef, MS29ShadyDeal set TalkOnce to 3 endif endif
;Evp's both after Convo if ( GetStage MS29 >= 20 ) && ( MoveAway == 1 ) && ( Doonce == 0 ) ThoronirRef.Evp AgarmirRef.Evp SetStage MS29 40 EnablePlayerControls set Doonce to 1 endif end
C'est la quête MS29, moi j'ai fait : - Spoiler:
scriptname 00LB1
short MerchSend short TalkOnce short True short Convo float fQuestDelayTime short MoveAway short Doonce short GoAttack
begin gamemode
;Triggers conversation between Agarmir and Thoronir if player is near if ( GetStage 00loupebois1 == 10 ) && ( TalkOnce == 2 ) if ( Player.GetDistance TertiaViduciaRef <= 100 ) && ( Player.GetDistance mariusvoltarref <= 100 ) && ( TertiaViduciaRef.GetDistance mariusvoltarref <= 100 ) DisablePlayerControls mariusvoltarref.startconversation TertiaViduciaRef, 00terguard0 set TalkOnce to 3 endif endif
;Evp's both after Convo if ( GetStage 00loupebois1 == 10 ) && ( MoveAway == 1 ) && ( Doonce == 0 ) TertiaViduciaRef.Evp mariusvoltarref.Evp SetStage 00loupebois1 20 EnablePlayerControls set Doonce to 1 endif end
Question : A quoi sert TalkOnce ????? Sinon après : Je choisi ce script dans ma quête "00loupebois1", dans l'onglet conversation sur le premier sujet je met "set 00loupebois1.Convo to 1" puisque pour la quête MS29 il s'agit de "set MS29.Convo to 1". Le problème c'est que ca me dit que la variable n'existe pas, or lorsque je met "GetInVariable" je peut choisir "00loupebois1" et "convo". Donc je ne comprend pas, par pitié j'ai cherché partout mais rien ... | |
|
| |
Mike89 Maître ArchipelModeur
Nombre de messages : 3151 Age : 68 Date d'inscription : 06/03/2007
| Sujet: Re: Résolu - Déclencher un dialogue entre 2 PNJ Lun 05 Avr 2010, 17:43 | |
| - Drace a écrit:
- Bon ... voilà :
Question : A quoi sert TalkOnce ?????
Sinon après : Je choisi ce script dans ma quête "00loupebois1", dans l'onglet conversation sur le premier sujet je met "set 00loupebois1.Convo to 1" puisque pour la quête MS29 il s'agit de "set MS29.Convo to 1". Le problème c'est que ca me dit que la variable n'existe pas, or lorsque je met "GetInVariable" je peut choisir "00loupebois1" et "convo". Donc je ne comprend pas, par pitié j'ai cherché partout mais rien ... Tu as quand même compris pas mal de choses... A quoi sert TalkOnce ?TalkOnce est un indicateur qui apparemment sert à déterminer dans quelle phase en est la rencontre. Thoronir et Agamir ont chacun un package pour se rencontrer, et chacun son script. Dans MS29AgarmirScript, on trouve : - Code:
-
begin OnPackageEnd MS29AgarmirMeetsThoronir if ( Doonce2 == 0 ) set MS29.TalkOnce to ( MS29.TalkOnce + 1 ) set Doonce2 to 1 endif end
Dans MS29ThoronirScript, on trouve : - Code:
-
begin OnPackageEnd MS29ThoronirMeetAgarmir if ( Doonce == 0 ) set MS29.TalkOnce to ( MS29.TalkOnce + 1 ) set Doonce to 1 endif end Quand les deux packages des deux pnj se terminent (ils se sont rencontrés), on aura 2 dans MS29.TalkOnce... donc le test devrait coller dans le script de quête. Pourquoi 00loupebois1.Convo marche pas ?J'ai une petite idée : dans un script, lors de la compilation, la qualification d'une variable peut être faite par le formid (numérique) ou par l'editorID (alphabétique). Je crois que lorsque un EditorID comme 00loupebois1 commence par deux chiffres, cela marche pas... A vérifier. Sinon, il faut bien mettre nomdequête.nomdevariable pour utiliser une variable de quête dans un autre script (d'objet, de quête ou de résultat). Autre remarque. Si chez Beth pour les distances ils mettent 100 et 200, je crois qu'il faut garder çà. Et pas 100 et 100. Selon le coté où se trouvent les PNJ, 100 risque d'être un peu court. Autre remarque2. Il y a un script de résultat lors du stage 20 : - Code:
-
set MS29.fQuestDelayTime to .1 C'est pour accélérer l'exécution du script (à chaque frame). Cela doit améliorer la fluidité du démarrage de la conversation (sinon cela attend 5 secondes). | |
|
| |
Drace Magicien
Nombre de messages : 75 Age : 34 Date d'inscription : 01/08/2008
| Sujet: Re: Résolu - Déclencher un dialogue entre 2 PNJ Lun 05 Avr 2010, 19:51 | |
| Ok, j'en apprend un peut plus, mais lorsque je veux changer le nom de "set MS29.TalkOnce to ( MS29.TalkOnce + 1 )" en remplacant "MS29" par "LB" par exemple, ca ne veut pas s'enregistrer. | |
|
| |
Drace Magicien
Nombre de messages : 75 Age : 34 Date d'inscription : 01/08/2008
| Sujet: Re: Résolu - Déclencher un dialogue entre 2 PNJ Mar 06 Avr 2010, 18:17 | |
| J'ai fait ça : Marius Voltar- Spoiler:
Scriptname AAloupebois1MariusVoltar
short Doonce
begin OnPackageEnd point
if ( Doonce == 0 ) set AAloupebois1.TalkOnce to ( AAloupebois1.TalkOnce + 1 ) set Doonce to 1 endif
end Tertia Viducia- Spoiler:
Scriptname AAloupebois1TertiaViducia
short Doonce
begin OnPackageEnd tertiameetmarius
if ( Doonce == 0 ) set AAloupebois1.TalkOnce to ( AAloupebois1.TalkOnce + 1 ) set Doonce to 1 endif
end Script de quête- Spoiler:
Scriptname 00LB1
short MerchSend short TalkOnce short True short Convo float fQuestDelayTime short MoveAway short Doonce short GoAttack
begin gamemode
;Triggers conversation between Agarmir and Thoronir if player is near if ( GetStage AAloupebois1 == 10 ) && ( TalkOnce == 2 ) if ( Player.GetDistance mariusmeettertia <= 100 ) && ( TertiaViduciaRef.GetDistance tertiameet <= 200 ) && (mariusvoltarref.GetDistance mariusmeet <= 200 ) DisablePlayerControls set AAloupebois1.fQuestDelayTime to .1 mariusvoltarref.startconversation TertiaViduciaRef, 00terguard0 set TalkOnce to 3 endif endif
;Evp's both after Convo if ( GetStage AAloupebois1 == 10 ) && ( MoveAway == 1 ) && ( Doonce == 0 ) TertiaViduciaRef.Evp mariusvoltarref.Evp SetStage AAloupebois1 20 EnablePlayerControls set Doonce to 1 endif end
Ca marche sauf que j'attends 10 seconde, mon stage avance a 20 et ensuite j'entends la conversation -_-' et je suis même pas disable !!! | |
|
| |
Drace Magicien
Nombre de messages : 75 Age : 34 Date d'inscription : 01/08/2008
| Sujet: Re: Résolu - Déclencher un dialogue entre 2 PNJ Mar 06 Avr 2010, 19:54 | |
| C'est bon ca marche, il semblerait que j'avais coché "run immediatly" dans le dernier sujet de conversation (celui qui rend MoveAway à 1) donc c'était pour ca ! | |
|
| |
Mike89 Maître ArchipelModeur
Nombre de messages : 3151 Age : 68 Date d'inscription : 06/03/2007
| Sujet: Re: Résolu - Déclencher un dialogue entre 2 PNJ Mar 06 Avr 2010, 20:11 | |
| - Drace a écrit:
- Ok, j'en apprend un peut plus, mais lorsque je veux changer le nom de "set MS29.TalkOnce to ( MS29.TalkOnce + 1 )" en remplacant "MS29" par "LB" par exemple, ca ne veut pas s'enregistrer.
Si LB est le nom de la quête cela devrait marcher. MAIS : Si tu modifies le nom de la quête il faut sauvegarder tout avant de revenir ensuite dans les scripts modifier les qualifieurs de variables. Sinon, c'est toujours l'ancien nom qui est connu dans les index... Enfin tu as du trouver une solution depuis lors, puisque en dernier tu dis que çà marche. Pour la vitesse, pense aussi au fQuestDelayTime... sinon cela attend 5 secondes entres chaque passage de ton script de quête. Ah oui, tu l'as fait : set AAloupebois1.fQuestDelayTime to .1Mais ici comme c'est dans le script de quête AAloupebois1, tu peux te contenter de : Set fQuestDelayTime to .1Le qualifieur AAloupebois1 n'est obligatoire que si tu veux changer cette valeur dans un autre script, ou un résultat. | |
|
| |
Drace Magicien
Nombre de messages : 75 Age : 34 Date d'inscription : 01/08/2008
| Sujet: Re: Résolu - Déclencher un dialogue entre 2 PNJ Mar 06 Avr 2010, 20:40 | |
| D'accord et merci de m'avoir aidé jusqu'à la fin ! ^^
Edit Mike : Je le mets en Résolu... | |
|
| |
Contenu sponsorisé
| Sujet: Re: Résolu - Déclencher un dialogue entre 2 PNJ | |
| |
|
| |
| Résolu - Déclencher un dialogue entre 2 PNJ | |
|