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 06:45:07
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 |
Ak Darkster Grand Maître Chanteur du Conseil Messages: 1354 Localisation: canada |
Voilà, pour le module: les modules reliés entre eux, j'ai une mini-quête qui consiste à tuer tous les gobs en dehors de la ville. J'avais pensé utiliser simplement un objet quelconque qui se trouverait sur le chef, mais ils pourraient simplement aller tuer le chef et ce serait fini.
Il me faudrait donc un compteur de monstres et au bout de X monstres, paf, le donneur de quête dirait qu'on a fini. Je sais pas trop comment faire. Si vous avez d'autres manières de faire, je serais très interessé. Il y a eu une message similaire, mais j'arrive pas à le trouver. _________________ On doit tous mourir un jour... mais pour moi, c'est pas demain la veille, alors sort tes armes sale dragon!!! |
Revenir en haut | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
Ouaip! Salut aussi et de rien d'avance...
Sinon, tu peux utiliser le OnExhausted des 'Recontres' je crois bien... _________________ Ca c'est Envoyé! Docteur Cool! Honorable Canard |
Revenir en haut | |
Serguai Grand Chevalier Messages: 104 |
Ben pquoi pas tout simplement ca: (a rajouter dans le ondeath des mobs)
Code : int cpt = GetLocalInt(GetModule(),"cptmobs"); SetLocalInt(GetModule(),"cptmobs",cpt+1); |
Revenir en haut | |
Ak Darkster Grand Maître Chanteur du Conseil Messages: 1354 Localisation: canada |
Merci, j'essaie ça demain.
_________________ On doit tous mourir un jour... mais pour moi, c'est pas demain la veille, alors sort tes armes sale dragon!!! |
Revenir en haut | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
|
Revenir en haut | |
Cassin Papa-poule(t) & poissard intemporel Messages: 7471 Localisation: 6 bis rue de la Couveuse, Poulailler 39b |
Par contre avec ça tu ne peux pas utiliser d'Encounters, vu que le nombre de monstres qui sont générés dépend du niveau des joueurs, tu risques de ne pas tomber sur le nombre de monstres prévu au départ.
_________________ Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ? http://cassin1306.spaces.live.com |
Revenir en haut | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
Effectivement Cassin... si ce n'est que le nombre n'est peut-être pas une fin en soi cependant (après tout, l'essentiel est de tuer tous les mobs, point!)...
_________________ Ca c'est Envoyé! Docteur Cool! Honorable Canard |
Revenir en haut | |
Ak Darkster Grand Maître Chanteur du Conseil Messages: 1354 Localisation: canada |
Non, j'utilise pas d'encounter. Donc, ça devrait marcher.
Edit: Euh, Void main avant et après ou pas? _________________ On doit tous mourir un jour... mais pour moi, c'est pas demain la veille, alors sort tes armes sale dragon!!! |
Revenir en haut | |
Cassin Papa-poule(t) & poissard intemporel Messages: 7471 Localisation: 6 bis rue de la Couveuse, Poulailler 39b |
Heu... Avant ou après quoi ?
Moi je ferais quelque chose comme ça : Code : object oKiller = GetLastKiller(); int cpt = GetLocalInt(oKiller, "gob"); void main() { SetLocalInt(oKiller, "gob", cpt+1); } Bon j'ai pas testé mais ça devrait marcher. _________________ Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ? http://cassin1306.spaces.live.com |
Revenir en haut | |
Serguai Grand Chevalier Messages: 104 |
Vi cassin mais tout le pb après est de connaître le nombre à tester pour la fin de la quête (et la récompense ?) ...
Si tu mets la variable sur OKiller et que plusieurs personnages participent à la tuerie, ca va être difficile d'arriver à tes fins ... Ceci dis avec ma solution ce n'est pas beaucoup mieux: un fois tout les gobs tués, le premier arrivé est le premier servis pour la récompense ... |
Revenir en haut | |
Wololo Légende vivante Messages: 385 |
et en utilisant les 2 solutions ? à savoir que tous les monstres sont morts (solution de Serquai) et le PJ a participé au massacre (la solution de Cassin), hein ? Sinon, ben on peut mettre un quota de gob mort pour toucher la récompense ...
|
Revenir en haut | |
Serguai Grand Chevalier Messages: 104 |
Oui, ça me semble un bon compromis, parce qu'autrement je ne vois pas comment faire ...
|
Revenir en haut | |
Cassin Papa-poule(t) & poissard intemporel Messages: 7471 Localisation: 6 bis rue de la Couveuse, Poulailler 39b |
Oui, c'est vrai, j'ai tendance à toujours penser solo et pas assez multi...
Bah c'est pas un gros problème, suffit de stocker la variable en question sur le PNJ qui donne la quête, comme ça pas de problème. Remplace le Code : object oKiller = GetLastKiller();
par Code : object oPNJ = GetObjectByTag("TagDuPNJ");
et le tour est joué ! (par contre pense à remplacer tous les oKiller du script par des oPNJ) _________________ Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ? http://cassin1306.spaces.live.com |
Revenir en haut | |
Ak Darkster Grand Maître Chanteur du Conseil Messages: 1354 Localisation: canada |
Bon ça marche pas donc, je l'affiche: (p.s: le donneur de quête n'est pas dans la même zone que 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() { 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 oPNJ = GetObjectByTag("maire"); int cpt = GetLocalInt(oPnj, "cptmobs_sortie"); void main() { SetLocalInt(oPnj, "cptmobs_sortie", cpt+1); } } Il y a un void main de trop, mais ça m'affiche ceci: cptmobs_add.nss(35): ERROR: VARIABLE DEFINED WITHOUT TYPE _________________ On doit tous mourir un jour... mais pour moi, c'est pas demain la veille, alors sort tes armes sale dragon!!! |
Revenir en haut | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
Heeuuu... jamais de 'void main' ensemble, Diantre! 'main' veut dire 'Majeur" ... il ne peut y avoir 2 Majeurs! enfin, bon... gaffe aussi à la déclaration de tes Variables (oPNJ != oPnj)...
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); } _________________ Ca c'est Envoyé! Docteur Cool! Honorable Canard |
Revenir en haut | |
Ak Darkster Grand Maître Chanteur du Conseil Messages: 1354 Localisation: canada |
Bon Cassin qu'est-ce que tu as à dire pour ta défense(je le savais que le 2e était de trop)
_________________ On doit tous mourir un jour... mais pour moi, c'est pas demain la veille, alors sort tes armes sale dragon!!! |
Revenir en haut | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
Ben... vu qu'il savait pas quelle utilisation tu voulais faire de sa proposition, je le comprends bien... et de rien tout de même...
_________________ Ca c'est Envoyé! Docteur Cool! Honorable Canard |
Revenir en haut | |
Daermon Légende vivante Messages: 356 Localisation: Près de 4-1 |
ho, les gars, doucement avec vos scripts ! j'y comprend rien ! je trouve ça vachement dur à comprendre...
_________________ "Dans la vie, chacun prend son propre chemin. Mais en fin de compte, on se retrouve tous au même endroit..." |
Revenir en haut | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
Bôah... tu sais Daermon, là c un peu normal qu'on est mis un Script comme ça, vu que c une reprise du "Script par défaut" du 'OnDeath' des Créatures... Et pis, perso, je m'y suis mis il y a juste un mois, tu sais...
_________________ Ca c'est Envoyé! Docteur Cool! Honorable Canard |
Revenir en haut | |
Cassin Papa-poule(t) & poissard intemporel Messages: 7471 Localisation: 6 bis rue de la Couveuse, Poulailler 39b |
Ak Darkster a écrit : Bon Cassin qu'est-ce que tu as à dire pour ta défense(je le savais que le 2e était de trop) Hein, quoi, comment, quid ?
Ben moi je t'ai donné un script avec UN SEUL void main(), après je pouvais pas savoir que tu voulais compiler 2 scripts en un seul ! Sinon, le fait que le PNJ ne soit pas dans la même zone ne change rien si tu utilises "GetObjectByTag("tag")", ça va chercher dans toutes les zones. _________________ Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ? http://cassin1306.spaces.live.com |
Revenir en haut | |
Daermon Légende vivante Messages: 356 Localisation: Près de 4-1 |
Coolstar, tu me rassure ! mais comment tu as fait pour tout comprendre ?
_________________ "Dans la vie, chacun prend son propre chemin. Mais en fin de compte, on se retrouve tous au même endroit..." |
Revenir en haut | |
Ak Darkster Grand Maître Chanteur du Conseil Messages: 1354 Localisation: canada |
Bon ça marche toujours pas. Ça doit être au niveau de la vérification du nombre. Ça devrait être quoi le script?
Moi, j'ai utilisé le script de vérification(comme quand tu veux qu'un perso qui a déjà parlé au Pnj ne se fasse pas dire la même chose quand il lui reparle. Je l'ai pas sous la main, c'est mon frère qui a l'ordi là. Quelqu'un peut m'aider avec ça? _________________ 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 |
bah fais "crier" les variables par le PNJ quand les PJS reviennent pour vois si la quête est finie ...
|
Revenir en haut | |
Ak Darkster Grand Maître Chanteur du Conseil Messages: 1354 Localisation: canada |
Désolé, mais je comprends vraiment pas ce que tu veux dire. Je dis que mon vérificateur pour le compteur à pas l'air de fonctionner. Dès que je peux je poste mon script utilisé.
_________________ 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 |
bah en gros faut débugger à la main le script .. alors moi je fais des crier (SpeakString en shout/crier) de l'état de mes variables histoires de voir si les bons scripts se sont déclenchés ...
après il faut juste commenter les lignes et voilà, il n'y parait plus ... donc, si tu faisais afficher artificiellement les variables tu verais si le compte de monstres correspond ou pas au nombre de monstre tués ... |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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