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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Ou vaut-il miuex placer les varaibles de quete ?

Par Etienne le 3/11/2002 à 13:57:32 (#2468733)

Bonjour à tous...
9a avance, ça avance. Le but de mes modules est d'ecrire une Saga jouable par 3 à 5 personnes connecté en même temps.

Je me retrouve avec le problème de où stoker les variable d'éat des quetes
Eta[NomQuete]

si je la stocke sur un PJ (PC) lesautres PJ interogeant le même PNJ (NPC) n'auront pas la même valeur de quete m^me s'il sont en groupe.

Le mieux n'est-il pas de stoocker la valeur de ma variable sur le PNJ lui même (NPC) ?
Bien sur la quete ne peut être faites qu'une seule fois, par le groupe.

Par Jedaï le 3/11/2002 à 14:03:18 (#2468774)

C'est une question philosophique ? :ange:

Par eMRaistlin le 3/11/2002 à 21:49:37 (#2472989)

C'est effectivement mieux de toujours stocker une variable suir un NPC qui demande la quete : pour la simple raison que si un joueur se deconnecte en cours de route, le NPC ne trouverait pas sa variable si tu l'assigne a ce joueur.

A savoir aussi, il existe des fonction coninclude avec CheckParty (^^)

Par Etienne le 4/11/2002 à 19:24:01 (#2479976)

Alors pourquoi que l'editeur par défaut nous ecrit :

if(!(GetLocalInt(GetPCSpeaker(), "QueteAntracyte") == 0))

Plutot qu'une operation du genre :

object oNPC = GetNearestObjectByTag("[MON_NPC]");
if(!(GetLocalInt(oNPC , "QueteAntracyte") == 0))


Il va falloir que je revoie tout mes scripts de mon module et j'en rage...

Y a t'il une astuvce pour changer dans tous mes srcipts ou faut-il user d'huile de coude ?

Par Ocan Aegis-CGR le 4/11/2002 à 19:45:17 (#2480178)

Tu peux remplacer ton GetPCSpeaker() par un GetModule()
Cela affectera la variable à ton module plutôt qu'au PC et point de vue modification de scripte cela ira plus vite.
Une astuce peut-être, pour remplacer uniquement l'affectation de variable serait de faire un remplacement de :

SetLocalInt(GetPCSpeaker()

par un

SetLocalInt(GetModule()

Tu pourra ainsi faire un remplacer tout et t'éviter de le faire manuellement sur chaque ligne de ton scripte et de vérifier si le GetPCSpeaker() est une affectation de variable ou plutôt autre chose.
Par contre il va falloir le faire pour chaque scripte.

Bon courage :)

Ocan (The quiche)

Par eMRaistlin le 4/11/2002 à 21:23:05 (#2481349)

Alors pourquoi que l'editeur par défaut nous ecrit :


Paske l'editeur est prevu essentiellement pour fabriquer des module Solo, sans connaissance de script.

Par Tynril le 4/11/2002 à 21:33:32 (#2481470)

Un script que j'avais fait (récup' rubrique script de NWN-FR) :

//::///////////////////////////////////////////////
//:: Gestion des flags pour modules solo/semi-permanent
//:: inc_flags.nss
//:: Copyright (c) Althea 2002
//:://////////////////////////////////////////////
/*
Bibliotheque de fonction gerant les flags
(variables concernant le joueur) de facon
dynamique, pour eviter qu'ils soyent perdu
en cas de deconnection.
*/
//:://////////////////////////////////////////////
//:: Créé par : Tynril
//:: Créé 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));
}
Ca devrait faire ton bonheur :)

Salut Ocan, en passant ;)

JOL Archives 1.0.1
@ JOL / JeuxOnLine