Prob de script, systeme de mort avec perte d'objet..

Répondre
Partager Rechercher
Bon alors voila un systeme de mort qui, apres celle-ci crée un cadavre avec les objets du Pc décédé...

à l'origine, le scrip fait aussi en sorte qu'apres un certain temps, (une fois que l'assassin a eu largement le temps de se servir sur la tombe) l'inventaire de la tombe reviend dans l'inventaire du joueur..

bon cette partie là ne m'interresse pas du tout je ne voit pas trop l'interet.. donc baqué la si possible...

le probleme du script viens du faite qu'une fois mort, la tombe est crée, les objets de l'inventaire du pc sont retiré, mais il ne sont pas placé dans la tombe, donc perdu définitivement...

--> voici l'include que j'utilise dans mon script de mort simplement en rajoutant la variable SetLootable(oPlayer,10.0);

Code PHP:

void SetUnlootable(object oPCobject oCorpse)
{
    if(
GetIsObjectValid(oCorpse) && GetIsPC(oPC) && GetLocalInt(oPC,"LOOTABLE") == 1)
    {
        
location lCorpseLoc GetLocation(oCorpse);
        
//:: Etape 1 - Vider le corps et rendre ses objets au joueur
        
object oItem GetFirstItemInInventory(oCorpse);
        
int nStack 0;
        while(
GetIsObjectValid(oItem))
        {
            
//..rendre au joueur..
            
nStack GetNumStackedItems(oItem);
            
CreateItemOnObject(GetTag(oItem),oPC,nStack);
            
//..et vider le corps..
            
DestroyObject(oItem);
            
oItem GetNextItemInInventory(oCorpse);
        }
        
//:: Etape 2 - Detruire le corps vide
        
DestroyObject(oCorpse);
        
SetLocalInt(oPC,"LOOTABLE",0);
    }
    else
    {
        if(
GetIsObjectValid(oCorpse) != TRUE)
            
SendMessageToAllDMs("Erreur - Le corps du PJ loote est incorrect.");
        if(
GetIsPC(oPC) != TRUE)
            
SendMessageToAllDMs("Erreur - Le joueur a delooter n'est pas un joueur.");
        if(
GetLocalInt(oPC,"LOOTABLE") != 1)
            
SendMessageToAllDMs("Erreur - Le joueur a delooter n'est pas loote.");
    }
}
void SetLootable(object oPCfloat fDuration)
{
    if(
GetIsPC(oPC) && GetIsDead(oPC))
    {
        
location lPCLoc GetLocation(oPC);
        
//:: Etape 1 - Stoper les actions du joueur
        
AssignCommand(oPC,ClearAllActions());
        
//:: Etape 2 - Creer le corps
        
vector vPCLoc GetPositionFromLocation(GetLocation(oPC));
        
vector vDecalage Vector(0.0f,1.0f,0.0f);
        
vector vCorpsePosition vPCLoc vDecalage;
        
location lCorpseLoc Location(GetArea(oPC),vCorpsePosition,GetFacing(oPC));
        
CreateObject(OBJECT_TYPE_PLACEABLE,"corpsaventurier",lCorpseLoc,FALSE);
        
object oCorpse GetNearestObjectByTag("tCorpsPC",oPC);
        
//:: Etape 3 - Remplir le corps et vider le joueur

        
object oItem GetFirstItemInInventory(oPC);
        
int nStack 1;
        while(
GetIsObjectValid(oItem))
        {
            
//..remplir le corps..
            
nStack GetNumStackedItems(oItem);
            
CreateItemOnObject(GetTag(oItem),oCorpse,nStack);
            
//..et vider le joueur..
            
DestroyObject(oItem);
            
oItem GetNextItemInInventory(oPC);
        }
        
SetLocalInt(oPC,"LOOTABLE",1);
        
DelayCommand(fDuration,SetUnlootable(oPC,oCorpse));
    }
    else
    {
        
SendMessageToAllDMs("Erreur - Le corps a creer n'est pas mort ou n'est pas un joueur");
    }

le probleme dois surement venir des lignes de l'étape 3, nStack = GetNumStackedItems(oItem);
CreateItemOnObject(GetTag(oItem),oCorpse,nStack);, mais je suis incapable de le faire..

Code PHP:

      //:: Etape 3 - Remplir le corps et vider le joueur

        
object oItem GetFirstItemInInventory(oPC);
        
int nStack 1;
        while(
GetIsObjectValid(oItem))
        {
            
//..remplir le corps..
            
nStack GetNumStackedItems(oItem);
            
CreateItemOnObject(GetTag(oItem),oCorpse,nStack);
            
//..et vider le joueur..
            
DestroyObject(oItem);
            
oItem GetNextItemInInventory(oPC);
        } 
...
__________________
"La raison est seule à justifier les sciences alors que la foi est seule à justifer la religion"
Répondre

Connectés sur ce fil

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