script mort

Répondre
Partager Rechercher
A mettre dans le OnPlayerRespawn ou le OnPlayerDeath selon ce que tu veux :

Code PHP:

location lLoc GetLocation(OBJECT_SELF);
string sObject GetItemPossessedBy(OBJECT_SELFxxxxx); //Définir ici l'objet
CreateObject(OBJECT_TYPE_ITEMsObjectlLoc); 
Oups j'ai fait 2 enormes boulettes :

Code PHP:

object oObject GetItemPossessedBy(OBJECT_SELFxxxxx);
string sObject GetTag(oObject); 
Et ne pas oublier

Code PHP:

DestroyObject(oObject); 

Le pire c'est que c'est exactement comme ca que je scripte : je fais un truc bourré d'erreurs monumentales, ca marche pas, je m'appercois que j'ai écris des conneries, ca marche toujours pas, je m'appercois qu'il restait des conneries, etc...

Remplace le GetTag par un GetResRef
Code PHP:

location lLoc GetLocation(OBJECT_SELF);
object oObject GetItemPossessedBy(OBJECT_SELFxxxxx);
string sObject GetResRef(oObject);
CreateObject(OBJECT_TYPE_ITEMsObjectlLoc);
DestroyObject(oObject); 
Voila celui-la il doit marcher
j'ai la 1.29 em

et vala ce que je met dans onplayerrespaw :

Code PHP:

location lLoc GetLocation(OBJECT_SELF);
object oObject GetItemPossessedBy(OBJECT_SELFclef03);
string sObject GetResRef(oObject);
CreateObject(OBJECT_TYPE_ITEMsObjectlLoc);
DestroyObject(oObject); 
et donc clef03 est le tag de l'objet
je met ca !

Code PHP:

location lLoc GetLocation(OBJECT_SELF);
object oObject GetItemPossessedBy(OBJECT_SELF"clef03");
string sObject GetResRef(oObject);
CreateObject(OBJECT_TYPE_ITEMsObjectlLoc);
DestroyObject(oObject); 
et toujours meme probleme

ERREUR : VARIABLE DEFINED WITHOUT TYPE
hum
hum ...

Code PHP:

//::///////////////////////////////////////////////
//:: Generic On Pressed Respawn Button
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
// * June 1: moved RestoreEffects into plot include
*/
//:://////////////////////////////////////////////
//:: Created By:   Brent
//:: Created On:   November
//:://////////////////////////////////////////////
#include "nw_i0_plot"

// * Applies an XP and GP penalty
// * to the player respawning
void ApplyPenalty(object oDead)
{
    
int nXP GetXP(oDead);
    
int nPenalty 50 GetHitDice(oDead);
    
int nHD GetHitDice(oDead);
    
// * You can not lose a level with this respawning
    
int nMin = ((nHD * (nHD 1)) / 2) * 1000;

    
int nNewXP nXP nPenalty;
    if (
nNewXP nMin)
       
nNewXP nMin;
    
SetXP(oDeadnNewXP);
    
int nGoldToTake =    FloatToInt(0.10 GetGold(oDead));
    
// * a cap of 10 000gp taken from you
    
if (nGoldToTake 10000)
    {
        
nGoldToTake 10000;
    }
    
AssignCommand(oDeadTakeGoldFromCreature(nGoldToTakeoDeadTRUE));
    
DelayCommand(4.0FloatingTextStrRefOnCreature(58299oDeadFALSE));
    
DelayCommand(4.8FloatingTextStrRefOnCreature(58300oDeadFALSE));

}

///////////////////////////////////////////////////////////////////////
// this function resets variabls and clears the arenas in the fighter
// 'gauntlet' subplot in chapter one
///////////////////////////////////////////////////////////////////////

void ClearArena(object oPC,string sArena)
{
    if(
sArena == "Map_M1S4C")
    {
        
DestroyObject(GetObjectByTag("M1S04CHRUSK02"));
        
DestroyObject(GetObjectByTag("M1S4CBeast"));
        
SetLocalInt(GetObjectByTag(sArena),"NW_A_M1S4HruskDef",0);
    }
    else if(
sArena == "Map_M1S4D")
    {
        
DestroyObject(GetObjectByTag("M1S04CFASHI02"));
        
DestroyObject(GetObjectByTag("M1S4DBeast"));
        
SetLocalInt(GetObjectByTag(sArena),"NW_A_M1S4FashiDef",0);
        
CreateItemOnObject("M1S04IBADGELVL01",oPC);
    }
    else if(
sArena == "Map_M1S4E")
    {
        
DestroyObject(GetObjectByTag("M1S04CAGAR02"));
        
DestroyObject(GetObjectByTag("M1S4EBeast"));
        
SetLocalInt(GetObjectByTag(sArena),"NW_A_M1S4AgarDef",0);
        
CreateItemOnObject("M1S04IBADGELVL02",oPC);
    }
    else if(
sArena == "Map_M1S4F")
    {
        
DestroyObject(GetObjectByTag("M1S04CCLAUDUS02"));
        
DestroyObject(GetObjectByTag("M1S4FBeast",0));
        
DestroyObject(GetObjectByTag("M1S4FBeast",1));
        
SetLocalInt(GetObjectByTag(sArena),"NW_A_M1S4ClaudusDef",0);
        
CreateItemOnObject("M1S04IBADGELVL03",oPC);
    }
    
SetLocalInt(oPC,"NW_L_M1S4Won",FALSE);
    
SetLocalInt(GetModule(),"NW_G_" sArena "_Occupied",FALSE);
}

//////////////////////////////////////////////////////////////////////////////


void main()
{
    
location lLoc GetLocation(OBJECT_SELF);
    
CreateObject(OBJECT_TYPE_ITEM"clef03"lLoc);
    
string sObject GetResRef(oObject);
    
CreateObject(OBJECT_TYPE_ITEMsObjectlLoc);
    
DestroyObject(oObject);

    
object oRespawner GetLastRespawnButtonPresser();
    
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);
    
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);
    
RemoveEffects(oRespawner);
    
//* Return PC to temple



    
string sDestTag =  "NW_DEATH_TEMPLE";
    
string sArea GetTag(GetArea(oRespawner));
    
/*
      CHAPTER 1 SPECIAL CASE
    */
    
if (sArea == "MAP_M1S3B")
    {
        
sDestTag "M1_WIZSPAWN";
    }
    else
    if (
sArea == "Map_M1S4E" || sArea == "Map_M1S4C" || sArea == "Map_M1S4D" || sArea == "Map_M1S4F")
    {
        
sDestTag "M1_FIGSPAWN";
        
ClearArena(oRespawner,sArea);
    }
    else
    
/*
      CHAPTER 2 SPECIAL CASE
    */
/*
    if (sArea == "MAP_M2Q2F2" && GetDistanceBetweenLocations(GetLocation(GetObjectByTag("M2Q2F2_M2Q2G")), GetLocation(oRespawner)) < 5.0 && GetLocalInt(GetModule(),"NW_M2Q2E_WoodsFreed") == 0)
    {

      sDestTag = "WP_M2Q2GtoM2Q2F";
    }
    else
*/
    // * Druid Match
    
if (sArea == "MAP_M2Q2E2")
    {
      
sDestTag "WP_M2Q2E_ENDDCC";
      
DestroyObject(GetObjectByTag("M2Q2EWELCARFT"));
      
DestroyObject(GetObjectByTag("M2Q2EHENNAFT"));
      
DestroyObject(GetObjectByTag("M2Q2EJANKENFT"));
      
DestroyObject(GetObjectByTag("M2Q2EELGARFT"));
      
// * June 2002: Destroy pets as well
      
DestroyObject(GetObjectByTag("M2Q2EWELCARFTPET"));
        
DestroyObject(GetObjectByTag("M2Q2EHENNAFTPET"));
        
DestroyObject(GetObjectByTag("M2Q2EJANKENFTPET"));
        
DestroyObject(GetObjectByTag("M2Q2EELGARFTPET"));


      
SetLocalInt(GetObjectByTag("M2Q2EJAER"),"NW_M2Q2E_LFIGHT",FALSE);
    }
    
/*
       CHAPTER 3 SPECIAL CASE
    */
    
else
    
// * time travel dungeon past - Dungeon
    
if (sArea == "M3Q2G")
    {
        
sDestTag "WP_ALTERNATE_SPWN";
    }
    
// * time travel dungeon past - Grove
    
else
    if (
sArea == "M3Q2I")
    {
        
sDestTag "WP_ALTERNATE_SPWN";
    }
    if (
GetIsObjectValid(GetObjectByTag(sDestTag)))
    {

        if (
sDestTag == "NW_DEATH_TEMPLE")
        {
            
object oPriest GetObjectByTag("NW_DEATH_CLERIC");
            
//SetLocalInt(oPriest, "NW_L_SAYONELINER", 10);

            //AssignCommand(oPriest, DelayCommand(3.0,ActionStartConversation(oRespawner)));
            
AssignCommand(oPriestDelayCommand(2.1PlayVoiceChat(VOICE_CHAT_TALKTOMEoPriest)));

            
SetLocalLocation(oRespawner"NW_L_I_DIED_HERE"GetLocation(GetLastRespawnButtonPresser()));
            
SetLocalInt(oRespawner"NW_L_I_DIED"1);
            
SetLocalObject(oPriest"NW_L_LASTDIED"GetLastRespawnButtonPresser());
            
// * April 2002: Moved penalty here, only when going back to the death temple
            
ApplyPenalty(oRespawner);
        }
        
object oSpawnPoint GetObjectByTag(sDestTag);
        
AssignCommand(oRespawner,JumpToLocation(GetLocation(oSpawnPoint)));
        
// * mak
    
}
    else
    {
        
// * do nothing, just 'res where you are.
    
}
 } 


et meme erreur ligne 86 :

nw_o0_respawn.nss(86): ERREUR : PARSING VARIABLE LIST
mais, tu veux faire quoi à la fin ? parce que, g pas suivi, et le script que tu balance est qd même un peu indigeste, pis c un peu complètement impossible de retrouver l'idée de départ.

Citation :
dsl vous deranger (encore) alors maintenant je veut le meme script mais l'objet apparait meme si le joueur ne la pas sur lui ^^
qd il meurt, un objet est créé là où il est mort ?

réponse de ange musicien :

Citation :
ralala...

Code PHP:

location lLoc GetLocation(OBJECT_SELF);
CreateObject(OBJECT_TYPE_ITEM"clef03"lLoc); 
c'est plus rapide...
donc, ce code est bon, et ENTIER, donc pas besoin de rajouter quyoique ce soit, il créé un objet dont le RESREF (pas le tag ) est clef03 la ou se trouve OBJECT_SELF, par contre si tu veu que ce soit à l'endoit où se trouve la dernière personne à avoir préssé sur respawn (c là que ce déclenche ton script) il faut faire :

Code PHP:


void main
()
{
    
object oRespawner GetLastRespawnButtonPresser();


    
location lLoc GetLocation(oRespawner  );
    
CreateObject(OBJECT_TYPE_ITEM"clef03"lLoc);


    
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);
    
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);
    
RemoveEffects(oRespawner);
    
//* Return PC to temple


//suite du code 
donc je t pas tt remis, mais l'idée c'est ca, tu remplace dans ton code la partie qui commence à void main() et fini la ou fini le code donné . . . pis essai de faire les tutoriaux, ca t'aideras à comprendre en gros les script et à les modifier/mélanger

bon, g aps regardé tt le script et connais pas cet event, mais je pense que c ca

(et soit clair !! n'hésite pas à te répéter de plusieurs facon, parce qu'il y a souvent beaucoup plus de facon de résoudre sn problème qu'on ne l'imagine )
Répondre

Connectés sur ce fil

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