help respawn

Répondre
Partager Rechercher
bonjour g kelke prob de respawn dans mon module en construction.

si kelkun peut m'aider.

je chercher a faire un respawn ki enlece 10% d'or, 100 d'xp x le lvl du joueur et ki envoi a un tag precis genre pou respawn dans une certaine zone.

Merci d'avance.
Il suffit de prendre le script par défaut :

Code PHP:

#include "nw_i0_plot"

// * Applies an XP and GP penalty
// * to the player respawning
void ApplyPenalty(object oDead)
{
    
int nXP GetXP(oDead);
    
int nPenalty 100 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()
{
    
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.
    
}
 } 
te suffit juste de crée un wp à l'endroit du respawn, dont le tag est "NW_DEATH_TEMPLE".
Répondre

Connectés sur ce fil

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