Pour décrire un duel, j’ai une phrase nommée du genre :
To Duel01:
<< bla-bla >>
if PlayerHP < 1:
say "[line break]Cette fois, il vous a eu !";
now the command prompt is ">";
end the story saying "[note style]C'est fini pour vous. Désolé !";
if HitPoints of Machin01 < 1:
say "[line break]Ça y est, vous lui avez réglé son compte !";
La ligne « end the story » ne fonctionne pas. Elle est complètement ignorée et le jeu continue gaillardement. Pourtant le message précédent s’affiche bien et le command prompt est ré-initialisé…
Pouvez-vous me dire pourquoi ?
C’est une étrange chose. La phrase « Duel01 » est déclenchée par une règle every turn, comme ça :
Every turn when the trigger of the location is not 0:
try performing the trigger of the location;
Dans mon cas « the trigger of the location » vaut 6.
L’action « perform », que je trouve bien pratique, est comme ça :
Performing is an action applying to one number.
Understand "Perform [a number]" as performing.
Carry out performing:
if the number understood is:
-- 1: now the player is in P001;
-- 2: GotoE2fromE1;
-- 3: DoConversation01;
Et pour ça, je tape souvent un simple retour chariot paramétré comme ça:
Understand the command "suite" as something new.
Loafing is an action applying to nothing.
Understand "suite" as loafing.
Carry out loafing:
if the Proc of Episode is 0:
if the WaitCode of location is 0:
say "Quelques instants passent.";
if the WaitCode of location > 0:
try performing the WaitCode of location;
For printing a parser error when the latest parser error is the I beg your pardon error:
try loafing;
follow the every turn rules;
follow the advance time rule;
Alors. Quand j’utilise le retour chariot ça ne marche pas : j’obtiens « Quelques instants passent ». Mais quand j’utilise n’importe quelle commande « normale » y compris « suite », ça marche !
On dirait que le problème est dans le traitement du retour chariot ?
Tout d’abord, désolé pour le retard ! J’ai eu d’autres choses à faire, puis j’ai oublié. (N’hésite pas à relancer le sujet au bout d’un certain temps, c’est correct tant que tu ne spammes pas ! )
Je comprends le problème : tu aimerais qu’une commande vide fasse attendre (ou en tout cas, quelque chose dans le monde du jeu). C’est une mauvaise idée de lancer la machinerie pour un tour dans l’activité printing a parser error parce que cette activité est faite, comme son nom l’indique, à afficher des choses, pas à changer le monde du jeu.
Rule for repairing an empty command:
change the text of the player's command to "suite".
En revanche, comme ça modifie le code du parser, il se peut que ça ne marche pas comme prévu en fonction de la version d’Inform (et je ne sais pas pour laquelle l’extension a été écrite), mais je pense que ça devrait être OK.
Sinon, une petite remarque : je trouve un peu étrange que tu utilises des actions pour ce genre de choses, plutôt que des règles. À moins qu’en fait il s’agit d’actions qui peuvent êtres déclenchées avec des liens ? (Ou que le joueur puisse légitiment taper directement les commandes, mais ça me semble bizarre.)
Merci pour ta réponse. D’abord avant tout et pour commencer, tu n’as évidemment pas à t’excuser pour quoi que ce soit ! Ensuite, ce que tu dis pour mon problème, c’est ça et c’est pas ça.
1 - Il semble que « End the story » marche mal ou pas du tout quand on émet la commande à l’intérieur d’une phrase nommée ( j’aurais dû être plus explicite ). C’est ça que j’ai contourné et je suis très content du contournement, ma foi. Donc problème réglé, au moins pour moi.
2 - Tu as très bien vu que je veux que la touche « Entrée » soit équivalente à la commande « suite ». Ce que je fais marche très bien, mais je suis tout à fait prêt à m’entendre dire qu’il faut faire autrement, et l’extension que tu signales est très intéressante. Je vais essayer, bien sûr.
3 - Pourquoi ça ? Le mieux est que je donne ici un extrait de mon « Aide » standard :
« Certains jeux, tels que celui-ci, font partie d’une histoire. Ils comportent donc des passages essentiellement narratifs ( combats, conversations, passage d’un environnement à un autre, etc. ) que nous appellerons des transitions puisqu’ils correspondent à des changements d’état du monde virtuel dans lequel vous évoluez. Pour vous avertir du fait que vous êtes dans une transition, l’invite de commande change : de « > », elle devient « >> ».
Pendant une transition certaines commandes, telles que les déplacements d’une salle à une autre, peuvent être bloquées. Bien que les autres commandes puissent toujours fonctionner, vous pouvez alors vous limiter à la commande « suite » ou à une simple pression sur la touche « Entrée ». L’invite de commande redevient « > » quand la transition est terminée. »
4 - Dans quelques jours, je vais proposer ici une petite aventure D&D, tout à fait minimaliste. Si tu es intéressé, tu verras mieux ce que j’essaie de faire.
Enfin, je vais essayer de mettre quelque part dans ce forum ( où exactement, au fait ? ) un petit post décrivant mon travail « sérieux » : parler d’'Histoire ( oh, modestement, mais tu remarqueras le « H ») par le truchement de la fiction interactive. Je serai très intéressé par votre opinion à tous.