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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

le respawn

Par hunteur le 20/10/2002 à 21:21:39 (#2371287)

Je suis un gros noob qui commence un monde et je cherche a comprendre comment marche le respawn ... enfin moi kan je meur sur mon module je respawn et je me releve tout de suite mais je veux que quand je respawn je rentre au temple et et que je perde je l xp et de l'or

comment faire ? c un script si oui lequel ?:aide:

encore un truc !

Par hunteur le 20/10/2002 à 21:46:30 (#2371461)

Jai une 2 eme question ... comment marche le journal ... j ai essayer d aller dans l assistant journal mais je comprend pas tres bien ... par exemple je veux lancer une quete dans un dialogue bah la quete est directement "completed" ... pas cool :(

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)

Pour le respawn, regarde ici :

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)

en vraiment super clair pour une grosse quiche c comment :p ( le respawn )

et ma question pour le journal marche toujours

voila

Par Blam le 21/10/2002 à 19:53:11 (#2377505)

2 soluces, le simple et le "par alignements"

#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