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 08:14:13
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 |
Jaha Effect Acolyte Messages: 39 |
Je vais donner une solution un peu différente à ton problème.
Tu veux compter le nombre de créature morte, pourquoi tu ne fais pas dropper a tes créatures un objet, un oeil ou quelque chose comme ça. Après il est tout simple de récupérer le nombre d'objet dans l'inventaire pour valider la quête ? Enfin moi je dis ça, ce n'est qu'une solution, pourquoi faire compliqué ... Jaha Effect |
Revenir en haut | |
Ak Darkster Grand Maître Chanteur du Conseil Messages: 1354 Localisation: canada |
Bon voici le script pour compter que j'utilise (Je sais qu'il est pas bon, mais je sais pas trop quel fonction je dois mettre pour qu'il aille chercher l'int du compteur.
Code : int StartingConditional()
[/code]{ // Inspect local variables if(!(GetLocalInt(GetPCSpeaker(), "cptmobs_sortie") == 9)) return FALSE; return TRUE; } _________________ On doit tous mourir un jour... mais pour moi, c'est pas demain la veille, alors sort tes armes sale dragon!!! |
Revenir en haut | |
Serguai Grand Chevalier Messages: 104 |
La tu teste le nombre de mobs que le pj qui parle (GetPCSpeaker) a tué....
Quel script as tu utilisé dans le ondeath des mobs ? |
Revenir en haut | |
Ak Darkster Grand Maître Chanteur du Conseil Messages: 1354 Localisation: canada |
celui-ci, doncça colle pas.
Code : ///////////////////////////////////////////
//:: Default:On Death //:: NW_C2_DEFAULT7 //:: Copyright (c) 2001 Bioware Corp. //:///////////////////////////////////////////// /* Shouts to allies that they have been killed */ //:///////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: Oct 25, 2001 //:///////////////////////////////////////////// #include "NW_I0_GENERIC" void main() { object oNPC = OBJECT_SELF; int nClass = GetLevelByClass(CLASS_TYPE_COMMONER); int nAlign = GetAlignmentGoodEvil(oNPC ); if(nClass > 0 && (nAlign == ALIGNMENT_GOOD || nAlign == ALIGNMENT_NEUTRAL)) { object oKiller = GetLastKiller(); AdjustAlignment(oKiller, ALIGNMENT_EVIL, 5); } int nTalkVolume = TALKVOLUME_SILENT_TALK; SpeakString("NW_I_AM_DEAD", nTalkVolume ); //Shout Attack my target, only works with the On Spawn In setup SpeakString("NW_ATTACK_MY_TARGET", nTalkVolume ); if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT)) SignalEvent(oNPC , EventUserDefined(1007)); // Partie concernant le comptage des Mobs a tuer : object oPNC = GetObjectByTag("maire"); string sVarName = "cptmobs_sortie"; int cpt = GetLocalInt(oPNC, sVarName); SetLocalInt(oPNC, sVarName, cpt+1); } _________________ On doit tous mourir un jour... mais pour moi, c'est pas demain la veille, alors sort tes armes sale dragon!!! |
Revenir en haut | |
Ak Darkster Grand Maître Chanteur du Conseil Messages: 1354 Localisation: canada |
He ho, y a quelqu'un qui peut m'aider, je suis pas capable de faire le script pour vérifier la variable du compteur.
_________________ On doit tous mourir un jour... mais pour moi, c'est pas demain la veille, alors sort tes armes sale dragon!!! |
Revenir en haut | |
Wololo Légende vivante Messages: 385 |
Code :
/////////////////////////////////////////// //:: Default:On Death //:: NW_C2_DEFAULT7 //:: Copyright (c) 2001 Bioware Corp. ////////////////////////////////////////////// /* Shouts to allies that they have been killed */ ////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: Oct 25, 2001 ////////////////////////////////////////////// #include "NW_I0_GENERIC" void main() { object oNPC = OBJECT_SELF; int nClass = GetLevelByClass(CLASS_TYPE_COMMONER); int nAlign = GetAlignmentGoodEvil(oNPC ); object oKiller = GetLastKiller(); if(nClass > 0 && (nAlign == ALIGNMENT_GOOD || nAlign == ALIGNMENT_NEUTRAL)) { AdjustAlignment(oKiller, ALIGNMENT_EVIL, 5); } int nTalkVolume = TALKVOLUME_SILENT_TALK; SpeakString("NW_I_AM_DEAD", nTalkVolume ); //Shout Attack my target, only works with the On Spawn In setup SpeakString("NW_ATTACK_MY_TARGET", nTalkVolume ); if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT)) SignalEvent(oNPC , EventUserDefined(1007)); // Partie concernant le comptage des Mobs a tuer : // object oPNC = GetObjectByTag("maire"); string sVarName = "cptmobs_sortie"; int cpt = GetLocalInt(oKiller, sVarName); SetLocalInt(oPNC, sVarName, cpt+1); } alors là, les variables ont stockées sur les PJs qui tuent les gobs .. si tu préféres une solution où la variable est stockée sur le Chef du groupe comme ca ca récompensera tout le groupe .. mais là j'ai un coup de barre : donc le bon script sera posté quand je saurai quel est le point faible de Zangdar (ép 15 du donjon de Naheulbeuk !) |
Revenir en haut | |
Serguai Grand Chevalier Messages: 104 |
Il faut faire un choix sur la façon dont tu veux résoudre le pb: Donner la récompense au premier qui viens la chercher, ou récompenser tout les PJ qui ont tués un certain nombre de gobs.
Ou alors autre solution, tu peux faire un script un peu plus complexe qui récompensera tout les PJ ayant participé à la tuerie... ca me semble faisable en manipulant le ondeath des gobs et en créant sur le module une liste des gens ayant tué au moins un gob. |
Revenir en haut | |
Ak Darkster Grand Maître Chanteur du Conseil Messages: 1354 Localisation: canada |
Ben, les monstres ne respawnent pas. Donc, je dirais récompenser tous ceux qui ont participés à la tuerie. Seulement, ce que je voulais savoir, c'est le script pour pouvoir lire la variable(suis nul )
_________________ On doit tous mourir un jour... mais pour moi, c'est pas demain la veille, alors sort tes armes sale dragon!!! |
Revenir en haut | |
Serguai Grand Chevalier Messages: 104 |
Voilà ce que je propose :
ondeath des mobs: Code : #include "NW_I0_GENERIC" void main() { int nClass = GetLevelByClass(CLASS_TYPE_COMMONER); int nAlign = GetAlignmentGoodEvil(OBJECT_SELF); if(nClass > 0 && (nAlign == ALIGNMENT_GOOD || nAlign == ALIGNMENT_NEUTRAL)) { object oKiller = GetLastKiller(); AdjustAlignment(oKiller, ALIGNMENT_EVIL, 5); } SpeakString("NW_I_AM_DEAD", TALKVOLUME_SILENT_TALK); //Shout Attack my target, only works with the On Spawn In setup SpeakString("NW_ATTACK_MY_TARGET", TALKVOLUME_SILENT_TALK); if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT)) { SignalEvent(OBJECT_SELF, EventUserDefined(1007)); } object module = GetModule(); //La tu comptes le nombre de mobs int cpt = GetLocalInt(module, "cptmobs"); SetLocalInt(module, "cptmobs", cpt+1); //la tu marque le fait que ton pj a bien tué au moins un gob SetLocalInt(GetLastKiller(), "haskilledgob",1); } Maintenant dans le text appear when de ta conversation en supposant qu'il y'a 10 gobs en tout, et en supposant que chacun des joueur doit venir parler au gars pour chercher sa récompense une fois les 10 gobs tués: Code : int StartingConditional() { if(GetLocalInt(GetModule(), "cptmobs")==10 && GetLocalInt(GetPCSpeaker(),"haskilledgob")==1) { //On s'assure que le PJ ne touchera qu'une fois sa récompense SetLocalInt(GetPCSpeaker(), "haskilledgob",2); return TRUE; } return FALSE; } sachant que le text appear when de ta conversation par défaut serait: Code : int StartingConditional() { if(GetLocalInt(GetPCSpeaker(),"haskilledgob")==0) return TRUE; return FALSE; } et celui d'un perso qui a déjà touché la récompense serait: Code : int StartingConditional() { if(GetLocalInt(GetPCSpeaker(),"haskilledgob")==2) return TRUE; return FALSE; } (avec un texte du style "Je vous ai déjà récompensé") Dernière édition par Serguai le 08/01/2003 11:18:03; édité 1 fois
|
Revenir en haut | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
|
Revenir en haut | |
Ak Darkster Grand Maître Chanteur du Conseil Messages: 1354 Localisation: canada |
Ouah, Serguai, dès que je peux, je mets ça. Super, merci beaucoup.
_________________ On doit tous mourir un jour... mais pour moi, c'est pas demain la veille, alors sort tes armes sale dragon!!! |
Revenir en haut | |
Wololo Légende vivante Messages: 385 |
mouais, moi je vois que jamais on met la variable à 2, alors pour marquer les PJs ... en effet pour marquer les PJ tu mets la variable à 1 ...
et tu testes si elle est égale à 2. |
Revenir en haut | |
Serguai Grand Chevalier Messages: 104 |
Vi petite erreur, j'édite
C'est le risque du copier coller Merci de l'avoir signalé ) |
Revenir en haut | |
Ak Darkster Grand Maître Chanteur du Conseil Messages: 1354 Localisation: canada |
Bon, j'arrive toujours pas à faire ça.
Premier script (sur les mobs): Code : //://////////////////////////////////////////////
//:: Default:On Death //:: NW_C2_DEFAULT7 //:: Copyright (c) 2001 Bioware Corp. //:///////////////////////////////////////////// /* Shouts to allies that they have been killed */ //:///////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: Oct 25, 2001 //:///////////////////////////////////////////// #include "NW_I0_GENERIC" void main() { object oNPC = OBJECT_SELF; int nClass = GetLevelByClass(CLASS_TYPE_COMMONER); int nAlign = GetAlignmentGoodEvil(oNPC ); if(nClass > 0 && (nAlign == ALIGNMENT_GOOD || nAlign == ALIGNMENT_NEUTRAL)) { object oKiller = GetLastKiller(); AdjustAlignment(oKiller, ALIGNMENT_EVIL, 5); } int nTalkVolume = TALKVOLUME_SILENT_TALK; SpeakString("NW_I_AM_DEAD", nTalkVolume ); //Shout Attack my target, only works with the On Spawn In setup SpeakString("NW_ATTACK_MY_TARGET", nTalkVolume ); if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT)) SignalEvent(oNPC , EventUserDefined(1007)); // Partie concernant le comptage des Mobs a tuer : object oPNC = GetObjectByTag("maire"); string sVarName = "cptmobs_sortie"; int cpt = GetLocalInt(oPNC, sVarName); SetLocalInt(oPNC, sVarName, cpt+1); } Deuxième code: dans la conversation(as-tu fini? oui(le script est là) non) Code : //::///////////////////////////////////////////////
//:: FileName conv_garde_yes //::////////////////////////////////////////////// //::////////////////////////////////////////////// //:: Created By: Script Wizard //:: Created On: 01/07/2002 22:18:48 //::////////////////////////////////////////////// int StartingConditional() { // Inspect local variables if(!(GetLocalInt(object oPNC = GetObjectByTag("maire")(), "cptmobs_sortie") == 9)) return FALSE; return TRUE; } _________________ On doit tous mourir un jour... mais pour moi, c'est pas demain la veille, alors sort tes armes sale dragon!!! |
Revenir en haut | |
Jedaï Chevalier Messages: 89 Localisation: Le Havre, ville pourrie |
C'est quoi cette m****, y a des parenthèses en trop là, et comment ça se fait que tu te réveille deux mois après ? Va faire les tutoriaux, si tu relisais ton script avec un oeil critique, tu trouverais ton erreur !
Bon je te met comme même la correction...grmbl, ces jeunes ! Code : //:ohwell.gif////////////////////////////////////////////// //:: FileName conv_garde_yes //:ohwell.gif///////////////////////////////////////////// //:ohwell.gif///////////////////////////////////////////// //:: Created By: Script Wizard //:: Created On: 01/07/2002 22:18:48 //::///////////////////////////////////////////// int StartingConditional() { return ( GetLocalInt( OBJECT_SELF, "cptmobs_sortie" ) >= 9 ); } |
Revenir en haut | |
Ak Darkster Grand Maître Chanteur du Conseil Messages: 1354 Localisation: canada |
J'ai essayé de faire les tutoriaux, mais je me suis perdu au milieu
Pourquoi je me réveille 2 mois après? parce que j'ai recommencé à travailler sérieusement sur le projet, après avoir croulé sous le boulot scolaire. _________________ On doit tous mourir un jour... mais pour moi, c'est pas demain la veille, alors sort tes armes sale dragon!!! |
Revenir en haut | |
Tyrion Ecuyer Messages: 43 |
puisque sa a l'air pour une quete il ne serai pas possible que lorsqu'on parle a un pnj il nous remette un contrat (par exemple) et de stokker le conteur sur se contrat . Ca ne permettrai pas desfois en multijoueur d'avoir plusieurs joueurs qui peuvent faire la quete en meme temps et recevoir chacun une recompense a la fin. J'entend par la que chaque joueur par exemple doit tuer 10 gobs et un fois fait een retournanyt le contrat au pnj celui ci lui echange contre la recompence ?
Merci de me repondre car cela pourrai me servir dans un quete a venir . Merci Tyrion |
Revenir en haut | |
omega Grand Chevalier Messages: 116 |
Perso, dans le OnDeath de la creature, je ferais un truc comme ca :
NWScript :
object oKiller = GetLastKiller(); int cpt = GetLocalInt(oKiller, "gob"); void main() { SetLocalInt(oKiller, "gob", cpt+1); SpeakString("")+ cpt +(" gob sur 10"); } Comme dis plus haut ! Puis, dans la condition d'un dialogue : NWScript :
int StartingConditional() { // Inspecter variables locales if(!(GetLocalInt(GetPCSpeaker(), "cpt") > 10)) return FALSE; return TRUE; } avec dans action consecance : NWScript :
void main() { GiveGoldToCreature(GetPCSpeaker(), 1000); GiveXPToCreature(GetPCSpeaker(), 1000); SetLocalInt(GetPCSpeaker(), "recompence", 1); } et enfin, je creer une autre ligne de dialogue, en tout premier pour le pnj : NWScript :
int StartingConditional() { // Inspecter variables locales if(!(GetLocalInt(GetPCSpeaker(), "recompence") == 1)) return FALSE; return TRUE; } avec resultat : Vous avez deja tué les gobs, je vous donne pas la recompense une seconde fois. En clair, ton dial ressemble : PNJ : (Condition "recompense"=1) vous avez deja tué les gobs ! Pj : Zut, ca marche pas plusieurs fois PNJ : (Condition "Gob">10) Bravo, voila votre recompense ! Pj : Merci PNJ : (Sans condition) Les gobs nous pourrisent la vie, tuez 10 des leurs ! Pj, d'accord, j'y vais |
Revenir en haut | |
Klemmth Seigneur Messages: 176 Localisation: france |
mdr, a mon avis en 2 ans, soit il a trouvé, soit il a abandonné ^^
_________________ ... |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
où peut-être est-il mort devant son PC en attendant une réponse...
_________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) |
Revenir en haut | |
omega Grand Chevalier Messages: 116 |
en fait, j'ai donne la solution, pour moi, car comme ca si j'ai fait une erreur, on la corrige, et pour ceux qui sont interres aussi
|
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Page 2 sur 2 ¤ Aller à la page Précédente 1, 2
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