Aller au contenu

Photo

Onrespawn help


  • Veuillez vous connecter pour répondre
3 réponses à ce sujet

#1
seventh_son

seventh_son
  • Members
  • 37 messages
I am looking for a script that when a player dies and clicks to respawn they are sent to a temple near them...

In the same area is ok, as I can set safe respawn rooms in all areas. but with the standard deathtemple, there is only on respawn location, and I want to be able to respawn somewhere near the location I was killed at.

Any ideas? 

#2
Greyfort

Greyfort
  • Members
  • 234 messages
one issue is know what areas are close to what respawn locations:

you can fix this one way buy putting a variable on your area with the tag of the way point, then altering respawn script.

or alter respawn script to see what area in then decide but I have a script for you let me test it then I will post it....

Edit add...script:

//::///////////////////////////////////////////////
//:: Generic On Pressed Respawn Button
//:: Copyright © 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(oDead, nNewXP);
    int nGoldToTake =    FloatToInt(0.10 * GetGold(oDead));
    // * a cap of 10 000gp taken from you
    if (nGoldToTake > 10000)
    {
        nGoldToTake = 10000;
    }
    AssignCommand(oDead, TakeGoldFromCreature(nGoldToTake, oDead, TRUE));
    DelayCommand(4.0, FloatingTextStrRefOnCreature(58299, oDead, FALSE));
    DelayCommand(4.8, FloatingTextStrRefOnCreature(58300, oDead, FALSE));

}


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


void main()
{
    object oRespawner = GetLastRespawnButtonPresser();
    ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);
    ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);
    RemoveEffects(oRespawner);

//NOTE: Be sure to have a string variable on your areas called "respawn_loc"
// then have that variable match the closest respawn loc. or this case a waypoint "wp_respwn1"
    string sArea = GetTag(GetArea(oRespawner));
    string sObjWay=GetLocalString(GetArea(oRespawner),"respawn_loc");
    object oSpawnPoint = GetObjectByTag(sObjWay);

       AssignCommand(oRespawner,JumpToLocation(GetLocation(oSpawnPoint)));

}

Modifié par Greyfort, 17 janvier 2011 - 02:42 .


#3
seventh_son

seventh_son
  • Members
  • 37 messages
yeah, I feel bad that I posted this when shortly after it was posted I found something close to what I wanted on the vault... but thanks for the quick reply.

#4
Greyfort

Greyfort
  • Members
  • 234 messages
Well I posted it if ya need it