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 23/11/2024 22:52:56
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 |
Le Blaireau Chevalier Messages: 71 |
Salut à tous..
Cette fois j'ai besoin de votre aide pour une condition d'exécution d'un dialogue. J'aimerais qu'un PNJ ne me parle que si, j'ai un casque spécifique sur la tête. Si je n'ai pas le casque ou si le casque dans mon inventaire mais que je ne le porte pas sur ma tête, il me dit un truc du genre... Je ne vous connais pas... Voilà et merci encore |
Revenir en haut | |
Seth de Sombrelune Seigneur Messages: 156 |
voici deux piste pour resoudre ton probleme, l'une avec un seul script, l'autre avec trois :
Piste 1 : dans ton script de condition, tu verifie que le slot casque est occupé par un item de tag bien definit (pas aurora sous les yeux, donc pas de ligne de commande dans l'immédiat). Avantage : un seul script Inconvegnent : plutot complexe comme script Piste 2 : Dans le "onEquipItem" du module, tu definit une variable local (locale pour un module solo, Campagne pour un multijoueur persistant) lorsque le joueur s'equipe du casque Dans le "OnUnEquipItem" tu suprime ta variable (local ou campagne) lorsqu'il se desequipe du casque Enfin, tu crrer une simple verification de variable dans la condition d'execution de ton script. Avantage : tres simple à réaliser Inconvegnents : plusieurs scripts - necessite de metre en place une base de donnée si on doit gerer un module persistant (avec reboot frequent). La seconde solution est assez simple à realiser. Edit : Moi j'opte pour la seconde solution. voici le set de scripts que j'utilise sur mon module afin de pas melanger les scripts : Dans les évenements du modules : OnPlayerEquipItem : NWScript :
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. OnPlayerUnEquipItem : NWScript :
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 nomme les scripts de l'EquipItem ainsi : eq_nomduscript Et ceux du UnEquipItem ainsi : uq_nomduscript ensuite tu créé le script du port du casque :eq_tagducasque NWScript :
//:///////////////////////// ///////////////////// //:: Name eq_tagducasque //:///////////////////////// //////////////////// /* place une variable locale sur le PJ losqu'il porte le casque */ //:///////////////////////// //////////////////// //:: Created By: //:: Created On: //:///////////////////////// //////////////////// void main() { object oItem = GetPCItemLastEquipped(); object oPC = GetPCItemLastEquippedBy(); if(GetTag(oItem)=="tagducasque") { SetLocalInt(oPC,"casque",1); } } Tu crée le script : uq_tagducasque NWScript :
//:///////////////////////// ///////////////////// //:: Name uq_tagducasque //:///////////////////////// //////////////////// /* place une variable locale au retrait du casque */ //:///////////////////////// //////////////////// //:: Created By: //:: Created On: //:///////////////////////// //////////////////// void main() { object oItem = GetPCItemLastUnequipped(); object oPC = GetPCItemLastUnequippedBy(); if(GetTag(oItem)=="tagducasque") { SetLocalInt(oPC,"casque",0); } } pour ta conversation, un script conditionnel ou tu verifie que la variable local "casque est bien à 1 ( je nomme mes script de condition avec en debut t_ ainsi je sait à quoi servent mes scripts : NWScript :
//:///////////////////////// ///////////////////// //:: FileName t_casque //:///////////////////////// //////////////////// //:///////////////////////// //////////////////// //:: Created By: Script Wizard //:: Created On: 07/07/2005 10:57:06 //:///////////////////////// //////////////////// int StartingConditional() { // Inspecter variables locales if(!(GetLocalInt(GetPCSpeaker(), "casque") == 1)) return FALSE; return TRUE; } Voila, ça c'est valable pour une version solo où il n'y a pas de reboot (qui memet automatiquement les variables locales à zéro !). |
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
Pour le tag du casque sa donnerai une ligne de test comme sa
NWScript :
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. après je sais pas se que sa retourne quand c'est vide mais bon. _________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
Le Blaireau Chevalier Messages: 71 |
Oh la la !
Tout ça pour un seul PNJ???. J'ai trouvé un script à placer dans la condition d'exécution du dialogue qui fait l'inverse. Si le joueur porte son casque ou à une arme à la main, le PNJ refuse de lui parler... Voici ce script. Y a t'il un moyen de le modifier pour qu'il fasse l'inverse, donc ne pas adresser la parole si le joueur ne porte pas un certain casque? NWScript : int StartingConditional() { object item; object oPC = GetPCSpeaker(); // Add the gender restrictions if((item = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC))!=OBJECT_INVALID) return FALSE; if((item = GetItemInSlot(INVENTORY_SLOT_HEAD,oPC))!=OBJECT_INVALID) return FALSE; return TRUE; } |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Remplacer les TRUE par des FALSE, et les FALSE par des TRUE, tout simplement
_________________ » Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine » 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII |
Revenir en haut | |
Seth de Sombrelune Seigneur Messages: 156 |
Oui en effet, j'avoue que j'ai tendence à tuer les moustiques avec un bazzoka...
Essaye avec ceci, c'est le script conditionel pour ouvrir le dialogue, change le TAG_CASQUE par celui de ton casque, il fonctionne. NWScript : int StartingConditional() { object item; object oPC = GetPCSpeaker(); // Add the gender restrictions if(GetTag(GetItemInSlot(INVENTORY_SLOT_HEAD, GetPCSpeaker())) == "TAG_CASQUE") return TRUE; return FALSE; } |
Revenir en haut | |
Le Blaireau Chevalier Messages: 71 |
Le petit dernier fonctionne parfaitement
Merci |
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