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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

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)

Que dire...



YEP! ;)

Par eMRaistlin le 1/12/2002 à 17:26:11 (#2686545)

C'est du bon... ^^

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 du bon... ^^

Par contre, ça ralentit pas un peu les scripts rapides ?
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).

Par Azrael07 le 1/12/2002 à 21:04:15 (#2688304)

ouaou :) :) :) :) :)

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)

J'veux dire : c'est extra : je savais pas qu'ils avaient reparés les structures... mais mon probleme, c'est que de toute facon, en faisant l'include, tu va recalculer toutes les données du PC, que tu en ai besoin ou pas. Comme de memoire, ces struct sont morts des la fin d'execution du script, ca me semble plus long en terme temps-machine que de refaire les Get. (mais moins long a taper.... mais bon, faut savoir ce qu'on veut : un script court, ou un script optimisé en execution ^^)

Par coolstar le 2/12/2002 à 10:00:59 (#2691234)

Un Script court [MentionInutileRayée]ou[/MentionInutileRayée] & un script optimisé en exécution!!! :rolleyes:

Par Azrael07 le 2/12/2002 à 17:11:31 (#2694364)

t'as oublié encore deux options, en plus du script cours et du script rapide : le script CLAIR (très important) et le script estetique. Ben oui koi pour moi un source code c de l'art, et y'a des facon plus ou moins jolie de pondre un code source...

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)

Nan nan! Tout à fait d'accord avec toi, même!! ;)

:D

JOL Archives 1.0.1
@ JOL / JeuxOnLine