La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 17/05/2024 05:59:51


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 03/08/2004 19:28:36 Sujet du message : une générateur aléatoire d'objets qui marche pas...

Bonjour à tous!
J'ai eu l'idée de faire un unique script pour tous les contenants peu importants dans mon module, qui génère un certain nombre d'items configurable via une variable à placer dans le contenant.

De plus on peut aussi choisir les items qu'on veut qu'il génère, en mettant leur resref dans une variable du contenant aussi.

Ce qui marche dans mon script : il génère bien des objets aléatoires et ceux parmi les choix qu'on lui a indiqué
Ce qui ne marche pas : il génère un nombre d'objets différent de celui qu'on a imposé.

NWScript :

/*
random spawn customizable -> 1 seul script pour tout plein de possibilites
*/
//:: Created By:    Tuyen
////////////////////////////////////////////////////////////////////////////////

void main()
{

//------------- preliminaire ---------------------------------------------------
    // si le contenant a deja ete ouvert, ne rien faire
    int iDeja_ouv = GetLocalInt (OBJECT_SELF, "deja_ouv");
    if (iDeja_ouv != 0)
        {return;}

    // sinon lancer le random_spawn et marquer le contenant comme deja ouvert
    SetLocalInt (OBJECT_SELF, "deja_ouv", 1);


//------------- identifications des variables-----------------------------------
    // nombre d'objets generes
    int iIt_Nbr_Gen = GetLocalInt (OBJECT_SELF, "it_nbr_gen");
    // nombre de choix possibles
    int iIt_Nbr_Pos = GetLocalInt (OBJECT_SELF, "it_nbr_pos");

    // resref de ces objets (15 maxi)
    string sItemTemp001 = GetLocalString (OBJECT_SELF, "itemtemp_001");
    string sItemTemp002 = GetLocalString (OBJECT_SELF, "itemtemp_002");
    string sItemTemp003 = GetLocalString (OBJECT_SELF, "itemtemp_003");
    string sItemTemp004 = GetLocalString (OBJECT_SELF, "itemtemp_004");
    string sItemTemp005 = GetLocalString (OBJECT_SELF, "itemtemp_005");
    string sItemTemp006 = GetLocalString (OBJECT_SELF, "itemtemp_006");
    string sItemTemp007 = GetLocalString (OBJECT_SELF, "itemtemp_007");
    string sItemTemp008 = GetLocalString (OBJECT_SELF, "itemtemp_008");
    string sItemTemp009 = GetLocalString (OBJECT_SELF, "itemtemp_009");
    string sItemTemp010 = GetLocalString (OBJECT_SELF, "itemtemp_010");
    string sItemTemp011 = GetLocalString (OBJECT_SELF, "itemtemp_011");
    string sItemTemp012 = GetLocalString (OBJECT_SELF, "itemtemp_012");
    string sItemTemp013 = GetLocalString (OBJECT_SELF, "itemtemp_013");
    string sItemTemp014 = GetLocalString (OBJECT_SELF, "itemtemp_014");
    string sItemTemp015 = GetLocalString (OBJECT_SELF, "itemtemp_015");


//------------- Spawn des items ------------------------------------------------

    // cree autant d'objets que la variable "it_nbr_gen" l'indique
    // chacun de ces objets est choisi parmi les 15 resref indiques dans les
    // variables "itemtemp_001" -> "itemtemp_015"
    // on est oblige d'indiquer ces variables

    while ( iIt_Nbr_Gen >= 0)
    {
      switch (iIt_Nbr_Pos)
      {
      // si le nombre d'item possible = 0, fin du programme
      case 0 :
      {return;}

      case 1 :
      {
        CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
      }

      case 2 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1  : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
            case 2  : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
        }
      }

      case 3 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1  : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
            case 2  : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
            case 3  : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1);
        }
      }

      case 4 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1  : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
            case 2  : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
            case 3  : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1);
            case 4  : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1);
        }
      }

      case 5 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1  : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
            case 2  : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
            case 3  : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1);
            case 4  : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1);
            case 5  : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1);
        }
      }

      case 6 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1  : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
            case 2  : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
            case 3  : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1);
            case 4  : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1);
            case 5  : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1);
            case 6  : CreateItemOnObject (sItemTemp006, OBJECT_SELF, 1);
        }
      }

      case 7 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1  : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
            case 2  : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
            case 3  : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1);
            case 4  : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1);
            case 5  : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1);
            case 6  : CreateItemOnObject (sItemTemp006, OBJECT_SELF, 1);
            case 7  : CreateItemOnObject (sItemTemp007, OBJECT_SELF, 1);
        }
      }

      case 8 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1  : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
            case 2  : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
            case 3  : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1);
            case 4  : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1);
            case 5  : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1);
            case 6  : CreateItemOnObject (sItemTemp006, OBJECT_SELF, 1);
            case 7  : CreateItemOnObject (sItemTemp007, OBJECT_SELF, 1);
            case 8  : CreateItemOnObject (sItemTemp008, OBJECT_SELF, 1);
        }
      }

      case 9 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1  : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
            case 2  : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
            case 3  : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1);
            case 4  : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1);
            case 5  : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1);
            case 6  : CreateItemOnObject (sItemTemp006, OBJECT_SELF, 1);
            case 7  : CreateItemOnObject (sItemTemp007, OBJECT_SELF, 1);
            case 8  : CreateItemOnObject (sItemTemp008, OBJECT_SELF, 1);
            case 9  : CreateItemOnObject (sItemTemp009, OBJECT_SELF, 1);
        }
      }

      case 10 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1  : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
            case 2  : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
            case 3  : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1);
            case 4  : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1);
            case 5  : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1);
            case 6  : CreateItemOnObject (sItemTemp006, OBJECT_SELF, 1);
            case 7  : CreateItemOnObject (sItemTemp007, OBJECT_SELF, 1);
            case 8  : CreateItemOnObject (sItemTemp008, OBJECT_SELF, 1);
            case 9  : CreateItemOnObject (sItemTemp009, OBJECT_SELF, 1);
            case 10 : CreateItemOnObject (sItemTemp010, OBJECT_SELF, 1);
        }
      }

      case 11 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1  : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
            case 2  : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
            case 3  : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1);
            case 4  : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1);
            case 5  : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1);
            case 6  : CreateItemOnObject (sItemTemp006, OBJECT_SELF, 1);
            case 7  : CreateItemOnObject (sItemTemp007, OBJECT_SELF, 1);
            case 8  : CreateItemOnObject (sItemTemp008, OBJECT_SELF, 1);
            case 9  : CreateItemOnObject (sItemTemp009, OBJECT_SELF, 1);
            case 10 : CreateItemOnObject (sItemTemp010, OBJECT_SELF, 1);
            case 11 : CreateItemOnObject (sItemTemp011, OBJECT_SELF, 1);
        }
      }

      case 12 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1  : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
            case 2  : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
            case 3  : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1);
            case 4  : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1);
            case 5  : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1);
            case 6  : CreateItemOnObject (sItemTemp006, OBJECT_SELF, 1);
            case 7  : CreateItemOnObject (sItemTemp007, OBJECT_SELF, 1);
            case 8  : CreateItemOnObject (sItemTemp008, OBJECT_SELF, 1);
            case 9  : CreateItemOnObject (sItemTemp009, OBJECT_SELF, 1);
            case 10 : CreateItemOnObject (sItemTemp010, OBJECT_SELF, 1);
            case 11 : CreateItemOnObject (sItemTemp011, OBJECT_SELF, 1);
            case 12 : CreateItemOnObject (sItemTemp012, OBJECT_SELF, 1);
        }
      }

      case 13 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1  : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
            case 2  : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
            case 3  : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1);
            case 4  : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1);
            case 5  : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1);
            case 6  : CreateItemOnObject (sItemTemp006, OBJECT_SELF, 1);
            case 7  : CreateItemOnObject (sItemTemp007, OBJECT_SELF, 1);
            case 8  : CreateItemOnObject (sItemTemp008, OBJECT_SELF, 1);
            case 9  : CreateItemOnObject (sItemTemp009, OBJECT_SELF, 1);
            case 10 : CreateItemOnObject (sItemTemp010, OBJECT_SELF, 1);
            case 11 : CreateItemOnObject (sItemTemp011, OBJECT_SELF, 1);
            case 12 : CreateItemOnObject (sItemTemp012, OBJECT_SELF, 1);
            case 13 : CreateItemOnObject (sItemTemp013, OBJECT_SELF, 1);
        }
      }

      case 14 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1  : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
            case 2  : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
            case 3  : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1);
            case 4  : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1);
            case 5  : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1);
            case 6  : CreateItemOnObject (sItemTemp006, OBJECT_SELF, 1);
            case 7  : CreateItemOnObject (sItemTemp007, OBJECT_SELF, 1);
            case 8  : CreateItemOnObject (sItemTemp008, OBJECT_SELF, 1);
            case 9  : CreateItemOnObject (sItemTemp009, OBJECT_SELF, 1);
            case 10 : CreateItemOnObject (sItemTemp010, OBJECT_SELF, 1);
            case 11 : CreateItemOnObject (sItemTemp011, OBJECT_SELF, 1);
            case 12 : CreateItemOnObject (sItemTemp012, OBJECT_SELF, 1);
            case 13 : CreateItemOnObject (sItemTemp013, OBJECT_SELF, 1);
            case 14 : CreateItemOnObject (sItemTemp014, OBJECT_SELF, 1);
        }
      }

      case 15 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1  : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
            case 2  : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
            case 3  : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1);
            case 4  : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1);
            case 5  : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1);
            case 6  : CreateItemOnObject (sItemTemp006, OBJECT_SELF, 1);
            case 7  : CreateItemOnObject (sItemTemp007, OBJECT_SELF, 1);
            case 8  : CreateItemOnObject (sItemTemp008, OBJECT_SELF, 1);
            case 9  : CreateItemOnObject (sItemTemp009, OBJECT_SELF, 1);
            case 10 : CreateItemOnObject (sItemTemp010, OBJECT_SELF, 1);
            case 11 : CreateItemOnObject (sItemTemp011, OBJECT_SELF, 1);
            case 12 : CreateItemOnObject (sItemTemp012, OBJECT_SELF, 1);
            case 13 : CreateItemOnObject (sItemTemp013, OBJECT_SELF, 1);
            case 14 : CreateItemOnObject (sItemTemp014, OBJECT_SELF, 1);
            case 15 : CreateItemOnObject (sItemTemp015, OBJECT_SELF, 1);
        }// fin du petit switch
      }// fin du case 15
      }// fin du grand switch
      iIt_Nbr_Gen = iIt_Nbr_Gen - 1;
    } // fin de la boucle while

} // fin du void main
Le code a colorer syntaxiquement est trop long (plus de 10240 caractères) et risque de ne pas s'afficher du tout. Vous pouvez le voir en version colorée ici.


Bon ca a été long, merci de vos réponses!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 09/08/2004 00:58:23 Sujet du message :

Allez! Il a l'air long mais en fait l'algo est simple à comprendre, il y a que du copier coller!

(de toutes facons je suis trop nul pour faire des scripts compliqués! là!)Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Archéops
Ecuyer
Inscrit le: 03 Mai 2004
Messages: 55
Répondre en citant
Posté le : 09/08/2004 07:53:38 Sujet du message :

Salut...
Je vais essayé de t'aider mais je ne garantie pas le résultat..
Déjà d'aprés ce que tu as écrit tu crées iIt_Nbr_Gen + 1 objets dans le coffre. En effet le test >=0 comprend le zéro donc pour 5 par exemple ça fait 5 4 3 2 1 0 donc mieux vaut mettre une inégalité stricte. Pour l'instant c'est tout ce que j'ai trouvé...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Fantome
Ecuyer
Inscrit le: 06 Nov 2002
Messages: 63
Répondre en citant
Posté le : 09/08/2004 12:07:42 Sujet du message :

Hello,

NWScript :
switch (iIt_Nbr_Pos)
      {
      // si le nombre d'item possible = 0, fin du programme
      case 0 :
      {return;}

      case 1 :
      {
        CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
      }

      case 2 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1 : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
            case 2 : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
        }

/* warning: 2 unclosed block {} */
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.


Si iIt_Nbr_Pos = 2, alors tu vas te brancher sur le 'case 2' et à se moment tu fais un random sur iIt_Nbr_Pos (valeurs posibles : 0,1 et 2) auquel tu ajoutes 1. ce qui fait que si tu tombes sur le 3 par exemple dans ton switch (iRandom) tu as pas traité ce cas. Est ce normal ? (tu as le même cas pour tous les 'case' suivants.)
Car si je suis bien ton script, il est fort possible que tu tombes dans ce cas. Et si tu y tombes alors il se passe rien (pas de création) :
imagine un peu que tu aies un nombre à généré = 4, tu t'attends à avoir 4 objets de générés, or lors du random tu peux tomber dans le cas que j'ai cité, par exemple une fois ,et donc alors tu te retrouves plus qu'avec 3 objects de générés et non 4 prévu par ta variable.

Je pense que ton problème peux donc venir de là.

De plus, comme là indiqué Archéops, tu géneres un objet de plus que celui indiqué dans ta variable.

Voilà,

a+
_________________
Arcantia
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 09/08/2004 16:56:57 Sujet du message :

Ben je pensais qu'un random(n) ca renvoyait un nombre compris entre 0 et n-1?
ex : random(5) renvoie 0, 1, 2, 3 ou 4. J'additionne 1 pour qu'il me renvoie 1, 2, 3, 4, 5... comme ça je m'y retrouve mieux c'est tout...

mais je vais commencer par enlever ce +1, et on verra ce que ca fera...
Pour l'instant le bug c'est qu'il me génère invariablement 75 objets pour une boucle for et 30 objets pour une boucle while (allez savoir pourquoi! lol)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Archéops
Ecuyer
Inscrit le: 03 Mai 2004
Messages: 55
Répondre en citant
Posté le : 10/08/2004 07:49:45 Sujet du message :

Pour le random tu as raison Tuyen, il renvoie les valeurs de 0 a n-1... J'ai trouvé un autre truc dérangeant dans ton script, les accolades.
Tu as écrit ça :

NWScript :
while ( iIt_Nbr_Gen >= 0)
{
switch (iIt_Nbr_Pos)
{
// si le nombre d'item possible = 0, fin du programme
case 0 :
{return;}

case 1 :
{
CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
}

case 2 :
{
int iRandom = (Random (iIt_Nbr_Pos)) + 1;
switch (iRandom)
{
case 1 : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
case 2 : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
}
}

case 3 :
{
int iRandom = (Random (iIt_Nbr_Pos)) + 1;
switch (iRandom)
{
case 1 : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
case 2 : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);
case 3 : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1);
}
}

/* warning: 2 unclosed block {} */
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.


Regarde bien dans le premier cas, tu écris case 0 puis tu mets deux accolades alors que dans les autre cas tu n'as pas mis d'accolades. Je te propose d'essayer de mettre des accolades sur chaque cas.
NWScript :

switch (iIt_Nbr_Pos)
    {
      // si le nombre d'item possible = 0, fin du programme
      case 0 :
      {return;}

      case 1 :
      {
        CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);
      }

      case 2 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1 :{ CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);}
            case 2 :{ CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);}
        }
      }

      case 3 :
      {
        int iRandom = (Random (iIt_Nbr_Pos)) + 1;
        switch (iRandom)
        {
            case 1 :{ CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1);}
            case 2 :{ CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1);}
            case 3 :{ CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1);}
        }
      }

/* warning: 1 unclosed block {} */
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.


Ca change peut être rien mais avec les ordinateurs on sait jamais....
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 12/08/2004 19:55:22 Sujet du message :

C'est bon! Il marche! Si ca vous dit, je le mets ici
(en fait je sais toujours pas d'où vient l'erreur, je pense que c'est du à un trop grand nombre de cas... enfin bref, j'ai mis des if tous les 3 cas et apparament ca marche! )

NWScript :

/*
random spawn customizable -> 1 seul script pour tout plein de possibilites
*/

//:: Created By:    Tuyen
////////////////////////////// ////////////////////////////// ////////////////////

void main()
{

//------------- preliminaire ------------------------------ ---------------------
    // si le contenant a deja ete ouvert, ne rien faire
    int iDeja_ouv = GetLocalInt (OBJECT_SELF, "deja_ouv");
    if (iDeja_ouv != 0)
        {return;}

    // sinon lancer le random_spawn et marquer le contenant comme deja ouvert
    SetLocalInt (OBJECT_SELF, "deja_ouv", 1);


//------------- identifications des variables--------------------- --------------
    // nombre d'objets generes
    int iIt_Nbr_Gen = GetLocalInt (OBJECT_SELF, "it_nbr_gen");
    int iIt_Nbr_Pos = GetLocalInt (OBJECT_SELF, "it_nbr_pos");

    // resref de ces objets (15 maxi)
    string sItemTemp001 = GetLocalString (OBJECT_SELF, "itemtemp_001");
    string sItemTemp002 = GetLocalString (OBJECT_SELF, "itemtemp_002");
    string sItemTemp003 = GetLocalString (OBJECT_SELF, "itemtemp_003");
    string sItemTemp004 = GetLocalString (OBJECT_SELF, "itemtemp_004");
    string sItemTemp005 = GetLocalString (OBJECT_SELF, "itemtemp_005");
    string sItemTemp006 = GetLocalString (OBJECT_SELF, "itemtemp_006");
    string sItemTemp007 = GetLocalString (OBJECT_SELF, "itemtemp_007");
    string sItemTemp008 = GetLocalString (OBJECT_SELF, "itemtemp_008");
    string sItemTemp009 = GetLocalString (OBJECT_SELF, "itemtemp_009");
    string sItemTemp010 = GetLocalString (OBJECT_SELF, "itemtemp_010");



//------------- Spawn des items ------------------------------ ------------------

    // cree autant d'objets que la variable "it_nbr_gen" l'indique
    // chacun de ces objets est choisi parmi les 10 resref indiques dans les
    // variables "itemtemp_001" -> "itemtemp_010"
    // on est oblige d'indiquer ces variables

    int i;
    for (i=0; i<(iIt_Nbr_Gen); i++)
    {
//**************************** ****************************** *****
      if ((iIt_Nbr_Pos == 0) || (iIt_Nbr_Pos > 11))
      {return;}

//**************************** ****************************** *****
      else if (iIt_Nbr_Pos <=3)
      {
      switch (iIt_Nbr_Pos)
        {
        case 1 :
          { CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1); }


        case 2 :
        { int iRandom = Random (iIt_Nbr_Pos);
            switch (iRandom)
            {
              case 0 : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1); break;
              case 1 : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1); break;
            }
          }

        case 3 :
        { int iRandom = Random (iIt_Nbr_Pos);
            switch (iRandom)
            {
              case 0 : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1); break;
              case 1 : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1); break;
              case 2 : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1); break;
            }
        }
        }
      }

//**************************** ****************************** *****
      else if (iIt_Nbr_Pos >3 && iIt_Nbr_Pos <=6)
      {
        switch (iIt_Nbr_Pos)
        {
        case 4 :
          { int iRandom = Random (iIt_Nbr_Pos);
            switch (iRandom)
            {
              case 0 : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1); break;
              case 1 : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1); break;
              case 2 : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1); break;
              case 3 : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1); break;
            }
          }

        case 5 :
          { int iRandom = Random (iIt_Nbr_Pos);
            switch (iRandom)
            {
              case 0 : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1); break;
              case 1 : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1); break;
              case 2 : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1); break;
              case 3 : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1); break;
              case 4 : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1); break;
            }
          }

        case 6 :
          { int iRandom = Random (iIt_Nbr_Pos);
            switch (iRandom)
            {
              case 0 : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1); break;
              case 1 : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1); break;
              case 2 : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1); break;
              case 3 : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1); break;
              case 4 : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1); break;
              case 5 : CreateItemOnObject (sItemTemp006, OBJECT_SELF, 1); break;
            }
          }
        }
      }

//**************************** ****************************** *****
      else if (iIt_Nbr_Pos >6 && iIt_Nbr_Pos <=9)
      {
        switch (iIt_Nbr_Pos)
        {
        case 7 :
          { int iRandom = Random (iIt_Nbr_Pos);
            switch (iRandom)
            {
              case 0 : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1); break;
              case 1 : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1); break;
              case 2 : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1); break;
              case 3 : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1); break;
              case 4 : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1); break;
              case 5 : CreateItemOnObject (sItemTemp006, OBJECT_SELF, 1); break;
              case 6 : CreateItemOnObject (sItemTemp007, OBJECT_SELF, 1); break;
            }
          }

        case 8 :
          { int iRandom = Random (iIt_Nbr_Pos);
            switch (iRandom)
            {
              case 0 : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1); break;
              case 1 : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1); break;
              case 2 : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1); break;
              case 3 : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1); break;
              case 4 : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1); break;
              case 5 : CreateItemOnObject (sItemTemp006, OBJECT_SELF, 1); break;
              case 6 : CreateItemOnObject (sItemTemp007, OBJECT_SELF, 1); break;
              case 7 : CreateItemOnObject (sItemTemp008, OBJECT_SELF, 1); break;
            }
          }

        case 9 :
          { int iRandom = Random (iIt_Nbr_Pos);
            switch (iRandom)
            {
              case 0 : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1); break;
              case 1 : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1); break;
              case 2 : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1); break;
              case 3 : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1); break;
              case 4 : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1); break;
              case 5 : CreateItemOnObject (sItemTemp006, OBJECT_SELF, 1); break;
              case 6 : CreateItemOnObject (sItemTemp007, OBJECT_SELF, 1); break;
              case 7 : CreateItemOnObject (sItemTemp008, OBJECT_SELF, 1); break;
              case 8 : CreateItemOnObject (sItemTemp009, OBJECT_SELF, 1); break;
            }
          }
        }
      }

      else
      {
            int iRandom = Random (iIt_Nbr_Pos);
            switch (iRandom)
            {
              case 0 : CreateItemOnObject (sItemTemp001, OBJECT_SELF, 1); break;
              case 1 : CreateItemOnObject (sItemTemp002, OBJECT_SELF, 1); break;
              case 2 : CreateItemOnObject (sItemTemp003, OBJECT_SELF, 1); break;
              case 3 : CreateItemOnObject (sItemTemp004, OBJECT_SELF, 1); break;
              case 4 : CreateItemOnObject (sItemTemp005, OBJECT_SELF, 1); break;
              case 5 : CreateItemOnObject (sItemTemp006, OBJECT_SELF, 1); break;
              case 6 : CreateItemOnObject (sItemTemp007, OBJECT_SELF, 1); break;
              case 7 : CreateItemOnObject (sItemTemp008, OBJECT_SELF, 1); break;
              case 8 : CreateItemOnObject (sItemTemp009, OBJECT_SELF, 1); break;
              case 9 : CreateItemOnObject (sItemTemp010, OBJECT_SELF, 1); break;
            }// fin du petit switch
      }
    } // fin de la boucle for
} // fin du void main
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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger 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 74.068ms