Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > portes et WPoint
portes et WPoint
Par daemogorgon le 16/12/2002 à 22:46:40 (#2808187)
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)
ç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)
Par RAT le 17/12/2002 à 3:27:42 (#2809984)
:bouffon:
Par daemogorgon le 17/12/2002 à 7:30:05 (#2810417)
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)
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)
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)
;)
Par daemogorgon le 17/12/2002 à 12:50:32 (#2812089)
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)
Si c'est cela, cela fera un peu byzarre, vous ne trouvez pas?
Par daemogorgon le 17/12/2002 à 13:16:29 (#2812344)
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)
//::///////////////////////////////////////////////
//:: 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)
Et on dit merci Tynril pour la jolie bibliotheque :D
Jaha Effect :D
Par daemogorgon le 17/12/2002 à 21:20:16 (#2817071)
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