Page 1 sur 1

I7 : Impossible de terminer une "scene"

MessagePosté: Sam Mar 16, 2019 5:46 pm
par tvisarl
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.

Re: I7 : Impossible de terminer une "scene"

MessagePosté: Dim Mar 17, 2019 12:45 am
par Natrium
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.

Re: I7 : Impossible de terminer une "scene"

MessagePosté: Dim Mar 17, 2019 11:21 am
par tvisarl
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.

Re: I7 : Impossible de terminer une "scene"

MessagePosté: Dim Mar 17, 2019 8:32 pm
par Natrium
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.)

Re: I7 : Impossible de terminer une "scene"

MessagePosté: Lun Mar 18, 2019 9:19 am
par tvisarl
Merci beaucoup :)