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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Respawn apres la mort du PC

Par Aspion le 18/11/2002 à 23:40:39 (#2590777)

Voila , j'ai trouve ca comme script :

Comment créer un objet qui permet de se binder à la Everquest lorsque il est utilisé.




Ce script se met dans l’évènement OnActivateItem du module.



void main()

{

object item = GetItemActivated();

if (GetTag(item) == "AMULETOFBINDING") {

object pc = GetItemActivator();

location loc = GetLocation(pc); // la je vais mettre un way point pour la location

// garde le lieu du bind

SetLocalLocation(item, "BINDPOINT", loc);

// flag pour indiquer que l’objet a été utilisé

SetLocalInt(item, "USED", 1);

// joue un effet visuel, vous pouvez changer la variable VFX_FNF_SUMMON_MONSTER_2 par une autre valeur pour avoir un effet visuel différent

ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2), loc);

}

}


J'aimerai pouvoir faire que ce soit en parlant a un NPC que le Bind change !

Comment faire svp !

Merci d'avance :)

Par eMRaistlin le 19/11/2002 à 11:54:30 (#2592991)

Bein, tout simplement, dans ton dialogue, tu met un script dans la partie Action a entreprendre, dans lequel tu declare une variable locale. Le wizrd de conversation fait ca tres tres bien ^^

Toutefois attention, pour une raison qui m'echappe, ton script fais un Bind sur l'item, et pas sur le PC (SetLocalLocation(item, "BINDPOINT", loc);)

J'aurait plutot mis ca : SetLocalLocation(pc , "BINDPOINT",loc);, mais bon,c'est pas vraiment grave.

Ce qui est embettant, c'est que le wizard lui va affecter la variable sur le PC. Donc, une fois que tu aura fais ton script via le wizard de conversation, ouvre le script editor, et repere le

SetLocalInt(XXX,"BINDPOINT",Loc); et remplace les XXX par GetPCSpeaker() =>>


SetLocalInt(GetPCSpeaker(),"BINDPOINT",Loc);


en esperant avoir été clair. ^^

Par Aspion le 19/11/2002 à 18:41:39 (#2596059)

Merci pour l'info , du coups j'ai mis la variable sur le PC et ca marche super bien ;)

:merci: :merci: :merci:

Nouveau pb

Par Aspion le 19/11/2002 à 20:09:31 (#2596799)

Voici un nouveau pb que j'ai rencontre :


void main()

{
object PJ = GetLastPlayerDied();

int mort =GetLocalInt(PJ, "sanctuairepc");

if (mort = 0)
{


AssignCommand (PJ, ClearAllActions());

AssignCommand(PJ, JumpToObject(GetWaypointByTag("MortLH")));

SendMessageToPC(GetFirstPC(), "Votre pierre de destinee , vous teleporte avant le coup fatale !");

ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectResurrection(), PJ);

ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(GetMaxHitPoints(PJ)), PJ);

RemoveEffects(PJ);

ApplyPenalty(PJ);
}

if (mort = 1)
{

AssignCommand (PJ, ClearAllActions());

AssignCommand(PJ, JumpToObject(GetWaypointByTag("MortWH")));

SendMessageToPC(GetFirstPC(), "Votre pierre de destinee , vous teleporte avant le coup fatale !");

ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectResurrection(), PJ);

ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(GetMaxHitPoints(PJ)), PJ);

RemoveEffects(PJ);

ApplyPenalty(PJ);
}

if (mort = 2)
{

AssignCommand (PJ, ClearAllActions());

AssignCommand(PJ, JumpToObject(GetWaypointByTag("SanctuaireLH")));

SendMessageToPC(GetFirstPC(), "Votre pierre de destinee , vous teleporte avant le coup fatale !");

ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectResurrection(), PJ);

ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(GetMaxHitPoints(PJ)), PJ);

RemoveEffects(PJ);

ApplyPenalty(PJ);
}


}


Quelque soit la valeur de : "sanctuairepc"
et quelque soit le nombre de if que je met , c'est toujours le dernier if qui est valide , donc j'arrive pas vraiment ou je désire

Ai je commis une erreur dans le script ?

Par eMRaistlin le 19/11/2002 à 22:41:56 (#2597946)

Je te ferai pas l'insulte de te demander si tu as bien verifié tes Tag de Waypoint...


Quoique .. ^^:) :p

Par coolstar le 19/11/2002 à 23:37:26 (#2598334)

Prétérition!!

Par Tynril le 20/11/2002 à 0:12:49 (#2598549)

Plusieures choses :
- Déjà, il existe à ma connaissance deux projets sur l'univers T4C, dont un qui m'emploie (Althea, pour ne pas le nommer). Quel utilité d'en créer encore un ?
- Ensuite "Votre pierre de destinee , vous teleporte avant le coup fatale !" s'écrit "Votre Pierre de Destinée vous téléporte avant le coup fatal !"
- GetLocalInt(PJ, "sanctuairepc"); n'est pas une bonne technique de stockage. Les variables stockées sur un joueur sont toutes détruites à la déconnection.
- Finalement, = est un opérateur d'assignation, et retourne toujours VRAI en NWScript (En C, il retourne FAUX si l'assignation échoue, par exemple en cas de modification de constante). L'opérateur de comparaison "Est égal" est ==.

Par Jedaï le 20/11/2002 à 20:13:04 (#2605737)

Donc voici ton script corrigé avec une légère modification, parce que sinon c'est un peu lourd.... Comme je pense que c'est pour un module solo (comme semble l'indiquer l'utilisation de GetFirstPC(), totalement inutile ici... ;) ), je ne te conseillerai pas le système des flags qui est sinon tout à fait indispensable en multi :


void main()

{
object oPJ = GetLastPlayerDied();

string sMort = GetLocalString(PJ, "sanctuairepc");

if (sMort != ")
{

AssignCommand (oPJ, ClearAllActions());

AssignCommand(oPJ, JumpToObject(GetWaypointByTag(sMort)));

SendMessageToPC(oPJ, "Votre pierre de destinée vous téléporte avant le coup fatal !");

ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectResurrection(), oPJ);

ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(GetMaxHitPoints(oPJ)), oPJ);

RemoveEffects(oPJ);

ApplyPenalty(oPJ);
}

}


Voilà, et remplace ta variable sanctuaire par une string (vu son nom elle ne sert que pour ce script, non ?), c'est mieux !:cool:

Par Aspion le 20/11/2002 à 22:07:17 (#2606884)

:merci: :merci: :merci:

Par Iridian le 21/11/2002 à 13:49:29 (#2611277)

Provient du message de Tynril
- GetLocalInt(PJ, "sanctuairepc"); n'est pas une bonne technique de stockage. Les variables stockées sur un joueur sont toutes détruites à la déconnection.


As tu une meilleure technique a proposer ?
Il y a deja un post qui parle de 2 programmes qui permettent de pallier a ce defaut du jeu, mais si tu as une 3e vision, je suis preneur !

Par Tynril le 21/11/2002 à 15:19:56 (#2611867)

CF Persistant :

Gestion des flags en duo avec PWUM par Tynril
Parser Web pour PWUM par Tynril

Tu te demandes encore avec quoi je travaille ? :p

Par Iridian le 21/11/2002 à 15:54:06 (#2612092)

Sacrée boulot Tynril, merci :)

Cependant, j'aurai quelques question supplémentaire a propos du parser web :
-Est-il indispensable ?
-Si oui dans quel cas ?

Si tu pouvais (pour les débutant comme moi :o ) résumer le fonctionnement de PWUM + Parser, ce serai génial !

Un résumé dans le genre qui expliquerai ce qu'il se passe a la connection, a la déconnection, dans le jeux et hors jeux.

Merci d'avance (a toi ou un autre éclairé)

Par eMRaistlin le 21/11/2002 à 16:05:48 (#2612175)

Je suggère dans ce cas un topic dédié éponyme si possible
(merci ^^)
:D :rolleyes: :D

Par Tynril le 21/11/2002 à 16:53:36 (#2612543)

Voilà : http://forums.jeuxonline.info/showthread.php?s=&threadid=139260 :)

JOL Archives 1.0.1
@ JOL / JeuxOnLine