[I7] Ne pas lister le contenu dans le description

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

Modérateurs: Stormi, Otto Grimwald

[I7] Ne pas lister le contenu dans le description

Messagepar ciseur68 le Mar Juil 22, 2014 7:36 pm

Bonjour,
J'ai un objet conteneur dont je souhaite décrire moi même le contenu, et j'aimerai désactiver la description automatique. Exemple :
Code: Tout sélectionner
A box is in Room. The box is a container. A key is in the box. The description of box is "A key is inside.".

J'aimerai éviter alors d'avoir la description du genre :
A key is inside.

You can see a key inside. [phrase automatique à supprimer]
-César-
Avatar de l’utilisateur
ciseur68
Investigateur
 
Messages: 79
Inscription: Mer Fév 10, 2010 6:43 pm

Re: [I7] Ne pas lister le contenu dans le description

Messagepar Mule hollandaise le Mer Juil 23, 2014 1:33 pm

Il me semble qu'il faut ajouter l'attribut "concealed" à la boîte, ça devrait suffire. (Ou, si la boîte est tellement grosse qu'elle ne bougera pas, l'attribut "scenery", qui est "static" + "concealed".)

En syntaxe Inform 7, je suis pas sûr, mais "The box is concealed." ?
Mule hollandaise
Grand Ancien
 
Messages: 1126
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: [I7] Ne pas lister le contenu dans le description

Messagepar ciseur68 le Mer Juil 23, 2014 5:37 pm

J'ai regardé dans la doc, et la règle correspondante est "Rule for deciding the concealed possessions of the box: yes.".
D'après la doc, ça devrait fonctionner, mais en l’occurrence, pour une raison que je n'ai pas encore déterminé, ça ne change rien...
-César-
Avatar de l’utilisateur
ciseur68
Investigateur
 
Messages: 79
Inscription: Mer Fév 10, 2010 6:43 pm

Re: [I7] Ne pas lister le contenu dans le description

Messagepar Natrium le Mer Juil 23, 2014 5:41 pm

En I7, on dit « undescribed » pour concealed. Mais je ne te conseillerais pas de faire ça, on réserve plutôt cet adjectif pour des choses dont le joueur ne connaît pas l'existence. Si la key est undescribed et que tu écris « > search box » (c'est à dire « fouiller boite »), le jeu va te répondre que la boite est vide, parce que c'est comme si la clef était cachée (ce qui n'est pas ce que tu veux, apparemment).

J'avais aussi pensé aux concealed possessions, mais ça sert à empêcher le joueur d'interagir avec les possession de quelqu'un/quelque chose, pas à afficher du texte en conséquence. Ce n'est pas ça qui affiche la ligne après la description.

Pour l'enlever, c'est facile, mais ça dépend de quelle version d'Inform tu utilises.

Pour 6G60:
Code: Tout sélectionner
A procedural rule:
     if we are examining the box, ignore the examine containers rule.

Pour 6L02:
Code: Tout sélectionner
The examine containers rule does nothing if we are examining the box.

Les procedural rules (pour 6G60) ne sont pas recommandée et ralentissent le jeu, c'est pourquoi ça a été enlevé dans la version 6L02. Mais ça reste ok si tu n'en utilises pas beaucoup.

Il y a aussi la solution extrême:
Code: Tout sélectionner
The examine containers rule is not listed in the carry out examining rulebook.

Là, ça supprime carrément la règle, donc la petite ligne que tu veux enlever ne s'affichera plus jamais, pour aucun container. C'est moins flexible que les deux premières solutions.

Enfin, la petite astuce pour trouver le nom d'une règle : la commande « rules » permet d'afficher toutes les règles qui sont suivies au cours de la partie, ce qui permet de trouver quelle est la règle qui affiche telle ou telle ligne.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1185
Inscription: Mar Oct 04, 2011 11:18 pm

Re: [I7] Ne pas lister le contenu dans le description

Messagepar ciseur68 le Mer Juil 23, 2014 5:59 pm

Et pour éviter d'utiliser une règle procédurale dans la version 6G60, il n'y aurait pas moyen de désactiver la règle de listing (ta 3e proposition) avant d'examiner avec un before, et de la réactiver juste après ?
-César-
Avatar de l’utilisateur
ciseur68
Investigateur
 
Messages: 79
Inscription: Mer Fév 10, 2010 6:43 pm

Re: [I7] Ne pas lister le contenu dans le description

Messagepar Natrium le Mer Juil 23, 2014 6:25 pm

Non, justement. On ne peut pas modifier les règles à la volée dans un jeu (pas à ce que je sache, en tout cas). On ne peut que les désactiver selon certaines conditions, comme dans mon post précédent.

Mais on peut contourner le problème, et remplacer l'ancienne règle par une nouvelle qui exécute l'ancienne si telle condition est remplie.
Code: Tout sélectionner
The new examine containers rule is listed instead of the examine containers rule in the carry out examining rules.

This is the new examine containers rule:
        if the noun is not the box, anonymously abide by the examine containers rule.

Mais ce n'est pas trop grave si tu utilises des règles procédurales, si tu n'en utilises que quelques unes il n'y aura pas de ralentissements.

Aussi, dans un vieux projet et que j'apprenais à utiliser Inform, j'avais utilisé un truc dans ce genre :
Code: Tout sélectionner
Check examining the box:
     ignore the examine containers rule.

Ça marche, mais dans la doc, il y a marqué
Writing with Inform a écrit:The "ignore" phrase is only one of a suite, which should only be used in procedural rules.

(c'est vraiment marqué en gras dans le texte original).

Mon ordinateur n'a pas explosé pour autant, alors je sais pas c'est quoi le risque d'utiliser ces instructions en dehors d'une règle procédurale.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1185
Inscription: Mar Oct 04, 2011 11:18 pm

Re: [I7] Ne pas lister le contenu dans le description

Messagepar Otto Grimwald le Mer Juil 23, 2014 8:43 pm

Il y a encore plus simple :


Code: Tout sélectionner
Une boîte is a container in Grand Hall de Fihnargaia.

Un sifflet is in boîte.
After printing the name of boîte: omit contents in listing.


Et à l'exécution, on aura cela :
Vous pouvez voir une boîte, des gardes, le roi des nains et la reine des nains.


Par contre attention lorsqu'on essaye de modifier le comportement en inscrivant des descriptions d'état "en dur" dans le code (de type The description of box is "A key is inside.".), à un moment ou un autre, si la clef est retirée, la description continuera de dire "a key is inside"). Tu peux bien entendu, et c'est peut-être ce que tu avais prévu, écrire une condition dans la description : The description of box is "[if key is inside box]A key is inside[otherwise]A box[endif].".

Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3030
Inscription: Mar Aoû 24, 2004 12:02 pm

Re: [I7] Ne pas lister le contenu dans le description

Messagepar Natrium le Mer Juil 23, 2014 9:08 pm

Ça, c'est pour ne pas lister le contenu des objets dans la description du lieu. Ce que ciseur68 voulait, c'est enlever la phrase qui liste le contenu à la fin de la description de l'objet, quand on l'examine. Là, je pense que la solution que j'ai proposée est celle qu'il faut.

Mais c'est effectivement une bonne idée de préciser le « omit contents in listing », étant donné que c'est lié à son problème.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1185
Inscription: Mar Oct 04, 2011 11:18 pm

Re: [I7] Ne pas lister le contenu dans le description

Messagepar Otto Grimwald le Mer Juil 23, 2014 9:57 pm

ah ok. Ça n'existe pas, mais il pourrait y avoir une commande "omit content in description" :)

Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3030
Inscription: Mar Aoû 24, 2004 12:02 pm

Re: [I7] Ne pas lister le contenu dans le description

Messagepar ciseur68 le Sam Aoû 30, 2014 11:39 am

Bon, merci à vous pour vos solutions, qui malgré tout ne m'ont pas tout à fait satisfaites... M'enfin, on fait avec, ça ira quand même :)
-César-
Avatar de l’utilisateur
ciseur68
Investigateur
 
Messages: 79
Inscription: Mer Fév 10, 2010 6:43 pm

Re: [I7] Ne pas lister le contenu dans le description

Messagepar StephaneF le Mar Sep 02, 2014 9:34 am

Moi j'utilise ça

Code: Tout sélectionner
Rule for printing the name of a container (called M) :
say "[the printed name of M]" ;
omit contents in listing.
Avatar de l’utilisateur
StephaneF
Grand Ancien
 
Messages: 554
Inscription: Jeu Déc 27, 2007 3:53 pm
Localisation: Moselle


Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

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

cron