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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Respawn en fonction de l'alignement

Par Blam le 10/8/2002 à 18:39:29 (#1944186)

Respawn en fonction de la moralité

J'ai besoin d'un coup de main.
on m'a aidé plus bas mais cela ne fonctionne pas

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)));
}

}

mis le script dans le

edit/scenarioproperties/events/onrespown
je l'ai appelé nw_03_respawn

Mis les waypoints suivants

WP_LAWFUL_NEUTRAL
WP_LAWFUL_GOOD
WP_LAWFUL_EVIL
WP_CHAOTIC_NEUTRAL

ect.... (tous mis) et...........rien

meme avec le WP_DEFAULT_RESPAWN

Si qqn pouvais y jetter un oeil et me dire ce qui ne vas pas...
merci

bonjour a mon mj préféré

Par Lys le 10/8/2002 à 20:04:08 (#1944385)

Ca c'est bien une idée de toi,
j'ai beaucoup aimé ta gobeline a l'entrée des grottes, elle m'a fait mourir de rire.
Le coup des deux vieux dans le module suivant est enorme.
mais il y a un probleme, dans ton temple loyal neutre les joueurs non LN se retrouvent avec les characteristiques a 3, c'est un peu lourd, non ? A part ca, toujours radin en xp :)

j'attends le 4eme scénario avec impatience

bizoux

Mouais

Par Blam le 10/8/2002 à 20:10:11 (#1944401)

mais il y a un probleme, dans ton temple loyal neutre les joueurs non LN se retrouvent avec les characteristiques a 3, c'est un peu lourd, non ? A part ca, toujours radin en xp :)

Tss tss les chaotics n'ont rien a faire dans un temple principal d'une divinitée loyale neutre, non mais....
A part ca fait gaffe tu es hors sujet !!!!! et toc !

Quant au "radin" les xp poussent pas par terre (sauf chez mic....soft) Ca ne sert a rien de jouer avec des persos enormes, c'est juste bon pour les grosbills. puis un gob a 3ou 5 xp c'est bien payé !!! et toc !

Par Kemay le 10/8/2002 à 22:09:46 (#1944677)

Il manque ceci en haut de ton script pour qu'il puisse se compiler. Le script fait appel à deux fonctions qui ne sont pas définies par défaut dans le script editor : RemoveEffects() et ApplyPenalty(). Si ton script ne se compile pas il ne peut pas être utilisé par le module. Essaie en ajoutant cela en haut de ton script (avant void main() ) :

#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));
}

Genial excellent

Par Blam le 10/8/2002 à 22:27:03 (#1944694)

MERCI depuis le temps que je butais dessus cela fonctionne parfaitement.
Je suis totalement nul en script

Mes remerciements a:

KEMAY
et
FRED


:)

Par Fed le 11/8/2002 à 19:43:20 (#1947285)

C'est Fed, et non Fred ;)

Si j'avais su qu'il s'agissait simplement de cela ... ca me paraissait tellement evident sur le coup que je n'y ai même pas penser. Chez moi, j'avais remplacé la fonction main du script nw_i0_respawn par le script que je t'avais donné, d'où la confusion...

JOL Archives 1.0.1
@ JOL / JeuxOnLine