Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Petit problème avec un if
Petit problème avec un if
Par Cassin le 15/11/2002 Ă 13:35:43 (#2568043)
Voilà la situation : dans un zone j'ai un trigger, en passant sur ce trigger, le joueur récupère quelques variables, voit son journal avancer et récupérer l'XP d'une quête.
Voici donc mon script :object oJoueur = GetEnteringObject();
void main()
{
SetLocalInt(oJoueur,"fin_elith",1);
SetLocalInt(oJoueur,"trig_oree",1);
if(GetLocalInt(oJoueur,"trig_oree") == 1)
{
AddJournalQuestEntry("vengeance",2,oJoueur);
GiveXPToCreature(oJoueur,GetJournalQuestExperience("vengeance"));
}
}
Le hic c'est que le joueur récupère les pts d'XP chaque fois qu'il traverse le trigger, alors que normalement ça ne devrait le faire qu'une seule fois...
Bon, je sais que je pourrais plus simplement détruire le trigger une fois les commandes effectuées, mais j'aimerais quand même comprendre pourquoi ça marche pas ?
Par miriandel le 15/11/2002 Ă 13:44:54 (#2568131)
void main()
{
if (GetLocalInt(oJoueur,"trig_oree") == FALSE)
{
SetLocalInt(oJoueur,"trig_oree", TRUE);
AddJournalQuestEntry("vengeance",2,oJoueur);
GiveXPToCreature(oJoueur,GetJournalQuestExperience("vengeance"));
}
}
Ca devrait marcher comme ça :)
Petite note: j'ai mis des TRUE et FALSE à la place de 1 et 0, ce qui aide la lisibilité pour des cas booléens comme celui-ci.
Edit: Comme l'a relevé Tyn, tu testais ta variable juste après l'avoir modifiée. Une distraction, sans doute.
Re: Petit problème avec un if
Par mobidique le 15/11/2002 Ă 13:51:42 (#2568176)
object oJoueur = GetEnteringObject();
C'est parce que tu initialise toujours à 1 ta variable avant de la tester, donc la condition est toujours vraie, donc le code conditionnel est toujours exécuté ... Moi je fais comme ça ce genre de chose ...
void main()
{
SetLocalInt(oJoueur,"fin_elith",1);
SetLocalInt(oJoueur,"trig_oree",1);
if(GetLocalInt(oJoueur,"trig_oree") == 1)
{
AddJournalQuestEntry("vengeance",2,oJoueur);
GiveXPToCreature(oJoueur,GetJournalQuestExperience("vengeance"));
}
}void main()
{
/* Get localint créé la variable et l'initialise à 0 */
if(!GetLocalInt(oJoueur,"trig_oree") == 1)
{
AddJournalQuestEntry("vengeance",2,oJoueur);
GiveXPToCreature(oJoueur,GetJournalQuestExperience("vengeance"));
SetLocalInt(oJoueur,"trig_oree",1);
}
}
Par Tynril le 15/11/2002 Ă 13:52:16 (#2568180)
Par Cassin le 15/11/2002 Ă 19:42:12 (#2570571)
Bon ben merci les gars ! J'espère que la prochaine fois je ferais plus gaffe ! ;)
JOL Archives 1.0.1
@ JOL / JeuxOnLine