La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 02/05/2024 00:47:27


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 26/12/2002 11:11:37 Sujet du message : [BBMOD] Script qui ne se répète que 3 ou 4 fois

Salut !

J'ai un petit problème dans le module de la Biblio, en fait je voudrais qu'un PNJ (Ashareth quoi Very Happy) 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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Serguai
Grand Chevalier
Inscrit le: 07 Déc 2002
Messages: 104
Répondre en citant
Posté le : 26/12/2002 13:51:58 Sujet du message :

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.

Very Happy

A+
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Numéro ICQ Ignorer l'utilisateur
 
coolstar
Grand Chevalier
Inscrit le: 16 Oct 2002
Messages: 148
Localisation: Les Mondes - Chambre 270997
Répondre en citant
Posté le : 26/12/2002 19:38:08 Sujet du message :

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... Very Happy

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?? Wink
_________________
Very Happy Ca c'est Envoyé!

Docteur Cool! Honorable Canard Cool
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
PetitPrince
Super-Mouton
Inscrit le: 12 Sep 2002
Messages: 2043
Localisation: Asteroïde B-612 actuellement crashé en Suisse
Répondre en citant
Posté le : 26/12/2002 20:02:53 Sujet du message :

(Autre question dont la réponse pourrait fournir une réponse à la question de Cassin (vous avez suivi ? Smile )
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 Very Happy )
_________________
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 Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Serguai
Grand Chevalier
Inscrit le: 07 Déc 2002
Messages: 104
Répondre en citant
Posté le : 26/12/2002 20:07:04 Sujet du message : nop

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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Numéro ICQ Ignorer l'utilisateur
 
PetitPrince
Super-Mouton
Inscrit le: 12 Sep 2002
Messages: 2043
Localisation: Asteroïde B-612 actuellement crashé en Suisse
Répondre en citant
Posté le : 26/12/2002 20:30:52 Sujet du message :

(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 Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
coolstar
Grand Chevalier
Inscrit le: 16 Oct 2002
Messages: 148
Localisation: Les Mondes - Chambre 270997
Répondre en citant
Posté le : 26/12/2002 20:35:49 Sujet du message :

Smile
_________________
Very Happy Ca c'est Envoyé!

Docteur Cool! Honorable Canard Cool
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 01/01/2003 11:29:26 Sujet du message :

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 Wink )
_________________
Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ?

http://cassin1306.spaces.live.com
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Serguai
Grand Chevalier
Inscrit le: 07 Déc 2002
Messages: 104
Répondre en citant
Posté le : 01/01/2003 18:31:35 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Numéro ICQ Ignorer l'utilisateur
 
coolstar
Grand Chevalier
Inscrit le: 16 Oct 2002
Messages: 148
Localisation: Les Mondes - Chambre 270997
Répondre en citant
Posté le : 01/01/2003 18:47:22 Sujet du message :

Merci pour cette précision très éclairante Serguai... d'autant il faut dire que, perso, moi et la programmation ça fait 2... Very Happy
_________________
Very Happy Ca c'est Envoyé!

Docteur Cool! Honorable Canard Cool
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Montrer les messages depuis :
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


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 26.15ms