//::///////////////////////////////////////////////
//:: 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;
}
}