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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Faire un script general pour placeable, conversation trigger.

Par sounéva le 19/12/2002 à 23:41:45 (#2836026)

j'ai réussi a faire un seul script qui gère toute les transitions par objets clickables de mon module.
"GetLastUsedBy"
je voudrait aussi m'en servir pour gère les transitions déclenché lors de conversation.
"GetPcSpeaker"
et enfin je voudrai m'en servir pour gère les transition déclenché par trigger.
"GetEnteringObject"

le problème étant que le joueur oPC est des fois définit par :
"GetLastUsedBy"ou"GetPcSpeaker"ou"GetEnteringObject".
n'y a-t-il pas un moyen de déclaré l'objet oPC comme étant soit = a GetLastUsedBy(OBJECT_SELF) soit = a GetPcSpeaker() soit = a GetEnteringObject?

j'espère avoir été claire dans ma question.
:merci:

Par eMRaistlin le 20/12/2002 à 0:00:15 (#2836192)

C'est faisable :

Y'a plusieur facon, mais la mieux, c'est ca :


object GetCaller()
{
object oPC = OBJECT_INVALID;
if (GetIsObjectValid(GetLastSpeaker()))
{oPC = GetLastSpeaker;}
if (GetIsObjectValid(GetEnteringObject()))
{oPC = GetEnteringObject();}
if (GetIsObjectValid(GetLastUsedBy()))
{oPC = GetLastUsedBy();}
return oPC;
}


Personnelement, je vois pas de raison que ca ne marche pas...

Par contre, tu prend un risque sur un module multijoueur que l'action de l'un soit interprété dans le script d'un autre, si ils sont executés en même temps...
(mais bon, ce sera pas tout les jours non plus, normalement... quoique avec le GetLastSpeaker... ca pourrait...)

En tout cas, hope this'll help :)

Par sounéva le 20/12/2002 à 0:46:52 (#2836526)

je te remerci mille fois :merci:

Par contre, tu prend un risque sur un module multijoueur que l'action de l'un soit interprété dans le script d'un autre, si ils sont executés en même temps...


je me sert du tag de l'objet qui porte le script pour l'instant.
mais j'y pense les conversation n'ont pas de tag......?

Par sounéva le 20/12/2002 à 4:18:57 (#2837113)

dans une conversation
et es-ce que GetObjectByTag(OBJECT_SELF) me renverra
le tag de l'objet (si la conversation est placé sur un objet)?
le tag du pnj (si la conversation est placé sur pnj)?

PS: le script se trouvant dans une action conséquente
et pas sur une branche de réponse du joueur......a moins que cela me renvoi le tag du joueur....:D

Par eMRaistlin le 20/12/2002 à 10:11:54 (#2837856)

Normalement, tel que c'est prevu, le OBJECT_SELF d'une conversation te renvoi celui qui a initialise la conversation.

Toutefois, je te conseille moults verification d'objet en raison des pb sus-cites... surtout dans les OnConversation, qui par definition sont plus longs que les autres, donc le GetCaller risque encore plus de te tourner en bourrique.

Un conseil : Sur les OnConversation, tu prend le GetCaller sur la 1ere phrase, tu le stock en OBJECT local sur ton NPC, et tu appele cet objet local par la suite...

Par sounéva le 20/12/2002 à 16:13:03 (#2840605)

Provient du message de eMRaistlin
Normalement, tel que c'est prevu, le OBJECT_SELF d'une conversation te renvoi celui qui a initialise la conversation.


j'aimerai avoir plus de précisions :
es-ce que si je met un ActionStartConversation dans le script d'un placeable, OBJECT_SELF me renverra l'objet(placeable).......?

en faite qui peut être celui qui initialise la conversation ?

celui qui commence la conversation ?
(le joueur quand il click sur un PNJ, le pnj quand il commence une convers.., un trigger, un placeable):aide:

Par coolstar le 21/12/2002 à 20:37:58 (#2849479)


// Starts a conversation with oObjectToConverseWith - this will cause their
// OnDialog event to fire.
// - oObjectToConverseWith
// - sDialogResRef: If this is blank, the creature's own dialogue file will be used
// - bPrivateConversation
void ActionStartConversation(object oObjectToConverseWith, string sDialogResRef=", int bPrivateConversation=FALSE)


'ActionStartConversation' est, par défaut, assigné au "Propriétaire" (du Script ou du Dial!)... oObjectToConverseWith étant la "Cible" du "Propriétaire"... donc, par défaut, cela signifie toujours que l'Objet "Propriétaire" parlera à la "Cible" de celui-ci...



Voici par exemple le Script par défaut permettant de faire "parler" un 'Plaçable'...


//::///////////////////////////////////////////////
//:: nw_g0_convplac
//::
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
Cause a placeable object to start a
conversation with the PC.

Use this script as the OnUsed event
of a Placeable object that is flagged as
Useable, Has NO Inventory, and is NOT Static.
*/
//:://////////////////////////////////////////////
//:: Created By: Sydney Tang
//:: Created On: Aug 08, 2002
//:://////////////////////////////////////////////

void main()
{
ActionStartConversation(GetLastUsedBy());
}


Donc... OBJECT_SELF concernera toujours de fait le "Propriétaire"... c'est-à-dire ici le NPC ou le Plaçable (Tout Objet!)... et il en va de même pour la récupération du 'TAG' par cette manière... You see??? :D

...

Par sounéva le 21/12/2002 à 22:31:08 (#2850025)

:merci: honorable canard:merci:
j'attendais en faite une réponse avant d'envisager d'utiliser mon script aussi pour les conversations.

bref :merci: :merci: :merci: :merci: :merci:
si j'arrive aussi a gérer les conversations cela va tout simplement me permettre de n'avoir qu'1 seul script gérant toutes transition particulières du module......

un grand merci a eMRaistlin pour sa fonction GetCaller.
et coolstar pour m'avoir fait comprendre que OBJECT_SELF me renverra le propriétaire de la conversation..

Par coolstar le 22/12/2002 à 0:31:44 (#2850584)

:merci:

JOL Archives 1.0.1
@ JOL / JeuxOnLine