Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > PB de Scrpt avec double IF
PB de Scrpt avec double IF
Par Mastokk le 12/12/2002 à 0:45:47 (#2766219)
void main()
{
object oLastOpener = GetLastOpener();
if (GetLocalInt(OBJECT_SELF, "EMERAUDE") != 0)
{
if (CheckPartyForItem(oLastOpener, "AmulettefamillialedelafamilleMes"))
{
CreateObject(OBJECT_TYPE_ITEM, "be_emeraude", OBJECT_SELF, FALSE);
SetLocalInt(OBJECT_SELF, "EMERAUDE", 1);
}
}
if (GetLocalInt(OBJECT_SELF,"NW_DO_ONCE") != 0)
{
return;
}
GenerateLowTreasure(oLastOpener, OBJECT_SELF);
SetLocalInt(OBJECT_SELF,"NW_DO_ONCE",1);
ShoutDisturbed();
}
Quelqu'un voit pourquoi ? :aide:
Re: PB de Scrpt avec double IF
Par Tynril le 12/12/2002 à 0:50:03 (#2766242)
void main() {
:)
object oLastOpener = GetLastOpener();
if (GetLocalInt(OBJECT_SELF, "EMERAUDE") != 0) {
if (CheckPartyForItem(oLastOpener, "AmulettefamillialedelafamilleMes")) {
//CreateObject(OBJECT_TYPE_ITEM, "be_emeraude", OBJECT_SELF, FALSE);
//CreateObject ne peut pas cibler un PJ, OBJECT_SELF est un objet, pas une location !
CreateItemOnObject("be_emeraude",OBJECT_SELF,1);
//Pour créer une emeraude sur soit même.
SetLocalInt(OBJECT_SELF, "EMERAUDE", 1);
}
}
if (GetLocalInt(OBJECT_SELF,"NW_DO_ONCE") != 0) {
return;
}
GenerateLowTreasure(oLastOpener, OBJECT_SELF);
SetLocalInt(OBJECT_SELF,"NW_DO_ONCE",1);
ShoutDisturbed();
}
Par Mastokk le 12/12/2002 à 0:54:36 (#2766273)
Il me dit No right Bracket ici :
if (CheckPartyForItem(oLastOpener, "AmulettefamillialedelafamilleMes")) {
J'avais le même message à la même ligne dans ma version précédente.
Par Tynril le 12/12/2002 à 1:04:38 (#2766334)
#include "nw_i0_tool"
#include "NW_O2_CONINCLUDE"
void main() {
object oLastOpener = GetLastOpenedBy();
if (GetLocalInt(OBJECT_SELF, "EMERAUDE") != 0) {
if (CheckPartyForItem(oLastOpener, "AmulettefamillialedelafamilleMes")) {
//CreateObject(OBJECT_TYPE_ITEM, "be_emeraude", OBJECT_SELF, FALSE);
//CreateObject ne peut pas cibler un PJ, OBJECT_SELF est un objet, pas une location !
CreateItemOnObject("be_emeraude",OBJECT_SELF,1);
//Pour créer une emeraude sur soit même.
SetLocalInt(OBJECT_SELF, "EMERAUDE", 1);
}
}
if (GetLocalInt(OBJECT_SELF,"NW_DO_ONCE") != 0) {
return;
}
GenerateLowTreasure(oLastOpener, OBJECT_SELF);
SetLocalInt(OBJECT_SELF,"NW_DO_ONCE",1);
ShoutDisturbed();
}
Par Mastokk le 12/12/2002 à 1:31:29 (#2766441)
Bon le script me semble bon, et pourtant l'objet n'est pas créé. Il s'agit normalement de créer un objet dans un sarcophage lorsque le PJ l'ouvre et qu'il possède un autre objet.
je vois pas de quoi ca pourrait venir... A la base, une variable locale est bien à zero ?
Par coolstar le 12/12/2002 à 1:59:37 (#2766552)
#include "nw_i0_tool"
#include "NW_O2_CONINCLUDE"
void main()
{
object oLastOpener = GetLastOpenedBy();
if (GetLocalInt(OBJECT_SELF, "EMERAUDE") != 0)
{
return;
}
if (CheckPartyForItem(oLastOpener, "AmulettefamillialedelafamilleMes"))
{
//CreateObject(OBJECT_TYPE_ITEM, "be_emeraude", OBJECT_SELF, FALSE);
//CreateObject ne peut pas cibler un PJ, OBJECT_SELF est un objet, pas une location !
CreateItemOnObject("be_emeraude", OBJECT_SELF, 1);
//Pour créer une emeraude sur soit même.
SetLocalInt(OBJECT_SELF, "EMERAUDE", 1);
}
if (GetLocalInt(OBJECT_SELF,"NW_DO_ONCE") != 0)
{
return;
}
GenerateLowTreasure(oLastOpener, OBJECT_SELF);
SetLocalInt(OBJECT_SELF, "NW_DO_ONCE", 1);
ShoutDisturbed();
}
:ange:
Par Mastokk le 12/12/2002 à 2:11:59 (#2766592)
Ha ok le problème viendrait d'un return manquant.. ok j'essaie ca, merci.
Merci de votre aide, ça marche :)
Par coolstar le 12/12/2002 à 2:55:47 (#2766734)
#include "nw_i0_tool" /* Nécessaire pour lutilisation de "CheckPartyForItem" */
#include "NW_O2_CONINCLUDE" /* Nécessaire pour lutilisation de "GenerateLowTreasure" */
void main()
{
object oLastOpener = GetLastOpenedBy(); // Acquisition de la dernière personne par qui le coffre est ouvert.
object oChest = OBJECT_SELF; // Recentrement de Tous les OBJECT_SELF concernant le coffre.
string sItemTag = "AmulettefamillialedelafamilleMes"; // Désignation du TAG de l'Amulette a repérer.
string sItemTemplate = "be_emeraude"; // Désignation du REF de l'Emeraude a créer.
string sVarNameItem = "EMERAUDE"; // Dénomination de la Variable pour la création de l'objet.
string sVarNameChest = "NW_DO_ONCE"; // Dénomination de la Variable pour l'ouverture du coffre.
int nValue0 = FALSE; // Initialisation de la Valeur FAUSSE pour utiliser les Variables.
int nValue1 = TRUE; // Initialisation de la Valeur VRAIE pour utiliser les Variables.
int iItemCondition = CheckPartyForItem(oLastOpener, sItemTag); // Détention de l'Amulette.
int iValueConditionItem = GetLocalInt(oChest, sVarNameItem) == nValue0; // Création de l'Emeraude FAUSSE.
int iValueConditionChest = GetLocalInt(oChest, sVarNameChest) == nValue0; // Ouverture du coffre FAUSSE.
// Verifie si les Conditions sont toutes 2 effectives : Détention de l'Amulette & Création de l'Emeraude FAUSSE.
if (iItemCondition && iValueConditionItem)
{ // Si les Conditions sont toutes 2 effectives les opérations suivantes s'effectuent.
CreateItemOnObject(sItemTemplate, oChest); // Création de l'Emeraude (devient VRAIE).
SetLocalInt(oChest, sVarNameItem, nValue1); // La Variable EMERAUDE acquière la Valeur TRUE (VRAIE).
}
// Vérifie si la Condition est effective : Ouverture du coffre FAUSSE.
if (iValueConditionChest)
// Si la Condition est effective les opérations suivantes s'effectuent.
GenerateLowTreasure(oLastOpener, oChest); // Génération aléatoire d'un Trésors de faible niveau.
SetLocalInt(oChest, sVarNameChest, nValue1); // La Variable NW_DO_ONCE acquière la Valeur TRUE (VRAIE).
ShoutDisturbed(); // Avertit a l'entour que le coffre a été ouvert ??
}
Par eMRaistlin le 12/12/2002 à 9:25:32 (#2767350)
Le même mais en pareil!
:mdr: :mdr: :mdr: :mdr: :mdr: :mdr: :mdr: :mdr: :mdr:
JOL Archives 1.0.1
@ JOL / JeuxOnLine