Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Une structure pour vous simplifier la vie
Une structure pour vous simplifier la vie
Par Tynril le 1/12/2002 à 16:48:50 (#2686317)
struct TynObject {
object oO;
int IsValid;
string sName;
string sResRef;
string sTag;
int nGP;
string sAlign;
float fFacing;
int nGender;
int nAC;
int nAge;
object oArea;
string sDeity;
int nLevel;
int nPjType;
int nHP;
int nMaxHP;
};
struct TynObject Load(object oObjectToLoad) {
struct TynObject strObject;
if(GetIsObjectValid(oObjectToLoad)) {
strObject.IsValid = TRUE;
strObject.oO = oObjectToLoad;
strObject.sName = GetName(oObjectToLoad);
strObject.sResRef = GetResRef(oObjectToLoad);
strObject.sTag = GetTag(oObjectToLoad);
strObject.nGP = GetGold(oObjectToLoad);
string sAlpha, sBeta;
int nAlignGE = GetAlignmentGoodEvil(oObjectToLoad);
int nAlignLC = GetAlignmentLawChaos(oObjectToLoad);
if (nAlignGE == ALIGNMENT_GOOD) sAlpha = "G";
else if(nAlignGE == ALIGNMENT_NEUTRAL) sAlpha = "N";
else if(nAlignGE == ALIGNMENT_EVIL) sAlpha = "E";
if (nAlignLC == ALIGNMENT_LAWFUL) sBeta = "L";
else if(nAlignLC == ALIGNMENT_NEUTRAL) sBeta = "N";
else if(nAlignLC == ALIGNMENT_CHAOTIC) sBeta = "C";
strObject.sAlign = sBeta+sAlpha;
strObject.fFacing = GetFacing(oObjectToLoad);
strObject.nGender = GetGender(oObjectToLoad);
strObject.nAC = GetAC(oObjectToLoad);
strObject.nAge = GetAge(oObjectToLoad);
strObject.oArea = GetArea(oObjectToLoad);
strObject.sDeity = GetDeity(oObjectToLoad);
strObject.nLevel = GetHitDice(oObjectToLoad);
int nPJType;
if (GetIsPC(oObjectToLoad)) nPJType = 1;
else if(GetIsDM(oObjectToLoad)) nPJType = 2;
else nPJType = 0;
strObject.nPjType = nPJType;
strObject.nHP = GetCurrentHitPoints(oObjectToLoad);
strObject.nMaxHP = GetMaxHitPoints(oObjectToLoad);
} else {
strObject.oO = OBJECT_INVALID;
strObject.oArea = OBJECT_INVALID;
strObject.sName = "OBJECT_INVALID";
strObject.sResRef = "OBJECT_INVALID";
strObject.sTag = "OBJECT_INVALID";
strObject.sAlign = "OBJECT_INVALID";
strObject.sDeity = "OBJECT_INVALID";
strObject.nGP = 0;
strObject.nGender = GENDER_BOTH;
strObject.nAC = 0;
strObject.nAge = 0;
strObject.nLevel = 0;
strObject.nPjType = 0;
strObject.nHP = 0;
strObject.nMaxHP = 0;
strObject.IsValid = FALSE;
}
return strObject;
}
Vous n'en avez pas marre de devoir utiliser des GetTruc() sur un PJ 250x par script ? Moi si. Alors j'ai fait cette structure, qui charge toutes les données sur le PJ une bonne fois pour toute. J'ai par la même occasion constaté que (visiblement), le bug de structure de chaînes de caractère est corrigé (avant, les chaînes étaient écrasées dans les structures, à cause de la gestion de la mémoire).
Ca se met dans un include, et ca s'utilise comme ça :#include "TynObject"
void main() {
//Chargement des informations sur l'objet, ici dans un OnEnter
struct TynObject PJ = Load(GetEnteringObject());
//Les instructions que l'on veut...
SendMessageToPC(PJ.oO,"Ton nom: "+PJ.sName+"; ton Dieu: "+PJ.sDeity);
}
Par coolstar le 1/12/2002 à 17:07:53 (#2686449)
YEP! ;)
Par eMRaistlin le 1/12/2002 à 17:26:11 (#2686545)
Par contre, ca ralentit pas un peu les scripts rapides ?
Par Tynril le 1/12/2002 à 20:46:47 (#2688120)
Provient du message de eMRaistlin
C'est pas à utiliser dans une boucle qui change d'un PJ à l'autre. Dès le moment que le PJ est chopé une fois, ça ralenti que très peu le CPU (dans le sens où il charge une fois pour toutes la totalité des çaractéristiques, qui ne sont plus rechargées par la suite).
C'est du bon... ^^
Par contre, ça ralentit pas un peu les scripts rapides ?
Par Azrael07 le 1/12/2002 à 21:04:15 (#2688304)
je savais pas k'on pouvais utiliser les struc pour le langage de nwn. Ca va on ne peu plus me simplifier la vie tout ca.
Merci Tynril, ca c'est vraiment la bonne nouvelle de la semaine.
Youpiiiiiiiiiiiiii
Par eMRaistlin le 2/12/2002 à 9:52:55 (#2691184)
Par coolstar le 2/12/2002 à 10:00:59 (#2691234)
Par Azrael07 le 2/12/2002 à 17:11:31 (#2694364)
Enfin bon le prinsipal reste quand meme la vitesse d'execution
hein koi je suis hors sujet ??? bon ben je sors alors ^_^
Par coolstar le 2/12/2002 à 20:48:45 (#2696461)
:D
JOL Archives 1.0.1
@ JOL / JeuxOnLine