Aller au contenu

Utilisation de la variable locale herebefore


soifran

Messages recommandés

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>

Ok...ca c'est fait...suivant...
banecteamsoifranv2.png

FOMM à jour

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...