Jump to content

Utilisation de la variable locale herebefore


soifran

Recommended Posts

Gronichonha les gars.
JE sors ce "tuto" pour repondre à la question de Teenage caveman.
Si tu veux que l'action ne se repete qu'une fois, alors tu devra te servir de ce qu'on appele une variable locale, que tu as deja du remarquer:

#define LVAR_Herebefore (4)

Cette variable, comme expliquée si dessous sert a faire en sorte de ne pas repeter une action si elle a déja été faites.
Herebefore, en gros si le joueur a déjà été la.

c'est simple d'emploie.
Tu testes la variable au début de ton premier noeud de dialogue.
c'est la commande:

if local_var(LVAR_Herebefore)==0

en suite tu envoie ton processus de dialog:
then GStrucmuche(bidule_due_,104,etc)..etc ;
et à la fin tu met la variable à 1:

set_local_var(LVAR_Herebefore,1);

Ensuite 2 tu créé vite fait une autre procédure au cas ou le type à deja parlé au PNJ du style:

If local_var(LVAR_Herebefore)==1 then float_msg(self_obj,mstr(140),FLOAT_MSG_RED);

le p'tit message flottant classique du pnj qui n'a plus rien a te dire de particulier en somme.

Salut Ben.
C'était bien ça.
J'ai remanié un peu le script pour faire en sorte que la deuxieme fois ou tu rentres dans la map, le pnj ne declenche plus un dialogue.

procedure critter_p_proc beginif (local_var(LVAR_Herebefore) == 0) and (tile_distance_objs( self_obj, dude_obj ) <= 25) and (tile_distance_objs( self_obj, dude_obj ) >5) and (local_var(0)==0) and obj_can_see_obj(self_obj,dude_obj) then animate_run_to_tile(tile_num(dude_obj));set_local_var(LVAR_Herebefore,1);If (local_var(LVAR_Herebefore)==0) and (obj_can_see_obj(Self_obj,dude_obj)) then float_msg(Self_obj,mstr(103),FLOAT_MSG_GREEN);set_local_var(LVAR_Herebefore,1);If local_var(LVAR_Herebefore)==1 then critter_attempt_placement(Self_obj,17496,0);end
Si on décode mon script:
Je teste si c'est la premiere fois que le heros entre dans la map
if (local_var(LVAR_Herebefore) == 0)
ensuite la suite de contrainte de distance par rapport au heros,
qui declenchera la course vers ce celui ci.
Apres ça je met donc la variable locale herebefore à 1.
Ensuite je teste à nouveau si la variable herebefore est à 0 et je decide
que si le pnj vois le personnage il lui envoie un message flottant.
Je met la variable locale a 1 (herebefore)
Ensuite je teste si la variable herebefore est egal à 1.
c'est à dire si le héros a quitté la map aprés avoir déclenché la 1ere partie du script et je fait en sorte que Zvetlana sois de nouveau a sa position d'origine.

En effet, si tu ne fais pas ça, elle t'attendra la ou elle s'est arreté quand tu es sortie de la map.
Ce n'est pas forcement gênant mais j'ai voulut tester cette fonction.
Elle marche bien ;)

Test un truc de ton coté et dis moi si ma "méthode" fonctionne s'il te plait.

Synthèse du "problème":
Inclure un test de l'état de la variable herebefore et l'incrementer.

Cool :)

<div><object width="480" height="381"><param name="movie" value="http://www.dailymotion.com/swf/x9eque_herebefore_videogames&related=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.dailymotion.com/swf/x9eque_herebefore_videogames&related=1" type="application/x-shockwave-flash" width="480" height="381" allowFullScreen="true" allowScriptAccess="always"></embed></object><br /><b><a href="http://www.dailymotion.com/video/x9eque_herebefore_videogames">Herebefore</a></b><br /><i>envoyé par <a href="http://www.dailymotion.com/soifette">soifette</a>. - <a href="http://www.dailymotion.com/channel/videogames">Plus de jeux vidéo !</a></i></div>
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...