I7 : Impossible de terminer une "scene"

Pour discuter des langages que nous utilisons pour réaliser nos jeux : problèmes, solutions, suggestions...

Modérateurs: Stormi, Otto Grimwald

I7 : Impossible de terminer une "scene"

Messagepar tvisarl le Sam Mar 16, 2019 5:46 pm

Bonjour,

Dans mon jeu il y a ça :

Code: Tout sélectionner
Combat01 is a scene.
Combat01 begins when CombatID is 1.
Combat01 ends when CombatID is -1.


Combat01 démarre correctement quand CombatID passe à 1, mais continue imperturbablement quand CombatID est devenu -1.
Comprends pas. Pouvez-vous aider ?

J'ai essayé ausi avec deux variables différentes, comme ça :

Code: Tout sélectionner
Combat01 is a scene.
Combat01 begins when CombatID is 1.
Combat01 ends when the status of the Dretch is -1.


Ça ne marche pas non plus. Ouin !

Merci.
Dernière édition par tvisarl le Dim Mar 17, 2019 11:23 am, édité 1 fois.
tvisarl
Celui qui attend à l'affût
 
Messages: 146
Inscription: Sam Juin 18, 2016 9:20 am

Re: I7 : Impossible de terminer une "scene"

Messagepar Natrium le Dim Mar 17, 2019 12:45 am

Normalement, avec ce que tu donnes, ça devrait fonctionner.

Un truc à savoir est que les conditions des scènes ne sont vérifiées qu'au début et à la fin des tours. Donc si CombatID est -1 au milieu d'un tour, mais qu'elle change de valeur avant la fin du tour, alors la scène ne va pas se terminer.

Sinon, comme ça, je ne vois pas ce qui pourrait causer le problème.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1109
Inscription: Mar Oct 04, 2011 11:18 pm

Re: I7 : Impossible de terminer une "scene"

Messagepar tvisarl le Dim Mar 17, 2019 11:21 am

J'ai peut-être trouvé... un autre problème. Ça, ça marche : la scène Glouglou démarre et se terrmine normalement.

Code: Tout sélectionner
"Scenes" by Thierry (in French)

Part 1 - Variables

CombatID is a number variable.
CombatID is 0.

Glouglou is a scene.
Glouglou begins when CombatID is 1.
Glouglou ends when CombatID is -1.

Part 2 - Test

Salon is a room.
Cuisine is a room. It is north of salon.
Vestibule is a room. It is west of salon.

After going from salon to cuisine:
   now CombatID is 1;
   showme CombatID;

After going from salon to vestibule:
   now CombatID is -1;
   showme CombatID;

Test me with "scenes/n/s/w".


Mais ÇA, ça ne marche pas !

Code: Tout sélectionner
"Scenes" by Thierry (in French)

Part 1 - Variables

CombatID is a number variable.
CombatID is 0.

Glouglou is a scene.
Glouglou begins when CombatID is 1.
Glouglou ends when CombatID is -1.

Part 2 - Action à problèmes

Understand the command "suite"  as something new.
Loafing is an action applying to nothing.

Understand "suite" as loafing.

Carry out loafing:
   if CombatID is 1:
      now CombatID is -1;
      showme CombatID;
   
For printing a parser error when the latest parser error is the I beg your pardon error:
   change the text of the player's command to "suite";
   try loafing;
   follow the every turn rules;
   follow the advance time rule;
   
Part 3 - Test

Salon is a room.
Cuisine is a room. It is north of salon.
Vestibule is a room. It is west of salon.

After going from salon to cuisine:
   now CombatID is 1;
   showme CombatID;

Test me with "scenes/n/s".


Je tape "Test me" et tout se passe normalement. Puis, ricanant de rage et de haine, j'enchaîne par une frappe sur la touche "Entrée". Le showme confirme que CombatID est passé à -1, et la scène Glouglou ne se termine pas.
Je me permets d'insister, tenant essentiellement à la touche "Entrée" pour simplifier les passages de combat. Et puis, je déteste le "g".

Merci d'avance, Natrium.

P.S : Si j'emploie *Test me with "scenes/n/s/suite"* il n'y a aucun problème.
tvisarl
Celui qui attend à l'affût
 
Messages: 146
Inscription: Sam Juin 18, 2016 9:20 am

Re: I7 : Impossible de terminer une "scene"

Messagepar Natrium le Dim Mar 17, 2019 8:32 pm

Ben oui, c'est ce que je disais ! Quand la commande est vide et que l'activité printing a parser error se lance, aucun tour ne se passe, alors la règle qui vérifie les conditions pour les scènes ne se lance pas et la scène ne se termine pas !

Le plus simple, c'est d'ajouter follow the scene changing rules.

Code: Tout sélectionner
For printing a parser error when the latest parser error is the I beg your pardon error:
   change the text of the player's command to "suite";
   try loafing;
   follow the every turn rules;
   follow the advance time rule;
   follow the scene changing rules;


Ou alors, dans ce cas, autant tout remplacer par la règle qui s'occupe de toute la machinerie des tours :

Code: Tout sélectionner
For printing a parser error when the latest parser error is the I beg your pardon error:
   change the text of the player's command to "suite";
   try loafing;
   follow the turn sequence rules.


MAIS c'est quelque chose que je ne recommande pas du tout. Cette activité ne devrait être utilisée que pour afficher un message ou autres trucs cosmétiques, pas pour faire des choses dans le monde du jeu. La preuve, c'est que le mécanisme des scènes ne fonctionnait plus dans ce cas précis. Alors oui, on peut réparer, comme ci-dessus, mais il peut encore y avoir d'autres effets secondaires qui ne ce sont pas encore manifestés. Je l'avais déjà dit dans ce sujet (dans lequel tu avais d'ailleurs participé).

Je recommande plutôt d'utiliser l'extension mentionnée dans mon dernier message du sujet en lien ci-dessus. Je n'ai pas testé sur 6L38, mais je pense que ça devrait fonctionner. (Mais ça peut ne pas, si 6M62 a changé beaucoup de code sous-jacent.)
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1109
Inscription: Mar Oct 04, 2011 11:18 pm

Re: I7 : Impossible de terminer une "scene"

Messagepar tvisarl le Lun Mar 18, 2019 9:19 am

Merci beaucoup :)
tvisarl
Celui qui attend à l'affût
 
Messages: 146
Inscription: Sam Juin 18, 2016 9:20 am


Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron