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 15:55:17
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 |
Shishio-Erehiko Novice Messages: 7 |
Bonjour,
après une longue recherche sur le forum script j'ai pas trouvé mon bonheur a part ce script ci dessous. Il répond parfaitement a ce que j'ai besoin, cad : -Respawn apres un certain temps -% de change par objet NWScript :
//::////////////////////////// ///////////////////// //:: OnOpenCoffre //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////// //////////////////// /* Ce script permet de faire respawn les items d'un coffre avec une probabilite. Pour l'utiliser : Le coffre doit avoir un tag de la forme "X_ce que vous voulez" avec pour X l'intervalle de temps en seconde entre 2 respawns. Puis il faut placer dedans les items qui doivent respawn, avec un tag de la forme "n_resref" ou "n" est le pourcentage de chance que l'item apparaisse et "resref" le resref de l'item en question. */ //::////////////////////////// //////////////////// //:: Created By: Tahlion, beta et modifs par Mercius //:: Created On: 12/05/2003 18:36 //::////////////////////////// //////////////////// void main() { int iNbItem = GetLocalInt(OBJECT_SELF,"nombre_item"); if(iNbItem == 0) { object oItem = GetFirstItemInInventory(OBJECT_SELF); int i = 0; while(GetIsObjectValid(oItem))//boucle... { i++; string sTagProba = GetTag(oItem); //on prend la partie droite de l'item, donc le resref SetLocalString(OBJECT_SELF,"item" + IntToString(i), GetStringRight(sTagProba, GetStringLength(sTagProba) - 1 - FindSubString(sTagProba,"_"))); //on prend la partie gauche, donc le pourcentage de chance d'apparition de l'item SetLocalInt(OBJECT_SELF,"proba" +IntToString(i), StringToInt(GetStringLeft(sTagProba, FindSubString(sTagProba,"_")))); //on detruit l'item DestroyObject(oItem); oItem = GetNextItemInInventory(OBJECT_SELF); } SetLocalInt(OBJECT_SELF,"nombre_item",i); SetLocalInt(OBJECT_SELF,"okgenere",1);//on peut generer les items maintenant iNbItem = i; } if(iNbItem > 0 && GetLocalInt(OBJECT_SELF,"okgenere") == 1)//si la boucle ci-dessus a ete faite { int i; for(i = 1; i <= iNbItem; i++) { //si l'item n'existe pas deja dans le coffre if(!GetIsObjectValid(GetItemPossessedBy(OBJECT_SELF, GetLocalString(OBJECT_SELF, "item" + IntToString(i))))) { //on calcul avec le pourcentage, pour savoir si l'item doit apparaitre ou pas if(d100() <= GetLocalInt(OBJECT_SELF,"proba" + IntToString(i))) { //on cree l'item CreateItemOnObject(GetLocalString(OBJECT_SELF,"item" + IntToString(i))); } } } SetLocalInt(OBJECT_SELF, "okgenere", 0); string sTagSelf = GetTag(OBJECT_SELF); DelayCommand(StringToFloat(GetStringLeft(sTagSelf, FindSubString(sTagSelf,"_"))), SetLocalInt(OBJECT_SELF, "okgenere", 1)); } } ////////////////////////////// ////////////////////////////// /////////////////// ////////////////////////////// ////////////////////////////// /////////////////// ////////////////////////////// ////////////////////////////// /////////////////// /*Si votre coffre est en "intrigue", ignorer le script ci-dessous. Si votre coffre n'est pas en intrigue placer ce script sur le OnDamage du coffre. Ce code sert a ce que le coffre ne drop pas tout les items qu'il a dans sont iventaire*/ //onDamaged d'un coffre void main() { int iNbItem = GetLocalInt(OBJECT_SELF,"nombre_item"); if(iNbItem == 0) { object oItem = GetFirstItemInInventory(OBJECT_SELF); int i = 0; while(GetIsObjectValid(oItem))//boucle... { i++; string sTagProba = GetTag(oItem); //on prend la partie droite de l'item, donc le resref SetLocalString(OBJECT_SELF,"item" + IntToString(i), GetStringRight(sTagProba, GetStringLength(sTagProba) - 1 - FindSubString(sTagProba,"_"))); //on prend la partie gauche, donc le pourcentage de chance d'apparition de l'item SetLocalInt(OBJECT_SELF,"proba" +IntToString(i), StringToInt(GetStringLeft(sTagProba, FindSubString(sTagProba,"_")))); //on detruit l'item DestroyObject(oItem); oItem = GetNextItemInInventory(OBJECT_SELF); } SetLocalInt(OBJECT_SELF,"nombre_item",i); SetLocalInt(OBJECT_SELF,"okgenere",1);//on peut generer les items maintenant iNbItem = i; } } Mais voila il a des défauts et je ne sais d'ou ca vient. D'abord le % de chance de drop. n_resref => "n" faut metre une valeur absolue ? pour faire 1% faut metre 1_resef ? ou 01_resref ? ou 001_resref ? Alors j'ai testé avec 50, 30, 20, 10, 5, 1 : 50_resref et 050_resref et pour les autres valeurs. REsultat du test : j'ai toujours eu les items avec 50_resref ou 1_resref ainsi que 050_resref et 001_resref. Je me suis dis que ce jour la je debvais etre tres chanceux (je suis parti jouer au loto apres) donc j'ai recommencé plusieurs fois le test et j'avais toujours cette chance ... A mon avis c'est un bug ... Et pour un somme d'or aléatoire, je fais comment ? JE voudrais uen fourchette entre 100po et 1000po. Help a corriger ou bien a trouver un au script repondant au critère au debut s'il vous plait. |
Revenir en haut | |
Shishio-Erehiko Novice Messages: 7 |
Personne peut m'aider svp ?
|
Revenir en haut | |
Siléphrael Grand Chevalier Messages: 122 Localisation: Toulouse |
tu pourrai pas faire un item genre boite avec une somme d'argent dedans ? tu en fais 2 ou 3 et tu leur colle un pourventage différent ...
_________________ * Tenant sous sa lame le jeune prince * Je vais compter jusqu'a trois et tu mourra .... * lui tranche la gorge * mince, j'ai oublié de compter ... |
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