dialogues

Répondre
Partager Rechercher
Salut à tous,

la question a peut être déjà été posée, mais je ne trouve rien.

Est ce qu'un dialogue peut être commencé par un PNJ (et non pas par le joueur) ?
Je m'explique, j'ai besoin qu'un PNJ arrive devant une porte et qu'il s'adresse au joueur via un dialogue, et non pas qu'il attende que le joueur clique dessus pour commencer le dialogue..
oui ca peut (mais je ne connai pas les script par coeur ) dès que j'en aurai le temps je te dirai si il existe un script sinon ben faudra soit le crée soit dowloader un hadpak
Tien si ca peu te servir ^^


Citation :
Créez votre Npc et dans ces propriétés renommez son tag "kahar" (pour exemple).

Ensuite placez un generic trigger sur votre carte (zone qui va faire déplacer le Npc vers le jouer quand celui-ci rentre dans cette zone).

Enfin mettez ce script dans "on enter" de votre trigger.

Code PHP:

void main() 

object oPC GetEnteringObject(); 

// Mettre le tag de votre perso, ici c'est kahar 
object oNPC GetNearestObjectByTag("kahar"); 

// Trouvez le Npc. Il est peut etre mort.. 
if (GetIsObjectValid(oNPC)) { 

// verifie que le npc ne parle pas déjà à quelqu'un 
if (!IsInConversation(oNPC)) { 

// stop les actions en cours du Npc. 
AssignCommand(oNPCClearAllActions()); 

// Faire marcher le Npc vers le joueur. Si vous voulez que le npc court, changez la variable par true. 
AssignCommand(oNPCActionMoveToObject(oPCFALSE)); 

// Pour que le Npc parle au joueur. 
AssignCommand(oNPCActionStartConversation(oPC)); 



// Si vous voulez que le script ne marche qu'une seule fois 
// placer la ligne en dessous en la mettant sans commentaire: 
//DestroyObject(OBJECT_SELF); 


Le problème, car il y a un problème, est le suivant maintenant :

Le PNJ a toute une série d'action avant de démarrer la conversation qui sont gérées par des DelayCommand.
Pour la dernière action qui débute la conversation, le Delay étant aléatoire en fonction du temps qu'il met pour arriver au PJ, comment faire pour qu'il commence la conversation quand il arrive devant le PJ ?
Etant donné que quand le Pnj commence son déplacement vers le Pj, son Delay est déjà à 17.0, et que je ne connaît pas le temps qu'il va mettre pour arriver devant le Pj, la question est : y'a t il une astuce pour savoir si le Pnj a fini son déplacement et est devant le joueur pour pouvoir lancer son dialogue ?

En me relisant, j'arrive à peine à me comprendre moi même !!!!
Ben tu peu faire une Sphere autour du joueur, je n'est pas la fonction en tete la mais avec cette fonction tu faire une sphere de 1 metre et des que le pj est dans cette sphere tu declenche le dialogue
tu as celle la aussi

GetObjectSeen(object oTarget, object oSource=OBJECT_SELF)

celle que je disait est celle la

GetFirstObjectInShape(int nShape, float fSize, location lTarget, int bLineOfSight=FALSE, int nObjectFilter=OBJECT_TYPE_CREATURE, vector vOrigin=[0.0,0.0,0.0])
Non, c'est bon, il suffit de mettre dans une fonction a part et appelée par le main() la liste des actions qui débutent après le démarrage du Pnj vers le joueur sans les Delay et l'appeler avec un Delay dans mon exemple de 18.0, et ça marche...

Merci pour le début. ( C'est souvent difficile, le DEBUT du chemin de la réflexion qui mene à l'éblouissement de la découverte, ... )
bah tu ten fou de sa...

faut surtout vider les emplacement normal2 et abandon.

et a la rigueur dans abandon tu met un rendomwalk.

(se trouve dans ton dialoodue a droit de action consquente onglet : fichiers actuel)
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés