La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 01/11/2024 00:00:34


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
venuma
Novice
Inscrit le: 17 Jan 2003
Messages: 6
Localisation: Palais, Melandis
Répondre en citant
Posté le : 21/02/2003 15:08:57 Sujet du message : loot aléatoire en %

Je suis à la recherche d'un renseignement.
J'ai une créature et je veus qu'elle drope aléatoirement des loots du style
10% de chance d'avoir une potion
10% de chance d'avoir 5po
10% de chance d'avoir 10po
5% de chance d'avoir un parcho
2% de chance d'avoir une arme de base
2% de chance d'avoir un objet spécifique
1% de chance d'avoir 50po
60% de chance de ne rien droper

A mon avis, c configurable dans le script onspawn de la créature à la ligne "GenerateNPCTreasure();"

Voilà (grrrrrrr je ne trouve rien sur le net sur ce sujet)

Que TALOS soit indulgent avec votre misérable vie.


NB : Faut vraiment que je me mette à scripter serieusement
_________________
L'oeil de TALOS est parmis vous!
Cité du chaos Forums Melandis
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ronbond
Voyageur
Inscrit le: 01 Fév 2003
Messages: 2
Répondre en citant
Posté le : 21/02/2003 15:32:22 Sujet du message :

Tu peux regarder comment bioware a concu la fonction GenerateNpcTreasure() dans la biblio NW_O2_CONINCLUDE ca pourra peut etre t'aider Smile
Bon courage
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Wololo
Légende vivante
Inscrit le: 13 Déc 2002
Messages: 385
Répondre en citant
Posté le : 21/02/2003 16:52:02 Sujet du message :

bah euh, tu fais une fonction qui tire un nombre aléatoire, et tu traites chque cas, avec un switch() ... case ...

mais cette solution est exclusive cad qu'un seul loot pourra être droppé et non pas de l'or + un parcho, c'est pour ca que je t'invite à inclure un pourcentage de chance de retirage ...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jedaï
Chevalier
Inscrit le: 14 Nov 2002
Messages: 89
Localisation: Le Havre, ville pourrie
Répondre en citant
Posté le : 21/02/2003 17:59:56 Sujet du message :

Bah oui mais le switch...case, c'est pas génial avec les pourcentages, si tu tiens au pourcentages (dans ton exemple c'est pas du tout indispensable), il faut plutôt utiliser un "nRand = Random(100);" puis des une suite de if...else if...else qui contrôle dans quel intervalle se trouve nRand. Le mieux c'est encore de faire sa bibliothèque spécialisée, avec quelques fonctions qui permettent de spécifier les quantités et les types d'objets attendus... Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
venuma
Novice
Inscrit le: 17 Jan 2003
Messages: 6
Localisation: Palais, Melandis
Répondre en citant
Posté le : 21/02/2003 19:45:34 Sujet du message :

Je pense à un truc de ce style (c du brut de fonderie fait sur notepad au taf)

Vous en penssez quoi?
Ca ne marche surment pas Smile

Code :
// Random_loot_V_0.1 (Beta Version)                        //
// Script de génération aléatoire de loot sur une créature //
// Créé par VENUMA                                         //
// [http]                                     //
//
//
void main()
{
string Item1 = ("mettre le loot ici");
string Item2 = ("  ");
string Item3 = ("  ");
string Item4 = ("  ");
.....etc.............
string Item46 = ("  ");
string Item47 = ("  ");
string Item48 = ("  ");
string Item49 = ("  ");
string Item50 = ("  ");

switch(Random(49))
      {
 case 0: GenerateTreasure(Item1, OBJECT_SELF, OBJECT_SELF);
        break;
 case 1: GenerateTreasure(Item2, OBJECT_SELF, OBJECT_SELF);
        break;
 case 2: GenerateTreasure(Item3, OBJECT_SELF, OBJECT_SELF);
        break;
 case 3: GenerateTreasure(Item4, OBJECT_SELF, OBJECT_SELF);
        break;
 case 4: GenerateTreasure(Item5, OBJECT_SELF, OBJECT_SELF);
        break;
 case 5: GenerateTreasure(Item6, OBJECT_SELF, OBJECT_SELF);
        break;
 case 6: GenerateTreasure(Item7, OBJECT_SELF, OBJECT_SELF);
        break;
 case 7: GenerateTreasure(Item8, OBJECT_SELF, OBJECT_SELF);
        break;
 case 8: GenerateTreasure(Item9, OBJECT_SELF, OBJECT_SELF);
        break;
 case 9: GenerateTreasure(Item10, OBJECT_SELF, OBJECT_SELF);
        break;
 .....etc.............
case 44: GenerateTreasure(Item45, OBJECT_SELF, OBJECT_SELF);
        break;
 case 45: GenerateTreasure(Item46, OBJECT_SELF, OBJECT_SELF);
        break;
 case 46: GenerateTreasure(Item47, OBJECT_SELF, OBJECT_SELF);
        break;
 case 47: GenerateTreasure(Item48, OBJECT_SELF, OBJECT_SELF);
        break;
 case 48: GenerateTreasure(Item49, OBJECT_SELF, OBJECT_SELF);
        break;
 case 49: GenerateTreasure(Item50, OBJECT_SELF, OBJECT_SELF);
        break;
         }

_________________
L'oeil de TALOS est parmis vous!
Cité du chaos Forums Melandis
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jedaï
Chevalier
Inscrit le: 14 Nov 2002
Messages: 89
Localisation: Le Havre, ville pourrie
Répondre en citant
Posté le : 21/02/2003 21:29:24 Sujet du message :

Non,non, GenerateTreasure() est une fonction de génération aléatoire d'item... Or ce que tu veux c'est gérer toi même la génération d'objet...
Il faut donc que tu utilise la méthode standard CreateItemOnObject() !
Je pense que tu devrais lire quelques tutoriaux sur le script si tu ne connais pas cette fonction. Confused
De plus, tu avoueras qu'il serait beaucoup plus simple d'utiliser cette structure :

Code :

void main()
{
    string sRef;
   
    switch( Random( 10 ) + 1 )
    {
    case 1 :
    {
        sRef = "blueprint1";
        break;
    }
    case 2 :
    {
        sRef = "blueprint2";
        break;
    }
    case 3 :
    {
        sRef = "blueprint3";
        break;
    }
    case 4 :
    {
        sRef = "blueprint4";
        break;
    }
    case 5 :
    {
        sRef = "blueprint5";
        break;
    }
    case 6 :
    {
        sRef = "blueprint6";
        break;
    }
    case 7 :
    {
        sRef = "blueprint7";
        break;
    }
    case 8 :
    {
        sRef = "blueprint8";
        break;
    }
    case 9 :
    {
        sRef = "blueprint9";
        break;
    }
    case 10 :
    {
        sRef = "blueprint10";
        break;
    }
    }
   
    CreateItemOnObject(sRef);
}
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
venuma
Novice
Inscrit le: 17 Jan 2003
Messages: 6
Localisation: Palais, Melandis
Répondre en citant
Posté le : 23/02/2003 14:51:48 Sujet du message :

Merci, je vais tester ton code pour voir.
Je redonne des nouvelles Smile
_________________
L'oeil de TALOS est parmis vous!
Cité du chaos Forums Melandis
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
venuma
Novice
Inscrit le: 17 Jan 2003
Messages: 6
Localisation: Palais, Melandis
Répondre en citant
Posté le : 24/02/2003 07:27:55 Sujet du message :

Ton script fonctionne à merveille, merci.
TALOS sera indulgent avec ta misérable vie.
_________________
L'oeil de TALOS est parmis vous!
Cité du chaos Forums Melandis
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Psychopompos
Seigneur
Inscrit le: 10 Fév 2008
Messages: 209
Localisation: Ici
Répondre en citant
Posté le : 08/11/2008 20:12:39 Sujet du message :

Bonjour. Désolé pour le déterrage du topic, ce script semble être ce dont j'aurais besoin mais je ne comprends pas où le mettre.
"sRef" : pas de problème.

Mais :
- où indique-t-on le pourcentage de chance du drop ?
- dans quel script de créatures et à quel emplacement du script faut-il insérer le script de Jedaï ?

Merci d'avance. Very Happy
_________________
"Oh Destin cruel! Cruel, cruel cruel Destin! Oh cruauté du destin!"
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Noon
Héros
Inscrit le: 15 Jan 2005
Messages: 272
Localisation: Entre Vannes et les RO
Répondre en citant
Posté le : 09/11/2008 00:34:12 Sujet du message :

Salut,
Je pense que ce script doit aller dans le onspawn (ou dans le ondeath mais j'ai un doute), et si tu le copie tel quel, il faut que tu remplace complètement le script d'origine.

Pour le pourcentage, "switch( Random( 10 ) + 1 ) " choisit un nombre entre 1 et 10, "case 1" s'exécute si le 1 a été choisi ... Donc si tu veux que seulement 2 objets puissent être droppés en 50/50, soit tu mets l'objet1 dans les case 1 à 5, et le 2 dans les case 6 à 10, soit tu changes "switch( Random( 2) + 1 )" et tu ne mets qu'un case 1 et un case 2, par exemple.
Voilà je ne saurais pas en dire plus, je n'ai jamais beaucoup utilisé les probabilités sur nwn.
_________________
Beshaba me protège, Tymora guide mes tirs.

The Cake is a lie !

Mes modules NwN2:De Vieilles Rencontres! et De Vieilles Rencontres2
Double Avenir sur le Nwvault
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Psychopompos
Seigneur
Inscrit le: 10 Fév 2008
Messages: 209
Localisation: Ici
Répondre en citant
Posté le : 09/11/2008 15:47:12 Sujet du message :


Noon a écrit :
Salut,
Je pense que ce script doit aller dans le onspawn (ou dans le ondeath mais j'ai un doute), et si tu le copie tel quel, il faut que tu remplace complètement le script d'origine.
Si j'enlève carrément le onspawn ou le ondeath qui est présent par défaut, ça pose problème ?

Ca doit aller dans le onspawn, il me semble avoir une fois testé un module où j'avais enlevé les ondeath sans les remplacer par quoi que ce soit, j'ai continué à avoir des drops aléatoires.

Si ça ne marche pas : est-il possible de supprimer purement et simplement tout drop autre que ce que la créature doit dropper d'après les données de gestion de son inventaire ? (je sais déjà comment empêcher la génération automatique d'objets dans les contenants fixes : en virant les deux scripts)
_________________
"Oh Destin cruel! Cruel, cruel cruel Destin! Oh cruauté du destin!"
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Noon
Héros
Inscrit le: 15 Jan 2005
Messages: 272
Localisation: Entre Vannes et les RO
Répondre en citant
Posté le : 12/11/2008 20:33:25 Sujet du message :

Je ne pense pas que ça changera grand chose si tu change le onspawn par défaut, par ton script.
Il me semble qu'il y a une ligne commentée pour le drop des monstres dans le onspawn par défaut de toute manière.
Je n'ai que nwn2 sous la main mais je regarderai demain ces scripts.
_________________
Beshaba me protège, Tymora guide mes tirs.

The Cake is a lie !

Mes modules NwN2:De Vieilles Rencontres! et De Vieilles Rencontres2
Double Avenir sur le Nwvault
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Psychopompos
Seigneur
Inscrit le: 10 Fév 2008
Messages: 209
Localisation: Ici
Répondre en citant
Posté le : 12/11/2008 21:56:15 Sujet du message :

Merci pour la suggestion. Je viens d'ouvrir un script OnSpawn (celui du gobelin de base). Quasiment à la fin du script j'ai trouvé ça :

NWScript :
//* Create a small amount of treasure on the creature
    if ((GetLocalInt(GetModule(), "X2_L_NOTREASURE") == FALSE) &&
        (GetLocalInt(OBJECT_SELF, "X2_L_NOTREASURE") == FALSE) )
    {
        CTG_GenerateNPCTreasure(TREASURE_TYPE_MONSTER, OBJECT_SELF);
    }
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 je remplace les deux FALSE par deux TRUE, ça désactive complétement le spawn aléatoire d'objets normaux du module (sachant que j'ai créé mes propres potions de couleur différente et que mon module ne met pas en scène les Royaumes Oubliés) ? Ca sera le principal, ajouter un script de loot aléatoire personnalisé ne serait qu'un petit plus sans véritable importance.
_________________
"Oh Destin cruel! Cruel, cruel cruel Destin! Oh cruauté du destin!"
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Noon
Héros
Inscrit le: 15 Jan 2005
Messages: 272
Localisation: Entre Vannes et les RO
Répondre en citant
Posté le : 12/11/2008 23:07:45 Sujet du message :

Tu fais ça // c'est moins compliqué. Et tu rajoute ton script à la fin du onspawn (sans le void main).
NWScript :
//* Create a small amount of treasure on the creature
//if ((GetLocalInt(GetModule(), "X2_L_NOTREASURE") == FALSE) &&
//(GetLocalInt(OBJECT_SELF, "X2_L_NOTREASURE") == FALSE) )
//{
//CTG_GenerateNPCTreasure(TREA SURE_TYPE_MONSTER, OBJECT_SELF);
//}
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.

_________________
Beshaba me protège, Tymora guide mes tirs.

The Cake is a lie !

Mes modules NwN2:De Vieilles Rencontres! et De Vieilles Rencontres2
Double Avenir sur le Nwvault
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Psychopompos
Seigneur
Inscrit le: 10 Fév 2008
Messages: 209
Localisation: Ici
Répondre en citant
Posté le : 13/11/2008 17:07:46 Sujet du message :

OK. Merci.
_________________
"Oh Destin cruel! Cruel, cruel cruel Destin! Oh cruauté du destin!"
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Psychopompos
Seigneur
Inscrit le: 10 Fév 2008
Messages: 209
Localisation: Ici
Répondre en citant
Posté le : 08/12/2008 14:22:08 Sujet du message :

Désolé de répondre aussi tard mais au moment où on m'a répondu j'avais provisoirement lâché NWN.
L'astuce donnée par Noon fonctionne.Very Happy
_________________
"Oh Destin cruel! Cruel, cruel cruel Destin! Oh cruauté du destin!"
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé 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 39.559ms