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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Respown en fonction de la race

Par Blam le 8/8/2002 à 13:09:36 (#1934308)

voici le script

NWScript:
void main()
{
object oRespawner = GetLastRespawnButtonPresser();
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);
RemoveEffects(oRespawner);
//* Return PC to respawn point based on race.
string sDefaultDest = "NW_DEFAULT_RESPAWN";
string sDestTag = "NW_";
int iRace = GetRacialType(oRespawner);
switch (iRace)
{
case RACIAL_TYPE_HUMAN:
sDestTag = sDestTag + "HUMAN";
break;
case RACIAL_TYPE_ELF:
sDestTag = sDestTag + "ELF";
break;
case RACIAL_TYPE_GNOME:
sDestTag = sDestTag + "GNOME";
break;
case RACIAL_TYPE_HALFELF:
sDestTag = sDestTag + "HALFELF";
break;
case RACIAL_TYPE_HALFLING:
sDestTag = sDestTag + "HALFLING";
break;
case RACIAL_TYPE_HALFORC:
sDestTag = sDestTag + "HALFORC";
break;
case RACIAL_TYPE_DWARF:
sDestTag = sDestTag + "DWARF";
break;
default:
sDestTag = sDefaultDest;
break;
}
sDestTag = sDestTag + "_RESPAWN";
int iValidSpawn = 0;
if (GetIsObjectValid(GetObjectByTag(sDestTag)))
{
iValidSpawn = 1;
}
// Unable to find the race specific spawn point, trying default spawn point.
else if (sDestTag != sDefaultDest && GetIsObjectValid(GetObjectByTag(sDefaultDest)))
{
sDestTag = sDefaultDest;
iValidSpawn = 1;
}
// If the spawn is valid, move us there, else apply the penalty and res
// where they stand.
if (iValidSpawn == 1)
{
// Store the location you died.
SetLocalLocation(oRespawner, "NW_L_I_DIED_HERE", GetLocation(GetLastRespawnButtonPresser()));
SetLocalInt(oRespawner, "NW_L_I_DIED", 1);
// Apply any penalties.
ApplyPenalty(oRespawner);
// Move to the resurrection site.
object oSpawnPoint = GetObjectByTag(sDestTag);
AssignCommand(oRespawner,JumpToLocation(GetLocation(oSpawnPoint)));
}
else
{
// Unable to find the spawn point.
// Apply the penalty and res where the player stands.
ApplyPenalty(oRespawner);
}
}

qqn sait comment le modifier de facon a ce que le tri se fasse par alignement

de facon a ce que les joueurs aillent dans le temple correspondant a leur alignement.

merci d'avance

Par Fed le 8/8/2002 à 22:04:58 (#1936677)

Il suffit de modifer un peu le switch.

ex :


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

}



bon ... en passant j'ai modifier d'autres petits trucs. J'ai supprimé le spawnpoint par defaut car il n'est plus utile dans ce cas et arrangé un peu le code à ma sauce.


Je n'ai pas testé, il y a surement des erreurs de syntaxe qui trainent, mais l'idée y est. Les waypoints de destination s'appelent WP_CHAOTIC_EVIL, WP_CHAOTIC_GOOD, etc...

excellent, sauf que....

Par Blam le 9/8/2002 à 12:09:21 (#1938770)

Sauf que cela ne parche pas.

j'ai du me tromper qq part

j'ai:

Copié ce script dans le module properties/ event/onrespawn.
j'ai fait des Waypoints nommés
WP_LAWFUL_NEUTRAL,
WP_CHAOTIC_NEUTRAL rien (les persos de test sont ln et cn)
j'ai tenté les
NW_LAWFUL_NEUTRAL,
NW_CHAOTIC_NEUTRAL avec le meme résultat.
puis les

WP_LAWFUL_NEUTRAL_RESPAWN
WP_CHAOTIC_NEUTRAL_RESPAWN
NW_LAWFUL_NEUTRAL_RESPAWN
NW_CHAOTIC_NEUTRAL_RESPAWN

toujours rien. alors ma langue au chat :)

Autre point, tu as enlevé le NW_DEFAULT_RESPAWN, vaut mieux le laisser, pour le cas du gars qui garde ce script et ne met pas tous les waypoints dans son module.

merci du travail fait. Si tu pouvait verifier pourquoi ca ne marche pas.... :)

Par Fed le 9/8/2002 à 21:06:10 (#1941289)

En fait, Il y avait beaucoup d'erreurs de syntaxe ;)

J'ai édité et corrigé le script plus haut.
Il fonctionne chez moi avec les tags WP_LAWFUL_GOOD, WP_LAWFUL_NEUTRAL, etc... Le neutre strict s'appelle WP_NEUTRAL_NEUTRAL.

Il faut bien qu'il s'agisse de waypoints, sinon ca ne marchera pas.

Verifie aussi que les tags des tes waypoints sont bien en majuscules (en correspondance avec le script) des fois que neverwinter fasse la différence majuscule/minuscule

J'ai aussi remit un waypoint par défaut qui s'appele WP_DEFAULT_RESPAWN

Voila :)

oki j'essai tout de suite

Par Blam le 9/8/2002 à 21:24:22 (#1941358)

Je comprends bien les changements fait je teste de suite

en reponse majuscule/minuscule OUi cela fait une difference, je l'aie deja constaté


merci

Marche toujours pas

Par Blam le 9/8/2002 à 21:36:14 (#1941398)

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


curieux (ou alors je serais un beau chene car je suis un beau gland :) )

Par Fed le 9/8/2002 à 23:19:37 (#1941767)

Essaye de debuger le script avec des SendMessageToPC.
C'est ce que j'avais fait pour tester le script. Ca te permettra de "voir" si le script fonctionne bien.


mis le script dans le

scenario/properties/events/onrespown


plutot dans :

edit/module properties/events/on respawn

non ?

c ce que j'ai fait

Par Blam le 9/8/2002 à 23:24:02 (#1941782)

me suis mal exprimé dans mon message.

blam

JOL Archives 1.0.1
@ JOL / JeuxOnLine