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 20:52:27
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 |
PetitPrince Super-Mouton Messages: 2043 Localisation: Asteroïde B-612 actuellement crashé en Suisse |
Posté le : 24/12/2003 10:50:40 Sujet du message : [XPModule] Incrémentation, je l'ai dans le [BIIIIP]
Voilà un bout de script, placé sur le onhearthbeat d'une zone (oui, c'est mal mais le module est petit):
NWScript :
void main() { string s09 = IntToString(d10()); object oWaySpawn = GetWaypointByTag("SpawnMonstre_0"+s09); object oPJ = GetFirstPC(); string sCreature = GetLocalString(oPJ,"Creature"); int NbrPresentCreature = GetLocalInt(oPJ,"NbrPresentCreature"); int NbrHereCreature = GetLocalInt(oPJ,"NbrHereCreature"); int NbrCreature = GetLocalInt(oPJ,"NbrCreature"); if(GetLocalInt(oPJ,"Combat")==1) { if(GetLocalInt(oPJ,"NbrCreature")!=0) { if(NbrHereCreature <= NbrPresentCreature) { if(sCreature=="goblin") { switch(Random(3)) { case 0: CreateObject(OBJECT_TYPE_CREATURE,"h_gobelin1",GetLocation(oWaySpawn),FALSE,"Invoc"); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3),GetLocation(oWaySpawn)); case 1: CreateObject(OBJECT_TYPE_CREATURE,"h_gobelin2",GetLocation(oWaySpawn),FALSE,"Invoc"); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3),GetLocation(oWaySpawn)); case 2: CreateObject(OBJECT_TYPE_CREATURE,"h_gobelin3",GetLocation(oWaySpawn),FALSE,"Invoc"); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3),GetLocation(oWaySpawn)); case 3: CreateObject(OBJECT_TYPE_CREATURE,"h_gobelin4",GetLocation(oWaySpawn),FALSE,"Invoc"); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3),GetLocation(oWaySpawn)); } } if(sCreature=="kobold") { switch(Random(4)) { case 0: CreateObject(OBJECT_TYPE_CREATURE,"h_kobold1",GetLocation(oWaySpawn),FALSE,"Invoc"); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3),GetLocation(oWaySpawn)); case 1: CreateObject(OBJECT_TYPE_CREATURE,"h_kobold2",GetLocation(oWaySpawn),FALSE,"Invoc"); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3),GetLocation(oWaySpawn)); case 2: CreateObject(OBJECT_TYPE_CREATURE,"h_kobold3",GetLocation(oWaySpawn),FALSE,"Invoc"); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3),GetLocation(oWaySpawn)); case 3: CreateObject(OBJECT_TYPE_CREATURE,"h_kobold4",GetLocation(oWaySpawn),FALSE,"Invoc"); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3),GetLocation(oWaySpawn)); case 4: CreateObject(OBJECT_TYPE_CREATURE,"h_kobold5",GetLocation(oWaySpawn),FALSE,"Invoc"); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3),GetLocation(oWaySpawn)); } } NbrHereCreature++ ; NbrCreature-- ; } } if(GetLocalInt(oPJ,"NbrCreature")==0) { SetLocalInt(GetFirstPC(),"Combat",0); FloatingTextStringOnCreature("Vous avez fini le combat",oPJ); } } } L'effet désiré est d'invoquer une petite horde de monstre (j'ai mis quelque execute script pour spawner les monstres plus vite), cette horde étant limité à NbrCreature dans la reserve (= qui ne combattent pas) et NbrPresentCreature dans le champs de bataille (ceux-ci étant pioché dans la reserve). Quand la reserve est épuisée, on arrête le spawnage. Pour ce faire, j'ai décidé d'incrementer une autre variable (NbrHereCreature) à chaque spawnage (et de le decrementer à sa mort avec un OnDeath modifié), et également de décrémenter la variable NbrCreature, pour faire vider la reserve. Le problème, c'est qu'en test (avec des Speakstring de variable habilement mis), il veut pas m'incrementer le salaud... J'ai beau avoir fait 3 fois le tour du script, je vois pas mon erreur, et puisqu'on est toujours mieux corrigé par les autres, je vous demande ce qui va pas dans ce fp2!3(49tu@4q%t de script. Edit de finipe : super à la bourre et très prude comme d'habitude, je mets une censure sur un des termes de ton titre EDIT de PP qui vient après celui de finipe: _________________ b-612.yi.org (chez moi) | tetrisconcept.com (LE site sur Tetris) | Grospixels (c'était mieux avant) | Geekzone (for and by crazy geeks) Securom, ça suxe Dernière édition par PetitPrince le 06/01/2004 18:43:14; édité 1 fois
|
Revenir en haut | |
k0rvet Ecuyer Messages: 67 |
Bah, je sais pas si c'est normal, mais ce qui me chifonne, c'est que tu incrémentes NbrHereCreature et décrémente NbrCreature, mais après, tu ne les stocke pas à l'aide d'un SetLocalInt(). Donc si le script est appelé 2 fois, les valeurs n'auront pas changé.
C'est normal? Sinon va falloir chercher aut'chose. _________________ Moi j'dis ca, mais bon j'dis rien hein? ..:: Les Chroniques de la Terre du Milieu ::.. |
Revenir en haut | |
PetitPrince Super-Mouton Messages: 2043 Localisation: Asteroïde B-612 actuellement crashé en Suisse |
Les SetLocalInt se trouvent autre part, dans des dialogues
_________________ b-612.yi.org (chez moi) | tetrisconcept.com (LE site sur Tetris) | Grospixels (c'était mieux avant) | Geekzone (for and by crazy geeks) Securom, ça suxe |
Revenir en haut | |
k0rvet Ecuyer Messages: 67 |
Etrange ca...
Je sais pas si je suis dans le vrai, mais a la fin de ton script, tes deux variables sont effacées non? Alors si tu les stocke à partir d'un autre script, elles seront égales à 0... A moins que tu n'ai pas mis tout ton script et que tu les passe dans une fonction? Je sais je m'obstine, mais la y a quelque chose qui m'échappe _________________ Moi j'dis ca, mais bon j'dis rien hein? ..:: Les Chroniques de la Terre du Milieu ::.. |
Revenir en haut | |
PetitPrince Super-Mouton Messages: 2043 Localisation: Asteroïde B-612 actuellement crashé en Suisse |
Ben lse variables sont définie par trois script mises dans un dialogue. Trois exemples
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. 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. 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. J'aurai fait une grosse bourde sur l'incrémentation ? _________________ b-612.yi.org (chez moi) | tetrisconcept.com (LE site sur Tetris) | Grospixels (c'était mieux avant) | Geekzone (for and by crazy geeks) Securom, ça suxe |
Revenir en haut | |
k0rvet Ecuyer Messages: 67 |
Ok, donc la tu as initialisé correctement ces trois variables, pas de pb.
Mais dans ton script, tu fais la chose suivante: *essaye d'être clair* Code : int NbrHereCreature = GetLocalInt(oPJ,"NbrHereCreature"); - Tu assignes à l'entier NbrHereCreature la valeur contenue dans "NbrHereCreature". - Ensuite tu incrémentes NbrHereCreature, pas de pb. Mais ca ne vaut pas dire que la valeur contenue dans "NbrHereCreature" a changée. Il faut ensuite faire un Code : SetLocalInt(oPJ, "NbrHereCreature", NbrHereCreature); La tu aura modifié le contenu de ta variable locale. En fait, pour pas te planter, quand tu assignes le contenu d'une variable à une autre variable que tu as déclarée, change de nom: Exemple: Code : int iNbrHereCreature = GetLocalInt(oPJ,"NbrHereCreature"); iNbrHereCreature++; SetLocalInt(oPJ, "NbrHereCreature", iNbrHereCreature); Pour des variables de type int, mets ixxx pour les strings, sxxx etc... Ca évitera des confusions. Amicalement. [edit] code pas bon _________________ Moi j'dis ca, mais bon j'dis rien hein? ..:: Les Chroniques de la Terre du Milieu ::.. |
Revenir en haut | |
PetitPrince Super-Mouton Messages: 2043 Localisation: Asteroïde B-612 actuellement crashé en Suisse |
Merci bien. l'incrémentation marche (le reste *hum*... mais c'est des trucs basiques)
k0rvet a écrit : Pour des variables de type int, mets ixxx pour les strings, sxxx etc... Ca évitera des confusions. Citation : string s09 = IntToString(d10());
(oui, je suis en fainéant)(maisjepensaispasqueçaposeraitautantdeproblèmedonc)object oWaySpawn = GetWaypointByTag("SpawnMonstre_0"+s09); object oPJ = GetFirstPC(); string sCreature = GetLocalString(oPJ,"Creature"); _________________ b-612.yi.org (chez moi) | tetrisconcept.com (LE site sur Tetris) | Grospixels (c'était mieux avant) | Geekzone (for and by crazy geeks) Securom, ça suxe |
Revenir en haut | |
Cassin Papa-poule(t) & poissard intemporel Messages: 7471 Localisation: 6 bis rue de la Couveuse, Poulailler 39b |
/me débarque après la bataille
Alors qu'en est-il ? Le problème est-il résolu ? _________________ Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ? http://cassin1306.spaces.live.com |
Revenir en haut | |
PetitPrince Super-Mouton Messages: 2043 Localisation: Asteroïde B-612 actuellement crashé en Suisse |
Ca incrémente correctement, il arrête un peu près comme je veux, mais ça me spawne trop (cf. mail que je t'ai envoyé).
_________________ b-612.yi.org (chez moi) | tetrisconcept.com (LE site sur Tetris) | Grospixels (c'était mieux avant) | Geekzone (for and by crazy geeks) Securom, ça suxe |
Revenir en haut | |
Cassin Papa-poule(t) & poissard intemporel Messages: 7471 Localisation: 6 bis rue de la Couveuse, Poulailler 39b |
OK, donc j'essaierais de voir ce que je peux faire...
En ce moment je suis en train de refaire le XPModule en version NwN only (puisqu'on ne peut malheureusement pas revenir en arrière, même en supprimant les éléments des add-ons ), avec quelques petites modifs, donc je me pencherais sur la question... _________________ Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ? http://cassin1306.spaces.live.com |
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