CookiewooD Adepte de la Grande Tasse Bleue
Nombre de messages : 54
Age : 35
Localisation : Gard
Date d'inscription : 18/09/2018
| Sujet: Speech à variables multiples Mer 31 Oct 2018 - 11:27 | |
| Bonjour à tous ! J'ai crée un dialogue au travers d'une porte qui est un hotspot. Le PNJ derrière la porte ne veut pas ouvrir et je voudrais que plus on clic sur la porte, plus le ton monte entre le player et le PNJ. J'ai crée des variables et je commence à avoir l'habitude de les utiliser, d'habitude je m'en sors pas trop mal mais là, il doit y avoir un truc qui m'échappe. Autant, il manque juste un tout petit truc que je ne vois pas. Voilà à quoi ça ressemble. - Code:
-
function hPorte_Interact() { if (Charmetmouette==1) { player.Walk(3135, 835, eBlock, eWalkableAreas); player.FaceDirection(eDirectionUp); player.LockView(3); player.Animate(3, 2, eOnce); player.UnlockView(3); player.Say("Toc Toc ?"); cMaire.Say("Qui est là ?"); player.Say("Bonjour, c'est Suli. Je voudrais vous parler."); cMaire.Say("Je suis occupé, vas t'en !"); Knocknock=Knocknock+1; } else if (Charmetmouette==1 && Knocknock==1) { player.Walk(3135, 835, eBlock, eWalkableAreas); player.FaceDirection(eDirectionUp); player.LockView(3); player.Animate(3, 2, eOnce); player.UnlockView(3); cMaire.Say("Quoi encore ?"); player.Say("C'est vraiment important ! Allez, ouvrez moi !"); cMaire.Say("Fiche le camp je t'ai dit !"); Knocknock=Knocknock+1; }
else if (Charmetmouette==1 && Knocknock==2) { player.Walk(3135, 835, eBlock, eWalkableAreas); player.FaceDirection(eDirectionUp); player.LockView(3); player.Animate(3, 2, eOnce); player.UnlockView(3); cMaire.Say("Bon sang mais on peut jamais être tranquille ?!"); player.Say("Vite, il faut que vous ouvriez la porte ! Le village...euh...Le village EST EN FEU !"); cMaire.Say("Bien essayé, mais ma fenêtre est ouverte et je ne sens aucune fumée. Déguerpis !"); Knocknock=Knocknock+1; }
else if (Charmetmouette==1 && Knocknock==3) { player.Walk(3135, 835, eBlock, eWalkableAreas); player.FaceDirection(eDirectionUp); player.LockView(3); player.Animate(3, 2, eOnce); player.UnlockView(3); cMaire.Say("Suli, si c'est encore toi, je t'assure que je vais me fâcher !!"); player.Say("Archibaldus Balthazarius d'Harmony...Je suis la mort...Je viens te chercher... Ooouuuhhhh."); cMaire.Say("HAAAAAA !!!"); Knocknock=Knocknock+1;
}
else if(Charmetmouette==1 && Knocknock==4) { player.Walk(3135, 835, eBlock, eWalkableAreas); player.FaceDirection(eDirectionUp); player.LockView(3); player.Animate(3, 2, eOnce); player.UnlockView(3); cMaire.Say("..."); player.Say("Il ne répond plus. J'y suis peut-être allé un chouilla trop fort ?"); Knocknock=Knocknock-4;
} else { player.Walk(3135, 835, eBlock, eWalkableAreas); player.FaceDirection(eDirectionUp); player.LockView(3); player.Animate(3, 2, eOnce); player.UnlockView(3); player.Say("Malheureusement, il n'y a pas de cours de crochetage de serrures à l'école."); } } Avec ce code, seule la première occurrence se lance à savoir : player.Say("Toc Toc ?"); cMaire.Say("Qui est là ?"); player.Say("Bonjour, c'est Suli. Je voudrais vous parler."); cMaire.Say("Je suis occupé, vas t'en !"); Knocknock=Knocknock+1;" Alors que j'ai l'impression que la variable knocknock est bien palcé partout. Si je remplace les else if par des if, alors là, tout se lance d'affilé en un seul clic, alors que je voudrais que le joueur clic 4 fois bien distinctes. Une idée ? Merci merci <3 (La première partie du jeu est bientôt terminé ! Nous allons lancer une alpha test avec les collègues d'ici une semaine si au passage vous pouvez me glisser où je peux vous poster cette première partie en Alpha, je prends !) |
|
Arlann Cliqueur Amateur
Nombre de messages : 286
Date d'inscription : 06/04/2016
| Sujet: Re: Speech à variables multiples Mer 31 Oct 2018 - 11:56 | |
| Salut, il y a un petit problème avec la variable Charmetmouette qui devient prioritaire sur Knocknock dans ton code. Garde en tête qu'une condition se lit toujours de gauche à droite et que si tous les arguments sont vérifiés, toutes les conditions else suivantes seront ignorées. La structure de ta fonction devrait être : - Code:
-
function hPorte_Interact() { if (Charmetmouette==1) { if ( Knocknock==0) { // CODE A INSERER Knocknock=1; } else if ( Knocknock==1) { // CODE A INSERER Knocknock=2; } else if (Knocknock==2) { // CODE A INSERER Knocknock=3; } else if (Knocknock==3) { // CODE A INSERER Knocknock=4; } else if (Knocknock==4) { // CODE A INSERER Knocknock=0 ; } } else { // CODE A INSERER (si Charmetmouette!= 1) } } Note que j'ai modifié ta façon d'incrémenter la variable Knocknock pour la rendre plus lisible. J'espère être assez clair pour que tu puisses comprendre d'où vient ton problème... |
|
CookiewooD Adepte de la Grande Tasse Bleue
Nombre de messages : 54
Age : 35
Localisation : Gard
Date d'inscription : 18/09/2018
| Sujet: Re: Speech à variables multiples Mer 31 Oct 2018 - 12:15 | |
| Haaannn merci Arlann ! J'avais remarqué que je pouvais faire comme tu as dis ou avec les &&, mais je ne comprenais pas quelle était la différence précise entre les 2 manières de faire ! Merci ça va beaucoup m'aider pour la suite Merci pour le tips aussi de la variable, effectivement c'est beaucoup plus lisible comme ça ! |
|
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Speech à variables multiples Mer 31 Oct 2018 - 16:43 | |
| Ou bien tu aurais aussi tout simplement pu remplacer la ligne - Code:
-
if (Charmetmouette==1) { dans le code que tu as posté initialement par - Code:
-
if (Charmetmouette==1 && Knocknock==0) { _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
Contenu sponsorisé
| Sujet: Re: Speech à variables multiples | |
| |
|