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 28/12/2024 10:05:20
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 |
Cassin Papa-poule(t) & poissard intemporel Messages: 7471 Localisation: 6 bis rue de la Couveuse, Poulailler 39b |
Salut !
J'ai un petit problème dans le module de la Biblio, en fait je voudrais qu'un PNJ (Ashareth quoi ) lance des sorts contre la porte de la Biblio, sorts choisis au hasard dans une liste. Ca fonctionne bien sauf qu'au bout de 3-4 sorts, il s'arrête, je comprend pas pourquoi. Voilà le script que j'ai fais : Code : void main()
{ ActionWait (3.0); // le ActionWait ici est nécessaire car sinon on ne peut plus parler au personnage ! if (GetLocalInt(OBJECT_SELF, "porte_ouverte") != 1) { int iRandom = Random(12); // Là on tire au sort un nombre entre 1 et 12 pour choisir le sort à lancer if (iRandom == 1) { ActionCastSpellAtObject(SPELL_MAGIC_MISSILE, GetObjectByTag("PortesBiblio"), TRUE, 20); DelayCommand (3.0, ExecuteScript("os_ashareth", OBJECT_SELF)); // En virant le DelayCommand (pour ne garder que le ActionWait du début), le script en se réexécute pas... } if (iRandom == 2) { ActionCastSpellAtObject(SPELL_FIREBALL, GetObjectByTag("PortesBiblio"), TRUE, 20); DelayCommand (3.0, ExecuteScript("os_ashareth", OBJECT_SELF)); } if (iRandom == 3) { ActionCastSpellAtObject(SPELL_BURNING_HANDS, GetObjectByTag("PortesBiblio"), TRUE, 20); DelayCommand (3.0, ExecuteScript("os_ashareth", OBJECT_SELF)); } if (iRandom == 4) { ActionCastSpellAtObject(SPELL_CHAIN_LIGHTNING, GetObjectByTag("PortesBiblio"), TRUE, 20); DelayCommand (3.0, ExecuteScript("os_ashareth", OBJECT_SELF)); } if (iRandom == 5) { ActionCastSpellAtObject(SPELL_CONE_OF_COLD, GetObjectByTag("PortesBiblio"), TRUE, 20); DelayCommand (3.0, ExecuteScript("os_ashareth", OBJECT_SELF)); } if (iRandom == 6) { ActionCastSpellAtObject(SPELL_FLAME_ARROW, GetObjectByTag("PortesBiblio"), TRUE, 20); DelayCommand (3.0, ExecuteScript("os_ashareth", OBJECT_SELF)); } if (iRandom == 7) { ActionCastSpellAtObject(SPELL_COLOR_SPRAY, GetObjectByTag("PortesBiblio"), TRUE, 20); DelayCommand (3.0, ExecuteScript("os_ashareth", OBJECT_SELF)); } if (iRandom == 8) { ActionCastSpellAtObject(SPELL_LIGHTNING_BOLT, GetObjectByTag("PortesBiblio"), TRUE, 20); DelayCommand (3.0, ExecuteScript("os_ashareth", OBJECT_SELF)); } if (iRandom == 9) { ActionCastSpellAtObject(SPELL_MELFS_ACID_ARROW, GetObjectByTag("PortesBiblio"), TRUE, 20); DelayCommand (3.0, ExecuteScript("os_ashareth", OBJECT_SELF)); } if (iRandom == 10) { ActionCastSpellAtObject(SPELL_RAY_OF_ENFEEBLEMENT, GetObjectByTag("PortesBiblio"), TRUE, 20); DelayCommand (3.0, ExecuteScript("os_ashareth", OBJECT_SELF)); } if (iRandom == 11) { ActionCastSpellAtObject(SPELL_NEGATIVE_ENERGY_RAY, GetObjectByTag("PortesBiblio"), TRUE, 20); DelayCommand (3.0, ExecuteScript("os_ashareth", OBJECT_SELF)); } if (iRandom == 12) { ActionCastSpellAtObject(SPELL_RAY_OF_FROST, GetObjectByTag("PortesBiblio"), TRUE, 20); DelayCommand (3.0, ExecuteScript("os_ashareth", OBJECT_SELF)); } } } Quelqu'un à une idée du pourquoi du comment ??? _________________ Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ? http://cassin1306.spaces.live.com Dernière édition par Cassin le 14/01/2003 08:59:34; édité 1 fois
|
Revenir en haut | |
Serguai Grand Chevalier Messages: 104 |
C'est très simple:
Random(12) génère un chiffre compris entre 0 et 11. Hors dans le cas ou iRandom==0, tu ne fais rien du tout (donc ton script s'arrête dès que que random génère 0). Et plus encore, je dirai que ton magicien n'envoie jamais son ray of frost car iRandom ne peux pas valoir 12. A+ |
Revenir en haut | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
Effectivement... Moi aussi je me suis fait avoir justement aujourd'hui avec cette! (d'ailleurs, merci pour cette précision pourtant élémentaire Serguai!)... Pour palier à mon prob moi j'ai dû utiliser 'switch (d12())' en lieu et place du 'switch (Random(12))'...
A savoir... Code : // Get an integer between 0 and nMaxInteger-1. // Return value on error: 0 int Random(int nMaxInteger) Code : // Get the total from rolling (nNumDice x d12 dice). // - nNumDice: If this is less than 1, the value 1 will be used. int d12(int nNumDice=1) D'ailleurs, pourquoi n'utilises-tu pas plutôt switch que if?? _________________ Ca c'est Envoyé! Docteur Cool! Honorable Canard |
Revenir en haut | |
PetitPrince Super-Mouton Messages: 2043 Localisation: Asteroïde B-612 actuellement crashé en Suisse |
(Autre question dont la réponse pourrait fournir une réponse à la question de Cassin (vous avez suivi ? )
Quand on utilise la fonction ActionCastSpellAtObject, ça utilise des places du "reservoir" de sort du lanceur ? Parcque sinon c'est peut-être l'Ashareth qui est à court de sorts ) _________________ 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 | |
Serguai Grand Chevalier Messages: 104 |
Nop puisqu'il a mis bcheat à TRUE, donc il peut lancer le sort même s'il ne l'a pas en mémoire (et même si ce n'est pas un lanceur de sort en fait).
|
Revenir en haut | |
PetitPrince Super-Mouton Messages: 2043 Localisation: Asteroïde B-612 actuellement crashé en Suisse |
(ah mince j'avais pas vu)
_________________ 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 | |
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 |
Merci les gars ! En effet c'est élémentaire mais fallait y penser !
Sinon en jouant avec les balises META on peut faire une véritable mitrailleuse à sorts, j'avais fais le test avec les Missiles Magiques en Quicken Spell et sort instantané (pas d'incantation), c'est assez impressionnant quand on boucle sur le même script indéfiniment ! (mais un peu gonflant à la longue ) _________________ 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 |
C'est vrai que c'est facile de se faire piéger par ses trucs là. Il faut se dire que c'est sur le principe des tableaux, et dans tout langage de prog, les tableaux commencent à la case 0.
|
Revenir en haut | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
Merci pour cette précision très éclairante Serguai... d'autant il faut dire que, perso, moi et la programmation ça fait 2...
_________________ Ca c'est Envoyé! Docteur Cool! Honorable Canard |
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