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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Transition entre différentes aires selon une variable

Par Sempai le 6/9/2002 à 21:25:47 (#2110921)

Primo, un script

Une porte mène à deux aires différentes selon que la variable iInit est à 0 (ou FALSE) ou à autre chose. Par défaut, cette variable (stockée sur le module (GetModule()) et incrémentée par la suite) est à 0 (ou fausse) car non-déclarée.

Cette porte a comme destination par défaut, la porte de tag : "APRES" et c'est la destination privilégiée (la destination ne change que dans un unique cas, celui où la variable est à 0 (ou fausse)).

Voici le script utilisé, placé dans le OnAreaTransitionClick :

void main()
{
object oClicker = GetClickingObject();
object oTarget;

int iInit = GetLocalInt(GetModule(), "iInit");
if (iInit == FALSE)
{
oTarget = GetObjectByTag("AVANT");
}
// else { oTarget = GetTransitionTarget(OBJECT_SELF); }
else { oTarget = GetObjectByTag("APRES"); }

location lLoc = GetLocation(oTarget);
AssignCommand(oClicker,JumpToLocation(lLoc));
}

Mon problème est le suivant : que la variable soit fausse, à zéro, ou n'importe quoi d'autre à n'importe quel moment, la destination est la même, à savoir "APRES", c'est-à-dire qu'on ne parvient jamais à atteindre la porte "AVANT" correspondant à une unique zone (dans laquelle précisément, iInit est incrémentée).

J'ai déjà essayé avec (iInit == 0) comme condition. La ligne en commentaire souligne que j'ai déjà essayé le script proposé par défaut, en rajoutant juste la condition est cela change. Comme la variable n'est pas déclarée auparavant, je me serais attendu davantage au problème de toujours aller à la porte "AVANT", or c'est le contraire qui se passe.
Je demande donc de l'aide, si possible.

Secundo, un renseignement

Il existe la fonction GetFirstPC(). Je voudrais savoir à qui elle fait référence. Est-ce le 1er PJ à être entré dans le module ? Le 1er inscrit sur la liste du MJ (si le MJ a une liste, je n'en sais rien, je n'ai pas tester le mode MJ) ? Le 1er inscrit sur la liste de chaque joueur (à savoir lui-même dans ce cas) ? Quelqu'un d'autre ?

D'avance, merci. Ce sont les uniques obstacles restants à ce que vous profitiez de mon bon module de jeu :)

Par Kemay le 6/9/2002 à 22:21:55 (#2111273)

Mon problème est le suivant : que la variable soit fausse, à zéro, ou n'importe quoi d'autre à n'importe quel moment, la destination est la même, à savoir "APRES", c'est-à-dire qu'on ne parvient jamais à atteindre la porte "AVANT" correspondant à une unique zone (dans laquelle précisément, iInit est incrémentée).
Ca me paraît bizarre. Tu as vérifié que ta variable était bien nulle au moment de la transition ? Si oui, éventuellement tu peux essayer comme ça, mais je pense que c'est un problème au niveau de ta variable, pas du script.
void main()
{
object oClicker = GetClickingObject();
object oTarget;
int iInit = GetLocalInt(GetModule(), "iInit");

if( iInit )
oTarget = GetObjectByTag("APRES");
else
oTarget = GetObjectByTag("AVANT");

location lLoc = GetLocation(oTarget);
AssignCommand(oClicker,JumpToLocation(lLoc));
}
Si tes objets ayant pour tag "AVANT" et "APRES" sont des waypoints, je te conseille d'utiliser GetWaypointByTag() plutôt que GetObjectByTag()

Il existe la fonction GetFirstPC(). Je voudrais savoir à qui elle fait référence. Est-ce le 1er PJ à être entré dans le module ? Le 1er inscrit sur la liste du MJ (si le MJ a une liste, je n'en sais rien, je n'ai pas tester le mode MJ) ? Le 1er inscrit sur la liste de chaque joueur (à savoir lui-même dans ce cas) ? Quelqu'un d'autre ?
Le premier dans la liste de Aurora. Probablement celui qui est connecté au module depuis le plus longtemps mais c'est pas sûr. En fait ça n'a pas grande importance, Cette fonction sert uniquement à debuter une boucle pour "passer en revue" tous les PCs du module en la couplant avec GetNextPC().

Par Sempai le 6/9/2002 à 22:47:41 (#2111475)

Provient du message de Kemay
Le premier dans la liste de Aurora. Probablement celui qui est connecté au module depuis le plus longtemps mais c'est pas sûr. En fait ça n'a pas grande importance, Cette fonction sert uniquement à debuter une boucle pour "passer en revue" tous les PCs du module en la couplant avec GetNextPC().



Ca c'est, à mon avis, le gros manque d'Aurora : il n'y a pas de commande "Search" dans les scripts ou les dialogues pour savoir où on a placé telle variable ou tel message. Si je dois fouiller tous mes scripts pour retrouver là où j'ai, apparemment, incrémenté ma variable...
Sinon, non, ce ne sont pas des Waypoints mais des portes.

Merci ! Je vais voir tout ça.

Par Azrael07 le 6/9/2002 à 23:34:11 (#2111813)

Ca c'est, à mon avis, le gros manque d'Aurora : il n'y a pas de commande "Search" dans les scripts ou les dialogues pour savoir où on a placé telle variable ou tel message. Si je dois fouiller tous mes scripts pour retrouver là où j'ai, apparemment, incrémenté ma variable...


je dit peut être une grosse conerie, j'ai pas lu le topic en entier, mais la commande "find in file" semble parfaitement adaptée a ce dont tu as besoin. Tu met le nom de ta variable, tu coche les bonnes cases et il te met tout les fichiers ou tu as cette var

enfin j'ai peut etre aussi rien compris a ce que tu voulais...

Par Sempai le 6/9/2002 à 23:46:30 (#2111887)

Provient du message de Azrael07


je dit peut être une grosse conerie, j'ai pas lu le topic en entier, mais la commande "find in file" semble parfaitement adaptée a ce dont tu as besoin. Tu met le nom de ta variable, tu coche les bonnes cases et il te met tout les fichiers ou tu as cette var

enfin j'ai peut etre aussi rien compris a ce que tu voulais...


Maintenant que je me rappelle... c'est très possible en effet. Mais j'ai réglé le problème, tout cela fonctionne très bien maintenant que j'ai... supprimé la ligne incrémentant la variable dans le premier script auquel le module faisait appel :S ...

JOL Archives 1.0.1
@ JOL / JeuxOnLine