JeuxOnLineForumsPlusConnectés : 697 (sites) | 1264 (forums)Créer un compte
Neverwinter Nights
Maskado
Répondre
Partager Outils Rechercher
Avatar de Ahmadabdath
Ahmadabdath
Empereur
 
Avatar de Ahmadabdath
 
Arrow

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

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"
Lien direct vers le message - Vieux
Répondre

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +2. Il est actuellement 15h03.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite