Forum d'entraide à la création de jeux d'aventure
 
PortailAccueilFAQRechercherS'enregistrerMembresConnexion

Partagez | 
 

 Speech à variables multiples

Aller en bas 
AuteurMessage
CookiewooD
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
avatar

Nombre de messages : 38

Age : 29

Localisation : Gard

Date d'inscription : 18/09/2018


MessageSujet: 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 !)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Arlann
Cliqueur Amateur
Cliqueur Amateur
avatar

Nombre de messages : 221

Date d'inscription : 06/04/2016


MessageSujet: 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... sourire
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
CookiewooD
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
avatar

Nombre de messages : 38

Age : 29

Localisation : Gard

Date d'inscription : 18/09/2018


MessageSujet: 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 sourire

Merci pour le tips aussi de la variable, effectivement c'est beaucoup plus lisible comme ça !

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 2632

Date d'inscription : 01/08/2006


MessageSujet: 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) {
sourire

_________________
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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Contenu sponsorisé




MessageSujet: Re: Speech à variables multiples   

Revenir en haut Aller en bas
 
Speech à variables multiples
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Problem with voice recognition (always red lights!?)
» Présentation de la Fraternité de la Tourmente Vermeille
» Pb de connexion Freebox V5
» Application .NET pour PocketPC
» TTS + mp3 dans un seul message?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Questions / Réponses-
Sauter vers: