Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > le respawn
le respawn
Par hunteur le 20/10/2002 à 21:21:39 (#2371287)
comment faire ? c un script si oui lequel ?:aide:
encore un truc !
Par hunteur le 20/10/2002 à 21:46:30 (#2371461)
je sais mes deux questions sont bien betes et tout le monde crois que je suis un :monstre: mnt mais bon ... c la vie :D
( en fait si des ldd du genre wls passe par la ... c moi madwac :) )
Par eMRaistlin le 20/10/2002 à 23:24:38 (#2371991)
http://forums.jeuxonline.info/showthread.php?s=&postid=2366751#post2366751
Plutot vers la fin du post, d'ailleur ^^
hum...
Par hunteur le 21/10/2002 à 19:37:27 (#2377387)
et ma question pour le journal marche toujours
voila
Par Blam le 21/10/2002 à 19:53:11 (#2377505)
#include "NW_I0_Plot"
void main()
{
object oItem = GetItemActivated();
object oUser = GetItemActivator();
if (oItem == GetObjectByTag("NW_IT_RECALL"))
{
int nAlignementGE = GetAlignmentGoodEvil(oUser);
int nAlignementLC = GetAlignmentLawChaos(oUser);
object oPortail;
if (nAlignementGE == ALIGNMENT_EVIL && nAlignementLC == ALIGNMENT_CHAOTIC)
oPortail = GetObjectByTag("WP_RECALL_CE");
else if (nAlignementGE == ALIGNMENT_EVIL && nAlignementLC == ALIGNMENT_NEUTRAL)
oPortail = GetObjectByTag("WP_RECALL_NE");
else if (nAlignementGE == ALIGNMENT_EVIL && nAlignementLC == ALIGNMENT_LAWFUL)
oPortail = GetObjectByTag("WP_RECALL_LE");
else if (nAlignementGE == ALIGNMENT_NEUTRAL && nAlignementLC == ALIGNMENT_CHAOTIC)
oPortail = GetObjectByTag("WP_RECALL_CN");
else if (nAlignementGE == ALIGNMENT_NEUTRAL && nAlignementLC == ALIGNMENT_NEUTRAL)
oPortail = GetObjectByTag("WP_RECALL_N");
else if (nAlignementGE == ALIGNMENT_NEUTRAL && nAlignementLC == ALIGNMENT_LAWFUL)
oPortail = GetObjectByTag("WP_RECALL_LN");
else if (nAlignementGE == ALIGNMENT_GOOD && nAlignementLC == ALIGNMENT_CHAOTIC)
oPortail = GetObjectByTag("WP_RECALL_CG");
else if (nAlignementGE == ALIGNMENT_GOOD && nAlignementLC == ALIGNMENT_NEUTRAL)
oPortail = GetObjectByTag("WP_RECALL_NG");
else if (nAlignementGE == ALIGNMENT_GOOD && nAlignementLC == ALIGNMENT_LAWFUL)
oPortail = GetObjectByTag("WP_RECALL_LB");
AssignCommand(oUser, ClearAllActions());
AssignCommand(oUser, ActionJumpToObject(oPortail));
IsRecall();
}
//{
//IsRecall();
//}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Chapitre A
-LA CREATION DU POINT DE CHUTE D'UN MORT
I-Pas de tri
création d'un Waypoint appelé: WP_DEATH_TEMPLE
c'est la qu'apparaitra le personnage mort en cours d'aventure.
II-Tri par alignement
création des waypoints appelés: WP_LAWFUL_NEUTRAL
WP_LAWFUL_EVIL
WP_LAWFUL_GOOD
WP_CHAOTIC_NEUTRAL
WP_CHAOTIC_EVIL
WP_CHAOTIC_GOOD
WP_NEUTRAL_EVIL
WP_NEUTRAL_GOOD
WP_NEUTRAL_NEUTRAL
WP_DEFAULT_RESPAWN
III
Chapitre B
-LA CREATION DU PORTAIL DE RETOUR SIMPLE
I-On déclare le script
Edit/module properties/events/onActiveItem/it_10_plot
ce script:
///////debut////////////////////
#include "NW_i0_plot"
void main()
{
IsRecall();
}
//////fin/////////////////////////
II-On crée le portail de retour (RECALL PORTAL)
III-Dans le OnUsed du portail
Script: nw_recall_portal
ce script:
/////debut//////
void main()
{
ActionStartConversation(GetLastUsedBy());
}
/////fin/////////
Lance une conversation dans advanced/conversation
IV-Création de la conversation : nw_00_retour
portail: téléportation ou lieu du dernier déces ?
réponse a) téléportation
réponse b) dernier déces
V-Réponse a)_Dernière téléportation
action taken/script "teleporte"
ce script teleporte
/////debut/////
#include "nw_i0_plot"
int CanAffordIt()
{
int nCost = 0; //Change 0 to the number of gold to take from Player
//As the cost of portal use.
// * remove the gold from the player
// * I'm having the player remove it from himself
// * but since I'm also destroying it, this will work
if (GetGold(GetPCSpeaker()) >= nCost)
{
TakeGold(nCost, GetPCSpeaker());
return TRUE;
}
return FALSE;
}
void main()
{
CanAffordIt();
location lLoc = GetLocalLocation(GetPCSpeaker(), "NW_L_LOC_RECALL");
// * Portal stores last location to jump to for future players
SetLocalInt(OBJECT_SELF, "NW_L_LOC_EVERUSED", 1);
SetLocalLocation(OBJECT_SELF, "NW_L_LOC_LAST_RECALL", lLoc);
ApplyEffectAtLocation(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_IMP_UNSUMMON), lLoc);
AssignCommand(GetPCSpeaker(), JumpToLocation(lLoc));
}
/////fin/////
VI-Réponse b)Dernier déces
action taken/script retourdeces
ce script "retourdeces":
/////debut/////
void main()
{
object oSelf = OBJECT_SELF;
effect eVis = EffectVisualEffect(VFX_IMP_UNSUMMON);
ApplyEffectAtLocation(DURATION_TYPE_PERMANENT, eVis, GetLocalLocation(GetPCSpeaker(),"NW_L_I_DIED_HERE"));
SetLocalInt(GetPCSpeaker(), "NW_L_I_DIED", 0);
object oPC = GetPCSpeaker();
ActionCastFakeSpellAtObject(SPELL_FREEDOM_OF_MOVEMENT, OBJECT_SELF);
AssignCommand(GetPCSpeaker(), DelayCommand(0.5, JumpToLocation(GetLocalLocation(oPC,"NW_L_I_DIED_HERE"))));
}
/////fin/////
Chapitre C
-LA CREATION DU PORTAIL DE RETOUR DANS CHAQUE TEMPLE.
I-Créer un portail de retour neutre (commun)
Tag "NW_RECALL_PORTAL
II-Créer un autre portail
Changer son tag ex: "NW_PASSAGE_TEMPLE
Créer une conversation:
portail " voulez vous aller au temple?"
Réponse a) oui
Réponse b) non
III-Réponse a) oui
Mettre dans le Action Taken ce script:
///////debut////////////////////////////////////:
void main()
{
object oItem = GetItemActivated();
object oUser = GetItemActivator();
if (oItem == GetObjectByTag("NW_IT_RECALL"))
{
int nAlignementGE = GetAlignmentGoodEvil(oUser);
int nAlignementLC = GetAlignmentLawChaos(oUser);
object oPortail;
if (nAlignementGE == ALIGNMENT_EVIL && nAlignementLC == ALIGNMENT_CHAOTIC)
oPortail = GetObjectByTag("WP_RECALL_CE");
else if (nAlignementGE == ALIGNMENT_EVIL && nAlignementLC == ALIGNMENT_NEUTRAL)
oPortail = GetObjectByTag("WP_RECALL_NE");
else if (nAlignementGE == ALIGNMENT_EVIL && nAlignementLC == ALIGNMENT_LAWFUL)
oPortail = GetObjectByTag("WP_RECALL_LE");
else if (nAlignementGE == ALIGNMENT_NEUTRAL && nAlignementLC == ALIGNMENT_CHAOTIC)
oPortail = GetObjectByTag("WP_RECALL_CN");
else if (nAlignementGE == ALIGNMENT_NEUTRAL && nAlignementLC == ALIGNMENT_NEUTRAL)
oPortail = GetObjectByTag("WP_RECALL_N");
else if (nAlignementGE == ALIGNMENT_NEUTRAL && nAlignementLC == ALIGNMENT_LAWFUL)
oPortail = GetObjectByTag("WP_RECALL_LN");
else if (nAlignementGE == ALIGNMENT_GOOD && nAlignementLC == ALIGNMENT_CHAOTIC)
oPortail = GetObjectByTag("WP_RECALL_CG");
else if (nAlignementGE == ALIGNMENT_GOOD && nAlignementLC == ALIGNMENT_NEUTRAL)
oPortail = GetObjectByTag("WP_RECALL_NG");
else if (nAlignementGE == ALIGNMENT_GOOD && nAlignementLC == ALIGNMENT_LAWFUL)
oPortail = GetObjectByTag("WP_RECALL_LB");
AssignCommand(oUser, ClearAllActions());
AssignCommand(oUser, ActionJumpToObject(oPortail));
}
}
///////////:fin///////////////////////////////////////////////////////////////////////////////:
IV-Mettre dans le temple
a coté des portails de recall (dont le tag est changé)
les Waypoints correspondants
ex: WP_RECALL_CN
JOL Archives 1.0.1
@ JOL / JeuxOnLine