La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 15/11/2024 11:19:49
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
gachyama Acolyte Messages: 37 Localisation: nice |
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; } 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 Alors si quelqu'un vois ou est le probleme je lui en serais reconnaissant. Voili merci beaucoup |
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
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; } Je l'ai testé rapidement, dis-moi si cela te convient... _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
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; } Le post précédent peut être supprimé par souci de clarté... _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
gachyama Acolyte Messages: 37 Localisation: nice |
Vui c'est sa j'ai testé et le script (deuxieme) marche super bien il verifie tout les items merci beaucoup tu me sauve la vie!!!
|
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
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; } 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 on apprends toujours de ses erreurs 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; } voilà, merci d'avance.... _________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
Athanagorn Acolyte Messages: 38 |
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; } 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; } (1) Bien sûr, cela n'engage que moi. |
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
merci beaucoup, j'ai pas du tout pensé a ça !
j'ai toujours tendance a faire des trucs tordus, c'est pour ça ! encore merci ! _________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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