Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrĂ´le

Recherche | Retour aux forums

JOL Archives

Script de respawn spécial

Par Blam le 10/8/2002 Ă  23:47:48 (#1944845)

Voici un script de respawn complet, qui fonctionne.
A la mort des joueurs ils "respawn" a des endroits différents en fontion de leur alignemment.

Merci a ceux qui m'ont aidé.

A mettre dans le edit/module properties/events/OnPlayerRespawn

////////////////////////////////////////////////////////////////////////////////
/////Script de BlamReconstruit par Fed et fini par Kemay////
////////////////////////////////////////////////////////////////////////////////
/////Objet: Rappel dans les temples correspondants a l'alignement du joueur/////
/////Date : 10 /08/2002/////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

#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 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();
int nAlignementLawChaos = GetAlignmentLawChaos(oRespawner);
int nAlignementGoodEvil = GetAlignmentGoodEvil(oRespawner);


ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);
RemoveEffects(oRespawner);


// Return PC to respawn point based on alignement.

string sDestTag = "WP_";

switch (nAlignementLawChaos)
{
case ALIGNMENT_CHAOTIC:
sDestTag = sDestTag + "CHAOTIC_";
break;

case ALIGNMENT_NEUTRAL:
sDestTag = sDestTag + "NEUTRAL_";
break;

case ALIGNMENT_LAWFUL:
sDestTag = sDestTag + "LAWFUL_";
break;
}

switch (nAlignementGoodEvil)
{
case ALIGNMENT_GOOD:
sDestTag = sDestTag + "GOOD";
break;

case ALIGNMENT_NEUTRAL:
sDestTag = sDestTag + "NEUTRAL";
break;

case ALIGNMENT_EVIL:
sDestTag = sDestTag + "EVIL";
break;
}

// Apply any penalties.
ApplyPenalty(oRespawner);

object oDest = GetWaypointByTag(sDestTag);

// si le waypoint de destination n'existe pas
if (!GetIsObjectValid(oDest))
{
// utilise le waypoint par defaut
oDest = GetWaypointByTag("WP_DEFAULT_RESPAWN");
}

if (GetIsObjectValid(oDest))
{

SetLocalLocation(oRespawner, "NW_L_I_DIED_HERE", GetLocation(oRespawner));
SetLocalInt(oRespawner, "NW_L_I_DIED", 1);
AssignCommand(oRespawner,JumpToLocation(GetLocation(oDest)));
}

}

Puis sur les endroits choisi (sur la ou les zones) Mettre des Waypoints dont les tags auront ce format
WP_NEUTRAL_NEUTRAL
WP_LAWFUL_NEUTRAL
WP_CHAOTIC_NEUTRAL
ect......
et surtout

WP_DEFAULT_RESPAWN

C'est simple (sauf que moi j'ai été incapable de le faire, a part l'idée)

Par Mellinsa le 11/8/2002 Ă  2:28:19 (#1945177)

Clap clap clap clap, je vais l'utiliser imédiatement

JOL Archives 1.0.1
@ JOL / JeuxOnLine