Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > systeme de mort ...
systeme de mort ...
Par callgirl le 2/10/2002 à 17:44:34 (#2271176)
Par Sempai le 2/10/2002 à 18:35:36 (#2271466)
Aux lignes 16 à 38, se trouve la fonction des pénalités au respawn, ainsi que les messages inscrits à ce moment-là (comme "perte de PX" par exemple).
void ApplyPenalty(object oDead)
A la suite, ajoute ou retire ce que tu veux, en fonction de la pénalité que tu veux accorder.
Les lignes 45 à 77 ne concernent que des cas particuliers de la campagne officielle. A la ligne 82 apparait la fonction principale.
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));
Comme indiqué ici, ce passage est le plus important. Il indique que le sujet est soigné de tous ces maux et que l'endroit où il va renaître sera celui noté "NW_DEATH_TEMPLE". Il te suffit donc de créer un WayPoint de ce nom là où tes PJs ressusciteront.
Les lignes 94 à 150 ne concernent que des particularités de la campagne officielle.
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(oPriest, DelayCommand(2.1, PlayVoiceChat(VOICE_CHAT_TALKTOME, oPriest)));
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.
}
}
La ligne demandant si le lieu de soins est bien "NW_DEATH_TEMPLE" n'appelle que le cas de la campagne officielle où il y a un prêtre de Tyr à proximité. Cela pour signaler une conversation particulière avec celui qui vient de ressusciter.
La dernière proposition stipule que l'on renaît sur son lieu de décès s'il n'y a aucun endroit nommé "NW_DEATH_TEMPLE".
Si tu changes le nom de cet endroit, prend soin de le renommer dans tout le fichier.
Re: systeme de mort ...
Par miriandel le 2/10/2002 à 19:28:04 (#2271759)
Provient du message de callgirl
Bon vu que mon module sera rp, le respawn sa me convien pas du tout, donc je cherche un scripte qui propose un respawn mais pas a l'endroit ou le pj est mort mais par exemple dans un temple specifique...deplus j aimerais que lors de sa mort le PJ perde toute l'xp aquise sur le module ainsi que les objet et l'or. quelqu'un peut m'aider a faire sa parceque je commence a savoir un peut scripter mais la c au dessus de mes capacités merci...
Es-tu convaincu que le rp requiert de frustrer le PJ, pire de le séparer de son groupe quand il meurt ?
Le DM est au service du plaisir de ses joueurs, n'est-il pas ?
Légèrement ajuster certaines règles, pourquoi pas, mais si on pousse le bouchon trop loin, on a vite fait de décourager.
Juste un son de cloche *DING*
Par callgirl le 5/10/2002 à 13:10:40 (#2285326)
JOL Archives 1.0.1
@ JOL / JeuxOnLine