question très bête

Répondre
Partager Rechercher
Bonjour,
j'ai une question super bete et j'ai pas trouvé la réponse dans le forum (d'ailleurs j'ai pas trouvé la question non plus, je suppose donc que je suis très nul).
voila j'ai mis un coffre et dedans j'ai mis un tas de pièces d'or, je l'ai éditer a l'intérieur du coffre et j'ai mis nombre d'unité 25 (je suppose donc qu'il devrais y avoir 25 po du coup).
Hors a chaque fois pouf 1 PO seulement, est-ce qu'il faut que j'édite pièce d'or et que je mette 215 au nouvel objet? (j'utilise un script de respawn de coffre).

Merci de vos réponse,
Nono le vil
heu, je me suis mal exprimé, en fait quoi que je fasse je ne trouve toujours qu'une piece d'or dans mon coffre, c'est pas avec 1 po que mes joueurs vont devenir riche, alors j'aimerais bien savoir comment on fait pour creer un tas d'orde + d'une piece d'or.
Ben avec la fonction CreateItemOnObject, tu peux préciser le nombre d'objets à créer dans ton coffre...
Mais heu, si tu veux que quelqu'un t'aide, je te conseille de mettre ton script parce que là c'est pas évident (ton script de respawn du coffre).

Code PHP:

CreateItemOnObject("nw_it_gold001",OBJECT_SELF,25); 

voila le script de respawn de coffre que j'utilise, je l'ai trouvé sur nwn-fr.com.

Code PHP:

//::///////////////////////////////////////////////
//:: 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(sTagProbaGetStringLength(sTagProba) - 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(sTagProbaFindSubString(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 && GetLocalInt(OBJECT_SELF,"okgenere") == 1)//si la boucle ci-dessus a ete faite
    
{
        
int i;
        for(
1<= iNbItemi++)
        {
            
//si l'item n'existe pas deja dans le coffre
            
if(!GetIsObjectValid(GetItemPossessedBy(OBJECT_SELFGetLocalString(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(sTagSelfFindSubString(sTagSelf,"_"))), SetLocalInt(OBJECT_SELF"okgenere"1));
    }

Je vais peut-être dire une ânerie mais j'ai l'impression que ce script ne gère pas les objets "stackable"...
Je suis sûr qu'avec par ex une épée et une armure ça marche...
Peut être qu'il faut essayer de mettre la variable locale "nombre_item" de ton coffre à 25 pour 25 x 1 pièces d'or et pas à 1 pour 1 tas de 25...
Où alors essaye de mettre 25 fois une pièce d'or dans ton coffre...
Enfin bon je ne suis pas un pro du script, sûrement quelqu'un ici pourra t'aider plus que moi...mais si j'étais toi je ferais ces deux test histoire d'en avoir le coeur net. (si ce n'est pas déjà fait...)
Bon, je vois que ca galere dur sur ce topic alors voila la soluce :

Faire Assistant Objet >> Pieces d or >> Valeur = 25.

Et voila l item de nom et tag (et de blueprint) "25po" ajouter a la palette que l on peut appeler par son ResRef pour les coffres renouvellant leur contenu pour les modules persistants.

Perso, je conseille de faire plusieurs 'objets' de ce type de valeur 1, 5, 10, 20, 25, 50, 100, 500, 1000, 5000, 10.000 et 100,000 po dans le module...

Prince Nexus.
Oups oui c'est pas bête ça !!!

(On peut mettre une fois 25 pièces d'or, mais on peut pas mettre 25 pièces d'or...heu non, on peut mettre 25 fois une pièce d'or, mais on peut pas mettre une fois 25 pièces d'or...heu, non...
- Prenez un chewing-gum, Emile)
Contrairement à ce que semble penser Prince Nexus, créer plusieurs blueprints de différentes valeurs n'est pas ici la solution. Et, honnêtement, de manière générale, je n'en vois absolument pas l'utilité.

Bon. Voilà un extrait de ton script :
Code PHP:

CreateItemOnObject(GetLocalString(OBJECT_SELF,"item" IntToString(i))); 

Soit j'ai des problèmes de vue, soit il n'y a pas de deuxième argument spécifié dans la fonction CreateItemOnObject(). OR, c'est cet argument qui définit combien d'instance de l'objet vont être crées.
En clair, ton script est limité de par le fait qu'il ne crée à chaque fois qu'une instance des objets qu'il a gardé en mémoire (si j'ai bien compris le principe), or dans le cas des pièces d'or il faut en créer plusieurs.

Je ne vais pas refaire tout le script, mais pour résoudre le problème il suffit d'enregistrer en plus du blueprint de l'objet, le nombre d'instances qu'il contient (GetStackSize le permet, il me semble). Puis, lors de la restauration de l'objet, tu crée un nombre d'instance égal à celui enregistré plus tôt. Et voilà le travail !

Cela dit, j'avoue ne pas avoir lu le script en détail, donc si jamais je suis à côté de la plaque, ben désolé Mais bon, ce genre de script, c'est un peu toujours le même principe, donc je devrais pas trop être à l'ouest dans mes explications

Voilà, bonne chance.
Un grand merci a tous pour vos réponse et plus précisement a Taern, voila mon script corrigé il suffisait (comme le disait Taern) de prendre le stacksize de l'item
Code PHP:

GetItemStackSize(oItem
et
de le restituer dans la fonction grace a
Code PHP:

CreateItemOnObject(GetLocalString(OBJECT_SELF,"item" IntToString(i)), OBJECT_SELFGetLocalInt(OBJECT_SELF,"stacksize" IntToString(i))); 

voila le code en entier si quelqu'un est intérressé.

Code PHP:

//::///////////////////////////////////////////////
//:: 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(sTagProbaGetStringLength(sTagProba) - 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(sTagProbaFindSubString(sTagProba,"_"))));
            
// on prend le StackSize
            
SetLocalInt(OBJECT_SELF,"stacksize" +IntToString(i), GetItemStackSize(oItem));

            
//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 && GetLocalInt(OBJECT_SELF,"okgenere") == 1)//si la boucle ci-dessus a ete faite
    
{
        
int i;
        for(
1<= iNbItemi++)
        {
            
//si l'item n'existe pas deja dans le coffre
            
if(!GetIsObjectValid(GetItemPossessedBy(OBJECT_SELFGetLocalString(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)), OBJECT_SELFGetLocalInt(OBJECT_SELF,"stacksize" IntToString(i)));
                }
            }
        }
        
SetLocalInt(OBJECT_SELF"okgenere"0);
        
string sTagSelf GetTag(OBJECT_SELF);
        
DelayCommand(StringToFloat(GetStringLeft(sTagSelfFindSubString(sTagSelf,"_"))), SetLocalInt(OBJECT_SELF"okgenere"1));
    }
}
*/ 
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés