La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 15/11/2024 13:28:57


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
gachyama
Acolyte
Inscrit le: 27 Jan 2003
Messages: 37
Localisation: nice
Répondre en citant
Posté le : 22/12/2003 22:40:23 Sujet du message : Verification d'item

Bonjour,
j'ai un petit probleme avec un script de verification d'item je veux dire dans un quete quand le pj a reuni tout les items il faut un script pour verifié que les items sont bien present et donc j'ai un probleme sur ce script.

NWScript :
int StartingConditional()
{
object oPC = GetPCSpeaker();

if ((GetItemPossessedBy(oPC, "item1") == OBJECT_INVALID) && (GetItemPossessedBy(oPC, "item2") == OBJECT_INVALID) && (GetItemPossessedBy(oPC, "item3") == OBJECT_INVALID) && (GetItemPossessedBy(oPC, "item4") == OBJECT_INVALID) && (GetItemPossessedBy(oPC, "item5") == OBJECT_INVALID) && (GetItemPossessedBy(oPC, "item6") == OBJECT_INVALID) && (GetItemPossessedBy(oPC, "item7") == OBJECT_INVALID) && (GetItemPossessedBy(oPC, "item8") == OBJECT_INVALID)) return FALSE;

return TRUE;
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Le probleme avec ce script c'est qu'il ne verifie pas tout les items il n'en verifie qu'un seul,donc si un pj arrive avec un seul item il lui file la recompense Sad

Alors si quelqu'un vois ou est le probleme je lui en serais reconnaissant.

Voili merci beaucoup
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Adresse AIM MSN Messenger Ignorer l'utilisateur
 
Longbow
Grand Sage du Conseil
Inscrit le: 10 Déc 2003
Messages: 638
Localisation: Orléans
Répondre en citant
Posté le : 22/12/2003 23:23:39 Sujet du message :

Que dirais-tu d'inverser le problème comme suis...

NWScript :
int StartingConditional()
{
object oPC = GetPCSpeaker();

if ((GetItemPossessedBy(oPC, "item1") != OBJECT_INVALID)
|| (GetItemPossessedBy(oPC, "item2") != OBJECT_INVALID)
|| (GetItemPossessedBy(oPC, "item3") != OBJECT_INVALID)
|| (GetItemPossessedBy(oPC, "item4") != OBJECT_INVALID)
|| (GetItemPossessedBy(oPC, "item5") != OBJECT_INVALID)
|| (GetItemPossessedBy(oPC, "item6") != OBJECT_INVALID)
|| (GetItemPossessedBy(oPC, "item7") != OBJECT_INVALID)
|| (GetItemPossessedBy(oPC, "item8") != OBJECT_INVALID))
return TRUE;

return FALSE;
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Je l'ai testé rapidement, dis-moi si cela te convient...
_________________
Rex illeteratus
Quasi Asinus Coronatus
Jean de Salisbury
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Longbow
Grand Sage du Conseil
Inscrit le: 10 Déc 2003
Messages: 638
Localisation: Orléans
Répondre en citant
Posté le : 22/12/2003 23:45:07 Sujet du message :

Rebonsoir, j'avais un doute alors je l'ai testé en condition réelle... et il faut mettre

NWScript :
int StartingConditional()
{
object oPC = GetPCSpeaker();

if ((GetItemPossessedBy(oPC, "item1") != OBJECT_INVALID)
&& (GetItemPossessedBy(oPC, "item2") != OBJECT_INVALID)
&& (GetItemPossessedBy(oPC, "item3") != OBJECT_INVALID)
&& (GetItemPossessedBy(oPC, "item4") != OBJECT_INVALID)
&& (GetItemPossessedBy(oPC, "item5") != OBJECT_INVALID)
&& (GetItemPossessedBy(oPC, "item6") != OBJECT_INVALID)
&& (GetItemPossessedBy(oPC, "item7") != OBJECT_INVALID)
&& (GetItemPossessedBy(oPC, "item8") != OBJECT_INVALID))
return TRUE;

return FALSE;
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Le post précédent peut être supprimé par souci de clarté...
_________________
Rex illeteratus
Quasi Asinus Coronatus
Jean de Salisbury
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
gachyama
Acolyte
Inscrit le: 27 Jan 2003
Messages: 37
Localisation: nice
Répondre en citant
Posté le : 22/12/2003 23:57:41 Sujet du message :

Vui c'est sa j'ai testé et le script (deuxieme) marche super bien C'est top ! il verifie tout les items merci beaucoup tu me sauve la vie!!! Very Happy

Ca, c'est Youpi !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Adresse AIM MSN Messenger Ignorer l'utilisateur
 
Devilon Bersek
Ecuyer
Inscrit le: 13 Sep 2004
Messages: 59
Localisation: Certainement dans une forge...sinon a Beaune
Répondre en citant
Posté le : 07/01/2005 00:43:00 Sujet du message :

salut a tous, en fait moi j'ai un plus petit soucis, mais j'arrive pas a compiler...
un pnj donne un anneau, pour pouvoir entrer dans un portail...si le pj en a deja un, il lui dit de prendre le portail.
le hic, c'est que si le PJ l'equipe, le PNJ ne le detecte plus et lui redonnes un anneau

j'ai essayé de lui faire verrifier les slots anneau, mais il ne compile pas, j'ai une variable deja presente...

je vous mets mon script a l'heure actuelle, sans la verification des slots

NWScript :


int GetNumItems(object oTarget,string sItem)
{
int nNumItems = 0;
object oItem = GetFirstItemInInventory(oTarget);
while (GetIsObjectValid(oItem) == TRUE)
{
if (GetTag(oItem) == sItem)
{
nNumItems = nNumItems + GetNumStackedItems(oItem);
}
oItem = GetNextItemInInventory(oTarget);
}
return nNumItems;
}


int StartingConditional()
{
object oPC = GetPCSpeaker();

if (!(GetNumItems(oPC, "anneauduvillage") < 1))
{
ActionSpeakString("Vous avez deja un laisser passer, prenez le portail...");
return FALSE;
}
if (!(GetNumItems(oPC, "clefduchateau") < 1))
{
ActionSpeakString("Vous avez deja un laisser passer, prenez le portail...");
return FALSE;
}

return TRUE;

}

Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


voilà, si quelqu'un pouvait m'aider, je lui en serait tres reconnaissant.

je vous mets mon script erroné pour vous faire part de mon erreur, si vous pouvez me corriger Embarassed on apprends toujours de ses erreurs Very Happy

NWScript :


int GetNumItems(object oTarget,string sItem)
{
int nNumItems = 0;
object oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oTarget);
while (GetIsObjectValid(oItem) == TRUE)
object oItem = GetItemInSlot(INVENTORY_SLOT_LEFTRING, oTarget);
while (GetIsObjectValid(oItem) == TRUE)
object oItem = GetFirstItemInInventory(oTarget);
while (GetIsObjectValid(oItem) == TRUE)
{
if (GetTag(oItem) == sItem)
{
nNumItems = nNumItems + GetNumStackedItems(oItem);
}
oItem = GetNextItemInInventory(oTarget);
}
return nNumItems;
}


int StartingConditional()
{
object oPC = GetPCSpeaker();

if (!(GetNumItems(oPC, "anneauduvillage") < 1))
{
ActionSpeakString("Vous avez deja un laisser passer, prenez le portail...");
return FALSE;
}
if (!(GetNumItems(oPC, "clefduchateau") < 1))
{
ActionSpeakString("Vous avez deja un laisser passer, prenez le portail...");
return FALSE;
}

return TRUE;

}

Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


voilà, merci d'avance....
_________________
Rien n'est grave dans la vie...sauf de la perdre...
Chroniques des Royaumes Perdus :
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Athanagorn
Acolyte
Inscrit le: 12 Déc 2004
Messages: 38
Répondre en citant
Posté le : 07/01/2005 09:28:18 Sujet du message :

Alors, premièrement, GetNumItem() est une fonction fournie par bioware dans "nw_i0_plot", donc il vaut mieux ne pas modifier son comportement, pour ne pas perturber les personnes qui (re)lisent le code. (C'est mieux quand la même fonction fait partout la même chose). (1)

Ensuite, pourquoi tu n'utilises pas GetItemPossessedBy() ou HasItem() qui sont les fonctions prévues pour faire la vérification d'objets? Au choix cela donne:
NWScript :
int StartingConditional()
{
  object oPC = GetPCSpeaker();
  if(GetItemPossessedBy(oPC, "anneauduvillage")!=OBJECT_INVALID
  || GetItemPossessedBy(oPC, "clefduchateau")!=OBJECT_INVALID)
  {
    ActionSpeakString("Vous avez deja un laisser passer, prenez le portail...");
    return FALSE;
  }
  return TRUE;
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

ou
NWScript :
#include "nw_i0_plot"
int StartingConditional()
{
  object oPC = GetPCSpeaker();
  if(HasItem(oPC, "anneauduvillage")
  || HasItem(oPC, "clefduchateau"))
  {
    ActionSpeakString("Vous avez deja un laisser passer, prenez le portail...");
    return FALSE;
  }
  return TRUE;
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


(1) Bien sûr, cela n'engage que moi.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Devilon Bersek
Ecuyer
Inscrit le: 13 Sep 2004
Messages: 59
Localisation: Certainement dans une forge...sinon a Beaune
Répondre en citant
Posté le : 07/01/2005 11:55:01 Sujet du message :

merci beaucoup, j'ai pas du tout pensé a ça ! Embarassed
j'ai toujours tendance a faire des trucs tordus, c'est pour ça ! Very Happy

encore merci !
_________________
Rien n'est grave dans la vie...sauf de la perdre...
Chroniques des Royaumes Perdus :
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 55.916ms