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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

portes et WPoint

Par daemogorgon le 16/12/2002 à 22:46:40 (#2808187)

Encore 1 petit soucis.

J'ai 1 porte qui donne sur 1 WPoint. Ce WP donne sur une piece qqconque. Cette piece à 1 porte et j'aimerais qu'elle redonne sur la 1ere porte via le WP devant la porte A. Pas clair ?


WP : PorteA > WP : PorteB > WP : PorteA

La porte A est sur une zone, la porte B est sur 1 autre zone.

Je pense qu'il faut mettre une variable contenant le WPA sur la porte B, pour que la porte B retourne sur A mais je ne sais pas comment faire.

Par Templier le 16/12/2002 à 23:37:12 (#2808691)

heuuu pourquoi tu fais tout simplement pas un passage de porte dans les deux sens ?? (qui est deux base dans les passage de porte)

ça te permettra de pouvoir entrer par la porte A et donc arriver à la porte B et ensuite pouvoir faire demi tour.

A moins bien sur que je n'ai pas compris ta question :)

Par coolstar le 16/12/2002 à 23:57:48 (#2808892)

A moins bien sûr que daemogorgon n'est pas compris SA question... :maboule:

Par RAT le 17/12/2002 à 3:27:42 (#2809984)

A moins que les deux n'ont pas compris la question lol :D

:bouffon:

Par daemogorgon le 17/12/2002 à 7:30:05 (#2810417)

Je vois que personne a compris l'utilite de l'affaire.
J'ai 1 ville avec de nombreuses portes (comme c'est 1 ville).
J'ai 1 zone avec 6 type d'interieur de maison differents.
Maintenant, quand j'ouvre 1 porte dans la ville, j'aimerais aller dans 1 des interieurs de maison.
Cela permet d'avoir toujours la possibilite d'entrer, et donc de ne pas avoir le message C'est ferme de l'interieur.
Toutes les portes de la ville donnent sur qqchose. Voila.
Une idee pour le post precedant ?

Par Iridian le 17/12/2002 à 8:35:06 (#2810563)

Je comprend pas l'utilité des WP dans ce cas ...
Chaque maison a l'extérieur a une porte, chaque intérieur a une porte, tu fait correspondre a chaque porte extérieur une porte intérieur et le tour est joué ! (en autorisant le passage dans les 2 sens comme expliqué plus haut)

Par Jaha Effect le 17/12/2002 à 8:46:46 (#2810602)

Bon si j'ai bien compris, tu veux (en simplifiant) correspondre par exemple:
1 intérieur de maison (intérieur 1) à 10 portes (porte1 à porte10) placée un peu partout sur ta carte.
Pour rentrer dans la maison (intérieur 1) depuis n'importe quel porte pas de problème, il suffit de leur donner le même tag de destination.
Par contre, là ou ça se complique c'est quand tu te trouve dans la maison (intérieur 1) et que tu est entré par la porte 5, tu veux déboucher devant cette même porte et pas la porte 1 ou la porte 10.

Est je bien tout compris?

Jaha Effect :D

Par coolstar le 17/12/2002 à 11:05:17 (#2811276)

Huummm... J'ai déjà travaillé sur ce genre de prob récemment... cependant quelques points concernant ta demande m'apparaissent encore obscurs??? tu voudrais donc que toutes les portes de ta Ville amènent en tout est pour tout à seulement 6 "Intérieurs"? Mais tu veux faire ça de façon aléatoire??? nan, parce que si c pas aléatoire alors pas besoin de tant se casser le bol que ça tu sais... mais si par contre c aléatoire c une autre paire de manches (mais tout à fait faisable!)... Cependant, c pas très cohérent comme idée, vu que d'emprunter une porte n'amènera jamais au même endroit! et puis, tu peux rien y mettre de tout façon (aléatoire ou pas!), vu que si un PC Tue ou Pille à tout vent et ben tes "Intérieurs" ainsi affectés le seront de fait pour toutes les autres "Maisons"... Prob déjà évoqué par ailleurs... Mais c toi qui vois!!! :D

;)

Par daemogorgon le 17/12/2002 à 12:50:32 (#2812089)

Jaha t'as tout compris.
CoolStar, non je veux pas du aleatoire. Les WP de chaque porte sont uniques. Donc, on peut leur mettre 1 (ou plusieures) variables accrochees, ce qui permettrait non seulement de retrouver son chemin, mais aussi de verifier si le lieu a ete pille ou pas (ou vidé seulement) et de remettre ce qui a ete enlevé depuis une autre porte (la, ca va demander un script interressant).



:maboule:

Par RAT le 17/12/2002 à 12:59:11 (#2812171)

hmmm, je ne sais pas si j'ai tout suivi. Mais si tu fais pour plusieurs portes un nombre limité d'intérieur. Cela va faire que si un PC rentre dans la maison par une porte, et qu'un autre PC rentre dans la maison par une autre qui amène tous les deux aux même endroits. Ils vont se retrouver non???

Si c'est cela, cela fera un peu byzarre, vous ne trouvez pas?

Par daemogorgon le 17/12/2002 à 13:16:29 (#2812344)

ok, partons du principe que c'est un module solo. ;)

Ce qui me faut, c'est comment qu'on fait pour attacher une variable sur un objet (entre autre 1 porte ou 1 WP), et comment qu'on peut recuperer l'adresse d'un point de passage ?

Par daemogorgon le 17/12/2002 à 20:11:46 (#2816366)

J'ai trouve pour les portes. En utilisant une bibliotheque :
//::///////////////////////////////////////////////
//:: Gestion des flags pour modules solo/semi-permanent
//:: at_flags.nss
//:: Copyright (C) Althea 2002
//::///////////////////////////////////////////////
/*
Bibliotheque de fonction gerant les flags
(variables concernant le joueur) de facon
dynamique, pour eviter qu'ils soient perdu
en cas de deconnexion.
*/
//:://////////////////////////////////////////////
//:: Cree par : Tynril
//:: Cree le : 22/09/2002
//:://////////////////////////////////////////////

//:://////////////////////////////////////////////
//:: DECLARATION DES FONCTIONS
//:://////////////////////////////////////////////
// Recupere le nom d'une variable flaguee
string GetFlagName(object oJoueur, string sFlag);
// Cree un flag de type Float
void SetFlagFloat(object oJoueur, string sFlag, float fValeur);
// Cree un flag de type Int
void SetFlagInt(object oJoueur, string sFlag, int nValeur);
// Cree un flag de type Location
void SetFlagLocation(object oJoueur, string sFlag, location lValeur);
// Cree un flag de type Object
void SetFlagObject(object oJoueur, string sFlag, object oValeur);
// Cree un flag de type String
void SetFlagString(object oJoueur, string sFlag, string sValeur);
// Recupere un flag de type Float
float GetFlagFloat(object oJoueur, string sFlag);
// Recupere un flag de type Int
int GetFlagInt(object oJoueur, string sFlag);
// Recupere un flag de type Location
location GetFlagLocation(object oJoueur, string sFlag);
// Recupere un flag de type Object
object GetFlagObject(object oJoueur, string sFlag);
// Recupere un flag de type String
string GetFlagString(object oJoueur, string sFlag);

//:://////////////////////////////////////////////
//:: ENREGISTREMENT DES FONCTIONS
//:://////////////////////////////////////////////
// Recupere le nom d'une variable flaguee
string GetFlagName(object oJoueur, string sFlag)
{
//Verification des informations fournies
string sReturn;
if(GetIsPC(oJoueur) && sFlag != ")
{ //Execution du script
//Recuperation des informations du joueur
string sPlayerName = GetPCPlayerName(oJoueur);
string sName = GetName(oJoueur);
string sPublicKey = GetPCPublicCDKey(oJoueur);
//Definition de la valeur
sReturn = sPlayerName+sPublicKey+sName+sFlag;
}else{ //Retour d'une erreur
//Definition de la valeur
sReturn = "ERREUR DANS L'APPEL DE LA FONCTION GetFlagName";
}
//Renvoit de la valeur
return sReturn;
}

// Cree un flag de type Float
void SetFlagFloat(object oJoueur, string sFlag, float fValeur)
{
SetLocalFloat(GetModule(), GetFlagName(oJoueur, sFlag), fValeur);
}

// Cree un flag de type Int
void SetFlagInt(object oJoueur, string sFlag, int nValeur)
{
SetLocalInt(GetModule(), GetFlagName(oJoueur, sFlag), nValeur);
}

// Cree un flag de type Location
void SetFlagLocation(object oJoueur, string sFlag, location lValeur)
{
SetLocalLocation(GetModule(), GetFlagName(oJoueur, sFlag), lValeur);
}

// Cree un flag de type Object
void SetFlagObject(object oJoueur, string sFlag, object oValeur)
{
SetLocalObject(GetModule(), GetFlagName(oJoueur, sFlag), oValeur);
}

// Cree un flag de type String
void SetFlagString(object oJoueur, string sFlag, string sValeur)
{
SetLocalString(GetModule(), GetFlagName(oJoueur, sFlag), sValeur);
}

// Recupere un flag de type Float
float GetFlagFloat(object oJoueur, string sFlag)
{
return GetLocalFloat(GetModule(), GetFlagName(oJoueur, sFlag));
}

// Recupere un flag de type Int
int GetFlagInt(object oJoueur, string sFlag)
{
return GetLocalInt(GetModule(), GetFlagName(oJoueur, sFlag));
}

// Recupere un flag de type Location
location GetFlagLocation(object oJoueur, string sFlag)
{
return GetLocalLocation(GetModule(), GetFlagName(oJoueur, sFlag));
}

// Recupere un flag de type Object
object GetFlagObject(object oJoueur, string sFlag)
{
return GetLocalObject(GetModule(), GetFlagName(oJoueur, sFlag));
}

// Recupere un flag de type String
string GetFlagString(object oJoueur, string sFlag)
{
return GetLocalString(GetModule(), GetFlagName(oJoueur, sFlag));
}

et dans le OnAreaTransitionClick de la porte de depart :

#include "_gest_flag"

void main()
{
// on assigne 1 variable retour sur le PJ representant
// le WayPoint devant la porte de depart.
object oPJ = GetClickingObject();
object oWP = GetNearestObject(OBJECT_TYPE_WAYPOINT);
SetFlagObject(oPJ, "porte_retour", oWP);
// on envoie le PC sur la piece demandee

object oTarget = GetTransitionTarget(OBJECT_SELF);
location lLoc = GetLocation(oTarget);
AssignCommand(oPJ,JumpToLocation(lLoc));
}

et dans le OnAreaTransitionClick de la porte de d'arrive :

#include "_gest_flag"

void main()
{
// recupration du PJ qui utilise la porte
object oPJ = GetClickingObject();
// recuperation de la variable "porte retour"
object oTarget = GetFlagObject(oPJ, "porte_retour");
location lLoc = GetLocation(oTarget);
// retour a la case depart
AssignCommand(oPJ,JumpToLocation(lLoc));
}

et ben, ca marche. Bon OK, mode solo, mais je pense que maintenant qq1 de balaize va essayer pour plusieurs PJ..
Maintenant je m'attaque a gerer le pb du pillage, de la recup d'objets ou de PNJ tue ou pas.

Par Jaha Effect le 17/12/2002 à 20:17:39 (#2816427)

Par contre quand tu met un code, si tu pouvais le mettre dans des balises PHP ça serait cool, parceque là c'est franchement illisible.

Et on dit merci Tynril pour la jolie bibliotheque :D

Jaha Effect :D

Par daemogorgon le 17/12/2002 à 21:20:16 (#2817071)

ups, je referais pas sans les balises.
Et bien sur, je remercie Tynril.:merci:

Par coolstar le 18/12/2002 à 3:08:59 (#2819385)

Provient du message de daemogorgon
ups, je referais pas sans les balises.

Vi! et même que tu peux encore le faire avec 'EDITER'... :D

;)

JOL Archives 1.0.1
@ JOL / JeuxOnLine