Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Que représente le OBJECT_SELF
Que représente le OBJECT_SELF
Par Etienne le 7/11/2002 Ã 8:41:55 (#2502199)
J'ai un besoin de précision dans l'exmple suivant
SetLocalInt(OBJECT_SELF, "VARIABLE1", 1);
Cette ligne se trouvant dans un
-script d'action conséquante (01_xcs_[VARIABLE1]_1)
lancé par un
- Dialogue (dia_[NOM_PNJ])
Prononcé par un
- PNJ du nom de [NOM_PNJ]
a un PJ dont on se fou du nom
Je voudrais savoir que représente OBJECT_SELF :
1- le dialogue
2- le PNJ qui prononce le dialogue
3- le PJ (ce que je ne croit pas)
Merci
Par eMRaistlin le 7/11/2002 Ã 9:13:20 (#2502288)
Mais essayer d'eviter OBJECT_SELF aussi souvent que possible. Ce n'est pas un vrai objet mais une reference a un objet... Ca cree des erreurs parfois...
Re: Que représente le OBJECT_SELF
Par Morethil le 7/11/2002 Ã 9:34:37 (#2502370)
Provient du message de Etienne
SetLocalInt(OBJECT_SELF, "VARIABLE1", 1);
Je dirait aussi le PNJ, sans equivoque.
En traduction "littérale" ca donnerai :
Ajuster la variable locale "variable 1" à 1 sur l'objet lui même.
Donc comme ça ne peux pas être le PJ, c'est forcement le PNJ.
Quand a une conversation, elle ne peux pas avoir de scripte qui lui sont appliqué en tant qu'objet a mon avis. Une conversation ne varie jamais (une phrase existe toujours, même si elle n'est pas dite, vu que le MJ l'a ecrit) alors qu'un évènement sur un PJ ou PNJ peux ne pas exister.
Par eMRaistlin le 18/11/2002 Ã 15:40:31 (#2586932)
Si tu fais 2 NPC, dont les tags sont respectivement "PNJ1" et "PNJ2".
Si tu affecte sur le OnSpawn un script sur le NPC1 qui donne :
void main()
{
object oPNJ1 = GetObjectByTag("NPC1");
object oPNJ2 = GetObjectByTag("NPC2");
AssignCommand(oPNJ1, SpeakString(GetTag(OBJECT_SELF));
AssignCommand(oPNJ2, SpeakString(GetTag(OBJECT_SELF));
}
Tu devrai constater (selon toute vraisemblance...) que le PNJ1 va dire son tag, et que le PNJ2 va aussi dire son TAG.
void main()
{
object oPNJ1 = GetObjectByTag("NPC1");
object oPNJ2 = GetObjectByTag("NPC2");
object oOBJECT_SELF = OBJECT_SELF;
AssignCommand(oPNJ1, SpeakString(GetTag(oOBJECT_SELF));
AssignCommand(oPNJ2, SpeakString(GetTag(oOBJECT_SELF));
}
Ici, tu devrai donc bien confirmer que le PNJ1 prononce son TAG, mais que le PNJ2 prononce le Tag du PNJ 1.
On confirme donc bien ici que OBJECT_SELF est une refernece a l'objet qui deroule le script, mais que ce n'est pas un Objet defini tel que peut l'etre "object oOBJECT_SELF".
(A noter aussi qu'on remarque du coup que l'appel d'un assignCommande revalide les variables au moment de l'execution.
Voila, en esoperant avoir completé une reponse qui me semblait un peu floue...
Par Azrael07 le 18/11/2002 Ã 17:37:01 (#2587797)
Un dialogue n'est pas un objet (enfin si mais considérez que non, au niveau ou on bosse s'en est pas un)
JOL Archives 1.0.1
@ JOL / JeuxOnLine