Bibliothèque (French.h) : pistes d'amélioration

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

Modérateurs: Stormi, Otto Grimwald

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Mule hollandaise le Dim Juil 27, 2014 2:12 pm

J'ai eu du temps cet après-midi finalement, voilà donc ce que je propose :
  • Changer le texte des réponses par défaut qui font des actions : CrierSansPrecision, Chanter, Goûter, Toucher, Agiter, Sauter, Saluer (pardon, y'a pas Danser, c'était dans mon code)
  • Changer les actions Smell et Listen : dorénavant il y a une réponse "Vous n'entendez rien de particulier" pour l'action sans nom, et un truc du genre "ça ne fait aucun son" pour l'action avec un nom (après tout "écouter montre", c'est bien essayer d'écouter le son hypothétique produit par la montre).
  • Changer la réponse à "donner x à moi" : la réponse actuelle est de jongler avec l'objet, ce qui à mon sens implique trop de choses ; par exemple, que l'objet est détachable de votre corps (et si on veut donner un bras bionique au joueur ?) ou que l'objet est matériel (le fameux objet "no tea" dans Hitch-Hiker's Guide to Galaxy), ou qu'il est facile de jongler avec (du sable fin). Je propose un "Vous vous remerciez pour ce cadeau.", qui est assez vague.
  • Changer la réponse à Montrer : "to be unimpressed" est un intraduisible, qui ne veut pas tellement dire qu'on n'est pas impressionné, mais plus qu'on est circonspect, insensible, ou même critique, ou que ça ne fait pas grande différence. La traduction actuelle fait comme si le joueur montrait quelque chose pour impressionner ou faire réagir l'autre ; je propose de changer en "pas intéressé", comme pour Donner.
Le seul 'problème', c'est pour la réponse à Toucher, pour laquelle je n'arrive pas à trouver de réponse qui ne parle pas de mains (ah bah on ne sait jamais, si le joueur a des tentacules, non ?). Pour Saluer, c'est moins grave vu qu'on reconnaît "saluer de la main".

Voilà donc les nouvelles versions :
Code: Tout sélectionner
CrierSansPrecision : "Cela ne mènerait à rien.";

Give: 2: "Vous vous remerciez pour ce cadeau."

Jump: "Sauter sur place ne vous avancerait en rien."

Listen: if (x1 == 0) "Vous n'entendez rien de particulier."
        else print_ret (The) x1, "ne semble", (nt) x1, " pas produire de son particulier."

Show: 2: print (The) x1;
            if (x1 has pluralname)
                print " n'ont pas l'air intéressé";
            else print " n'a pas l'air intéressé";
            ".";

Sing: "Vous ne pensez pas chanter très bien, alors vous n'osez pas."

Smell: if (x1 == 0) "Vous ne sentez rien de particulier."
       else print_ret "Aucune odeur particulière n'émane ", (dedudes) x1, ".";

Taste: else "Vous préférez ne pas goûter n'importe quoi. On ne sait jamais où ça a pu traîner."

Touch: 2: "Vous préférez ne pas mettre vos mains n'importe où."

Wave: 2: "Vous auriez l'air ridicule en agitant ", (the) x1, ".";

WaveHands:
        if (x1 == 0 || x1 == player) "Vous auriez l'air bête en agitant vos mains devant vous.";
        else "Votre timidité prend le dessus au dernier moment.";


Est-ce que ça vous convient ?
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Natrium le Dim Juil 27, 2014 4:22 pm

Moi, personnellement, j'aime bien quand on tape « sauter » et que le joueur saute sur place. Je trouve ça plus marrant. Si on met des réponses super neutres, ça enlève un peu de vie je trouve. Et pour un nouveau joueur qui voit que toutes les actions qu'il fait ne mènent à absolument rien, même pas à un geste du personnage, c'est un peu décourageant, je pense.

De plus (mais là on s'écarte un peu du sujet), avec le système de réponse d'I7, il est facile de changer les messages par défaut :
Code: Tout sélectionner
The report jumping rule response (A) is "Sauter sur place ne vous avancerait en rien.".

Ça ne rajoute pas d'exception ou quoi que ce soit, ça change véritablement la réponse par défaut. Donc si le joueur possède des tentacules, il suffit de modifier les réponses mentionnant des mains :)

Je vais suivre le sujet pour voir si je modifie l'extension I7 en conséquence, mais je pense que pour I7 c'est moins gênant.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1147
Inscription: Mar Oct 04, 2011 11:18 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Mule hollandaise le Lun Juil 28, 2014 6:35 pm

Pour moi je trouve que ça n'apporte pas grand-chose, ça apporte plus d'incohérences que de vie... Je préfère que le jeu/monde qui est construit soit très cohérent, que les interactions qu'on peut s'imaginer soient comprises par le jeu, et que le joueur ait l'impression qu'on peut tout faire ou presque et que le jeu comprendra. Bref, dans ma tête, garder cette réponse par défaut oblige un auteur à passer du temps (à un moment ou un autre) à se demander si il doit autoriser Jump dans cette pièce ou pas, alors que ça serait mieux si il passait du temps à ajouter des synonymes et des objets pour rendre le jeu plus jouable.

Avec I6 on peut aussi faire un truc comme ça :
Code: Tout sélectionner
Object LibraryMessages
 with before [;
      Jump: "Message pour sauter.";
  ];

Ou même hacker directement dans les librairies ^^ Mais là encore, ça demande d'y penser ou d'y passer du temps, alors je préfère l'idée d'une réponse par défaut neutre. (En plus j'ai essayé de faire un jeu de mots ! :wink:)

Et est-ce que l'argument s'appliquerait aussi à Wave, WaveHands, Sing et CrierSansPrecision ? (et Give?) Qu'est-ce qu'on garde, qu'est-ce qu'on modifie, qu'est-ce qu'on jette ? :)
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Otto Grimwald le Dim Aoû 03, 2014 1:17 pm

Je reviens sur cette question. Je pense que le plus simple est de coller au plus près de l'extension anglophone, qui donne une bonne base de travail.

Malgré cela, parfois si on modifie le résultat d'une action définie autrement dans le passé, ça peut changer des choses dans le ressenti que l'on a dans un jeu.

Par exemple (dans I7) quand j'ai un lieu dans lequel on peut entrer (par exemple une maison sur une place publique), j'ai l'habitude de créer un objet "factice", qui permet d'intercepter les commandes du joueur sur le lieu dans lequel il veut entrer (regarder etc). Et s'il tape une commande pour entrer, et que la porte est ouverte, le code le redirige vers le le véritable lieu. Auparavant, si on essayait d'entrer dans un tel lieu factice, et que la porte est verrouillée etc, on avait comme réponse :

> entrer dans cabane
Vous ne pouvez pas y entrer.


Ce qui était juste par rapport à la situation.

Maintenant, avec le nouveau code
Code: Tout sélectionner
can't enter what's not enterable rule response (D) is "Ce [negate the verb es from the third person singular] quelque chose dans lequel [tu] [peux] entrer.".


(ce qui est proche de ce qu'indique dorénavant la version anglaise)

si on a la même chose, ça indiquera :

Ce n'est pas quelque chose dans lequel vous pouvez entrer.


et du coup il faut que je refasse tout d'une autre manière car ça ne colle plus...


Bref, le mieux est peut-être d'être le plus vague possible. D'ailleurs avant on avait comme réponse pour un objet qui n'était pas créé "Vous ne pouvez voir cela", et pour un élément non implémenté en synonyme, mais bien présent, ça ne collait pas non plus. On a essayé de mettre à la place "Vous ne voyez rien de tel, à moins que cela ne soit sans grande importance.", mais malgré tout ce n'est pas satisfaisant. Dans les vieux jeux, et j'ai retrouvé ça dans Azathath, il y a le laconique "Essayez autre chose". Finalement c'est peut-être le meilleur type de réponse car cela évite de faire perdre de la consistance au monde en indiquant qu'il y a des lacunes d'implémentations : c'est tout bonnement impossible de créer un synonyme pour chaque nom employé.

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

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Mule hollandaise le Dim Aoû 03, 2014 5:58 pm

Euh j'avoue que je comprends pas bien ce que tu veux dire du coup... Est-ce que tu préfères coller au maximum à l'extension anglaise, ou est-ce que tu es en train de dire que tu préfères les messages aussi vagues que possible ?
Dans l'absolu oui, c'est vrai que changer les réponses par défaut change la façon dont un jeu réagit, et parfois peut introduire des incohérences - et je pense que minimiser ces incohérences peut se faire en ayant des messages aussi vagues que possible. C'est bien le problème du nouveau code de la version anglaise, puisqu'on remplace un message qui dit essentiellement "impossible" par un message qui sous-entend "l'action n'est pas adéquate".
Cela étant, j'ai l'impression que les messages que je propose sont tous plus vagues que les messages par défaut (de l'extension anglaise, donc), et du coup qu'il y aurait moins d'incohérences. En tout cas, les changements pour Listen, Smell, Taste et Touch me semblent incontournables, sinon on se retrouve avec des joueurs qui lèchent des maisons et des planètes :P

Tant que j'y suis, j'ai trouvé un autre bug dans les bibliothèques, au niveau du verbe Wave. (Ligne 703 de FrenchG.h) Le code est :
Code: Tout sélectionner
Verb 'agiter'
        * 'la'/'les' 'main'/'mains'      -> WaveHands
        * noun                           -> Wave;

Verb 'brandir' 'secouer'
        * held                           -> Wave;


Premier problème : Si le joueur n'a pas 'truc' en sa possession, "agiter truc" répond "mais vous n'avez pas cela !" alors que "secouer truc" répond "(vous prenez d'abord le truc) Vous avez l'air ridicule en agitant le truc". (Notez bien la présence du mot "agiter" dans la réponse à "secouer" mais pas dans celle de "agiter" :wink:) Je pense que la bonne solution c'est en effet de mettre "held" et pas "noun", vu que Graham Nelson nous explique dans le DM4 que "c'est quand même bête de dire à un joueur qu'il ne peut pas manger une banane parce qu'il ne l'a pas prise avant". Vous êtes d'accord ?

Le deuxième problème, c'est que 'secouer' peut avoir des sens différents en français que 'agiter un objet en notre possession' : on peut secouer les barreaux d'une prison, ou un distributeur automatique où votre canette est coincée (mais pas 'agiter' ces objets). Aussi, "secouer Jean-Pierre" a une signification différente, qui évoque le geste de mettre les mains sur les épaules de quelqu'un et le secouer, ou même plus métaphoriquement d'engueuler quelqu'un pour lui mettre un coup au derrière. Bref, c'est pas un verbe facile ! Et le gros problème, c'est que vu que le token qui suit, c'est "held", le joueur va automatiquement essayer de prendre le distributeur ou Jean-Pierre avant de les secouer, il va pas y arriver, et on n'a donc pas de contrôle dans le code (un "before [; Wave" ne marchera pas puisque c'est le Take qui foire le premier).
Je propose donc de faire que Secouer soit son propre verbe, dans lequel on imite ce que fait le parser pour garder la cohérence, mais en court-circuitant les actions implicites (ce qui implique de changer le held en noun !). Il faudra revoir ce bout de code pour le passage à 6/12, si le flag NO_IMPLICIT_ACTIONS se matérialise (mais comme pour SeLever d'ailleurs.)

Bref pour résumer, pour résoudre les deux problèmes ci-dessus je propose de remplacer les lignes mentionnées ci-dessus (703 et consorts dans FrenchG.h) par :
Code: Tout sélectionner
Verb 'agiter'
        * 'la'/'les' 'main'/'mains'      -> WaveHands
        * held                           -> Wave;

Verb 'brandir'
        * held                           -> Wave;

[ SecouerSub ks;
   if (noun notin player) {
      L__M(##Drop, 3, noun);         ! Hack sordide parce que L__M(##Miscellany, 26, noun) marche pas
      ks = keep_silent; keep_silent = true; <Take noun>; keep_silent = ks;
   }
   if (noun in player) {<<Wave noun>>;}
];

Verb 'secouer'
      * creature                   -> Attack
      * noun                      -> Secouer;


Qu'en pensez-vous ?
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Natrium le Dim Aoû 03, 2014 6:31 pm

Pour la réponse quand il s'agit d'entrer, tu n'es pas obligé de tout refaire Otto, tu peux juste modifier la réponse directement dans ta source (the can't enter what's not enterable rule response (D) is "[Tu] [ne peux pas] y entrer."), ou je peux toujours la changer dans la nouvelle extension (car l'ancienne était effectivement mieux).
J'ai essayé de coller au maximum à l'ancienne extension française, mais il se peut que certaines se soient modifiées par inadvertance au passage.

Pour le "Essayez autre chose", je trouve ça vraiment pas terrible. Si un nouveau joueur, qui ne connaît pas bien les FI, essaie tout un tas d'actions, et qu'à chaque fois il tombe sur cette phrase, il sera vite découragé de ne rien pouvoir faire.

Si on en revient à l'action sauter, par exemple, peut-être que changer la réponse en « Sauter sur place ne vous avancerait en rien. » aiderait l'auteur dans les cas où le joueur ne peut pas sauter, mais dans la grande majorité des cas où il n'y a aucune raison de ne pas pouvoir sauter, pourquoi il ne sauterait pas ? Car ce n'est pas au jeu de décider de ce que le joueur veut faire ; le jeu décide de ce que le joueur peut faire (en règle générale, en tout cas). Si dans la vraie vie l'envie me prend de sauter, alors je sauterai, que ça m'avance à quelque chose ou pas (exemple un peu tiré par les cheveux, soit dit en passant :) ).

Je pense qu'il n'y a pas de solution miracle : si on remplace les réponses actuelles par des réponses (extrêmement) vagues, je ne pense pas que l'expérience du joueur sera mieux. La seule chose qui peut remédier à ce problème, c'est que l'auteur prenne en compte tout ce qu'un joueur pourrait taper (même si c'est évidemment un but impossible à atteindre).

On pourrait sinon faire un jeu en deux versions, un avec des réponses vagues, et un autre avec les réponses traduites directement de l'anglais, et demander à des novices de la FI d'essayer et de dire ce qu'ils préfèrent, je sais pas si ça fonctionnerait :?:


Je viens de voir le message de Mule, alors j'y réponds aussi. Le problème de secouer/agiter ne se pose pas trop avec I7, il suffit d'écrire "Instead of waving the blablabla".
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1147
Inscription: Mar Oct 04, 2011 11:18 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar auraes le Dim Aoû 03, 2014 6:56 pm

Mule hollandaise a écrit:Qu'en pensez-vous ?
C'est une très mauvaise idée de « bricoler » dans les librairies françaises. Elles sont déjà illisibles, incompressibles et boguées. Les librairies anglaises sont « verrouillées » et c'est ce qui fait leur intérêt et leur puissance. Il y a tout ce qu'il faut pour gérer tout ça hors des librairies.

Pour Wave, il y a aussi remuer, mélanger.
Il me semble qu'il manque dans les librairies I6 et I7 : jeter/lancer qqch à qqn.

Mule hollandaise a écrit:si le flag NO_IMPLICIT_ACTIONS
Tu as déjà et depuis longtemps before_implicit :
Code: Tout sélectionner
before_implicit [;
    Take: if (action_to_be == ##Eat) return 2;
  ],

Pour les messages par défaut : ce devrait être l'ultime recours et le plus sobre et universel possible; il ne devrait quasiment pas y en avoir dans un jeu.
Mule hollandaise a écrit:et que le joueur ait l'impression qu'on peut tout faire ou presque et que le jeu comprendra
Je pense exactement l’inverse (la vérité opposée !) Que le joueur comprenne qu'il ne peut interagir qu'avec le texte, les mots qu'il a sous les yeux.
Dernière édition par auraes le Mar Aoû 05, 2014 6:40 am, édité 1 fois.
Avatar de l’utilisateur
auraes
Grand Ancien
 
Messages: 348
Inscription: Ven Avr 11, 2008 9:15 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Mule hollandaise le Dim Aoû 03, 2014 10:49 pm

@Natrium : pourquoi pas pour l'histoire du test mais je pense pas que ça fasse grande différence globalement. Si ça vous gêne tant que ça autant rien modifier.
Pour "secouer", mon problème c'est que je veux "secouer barreaux" mais pas "agiter barreaux" ou "mélanger barreaux", donc je ne pense pas que 'instead of waving' soit ce que je cherche. Mais bon, au final c'est juste une histoire de créer une distinction de plus.

@auraes : je connaissais pas before_implicit, c'est cool ! C'est pas dans le DM4 en tout cas - c'est écrit quelque part, ou c'est juste en regardant le code des biblis que tu connais ça ? En tout cas ça marche, alors je retire mon kludge de ma bibliothèque.
Ah et quand je disais "que le joueur ait l'impression de pouvoir tout faire", je pensais à "toutes les actions logiques avec les objets qui apparaissent dans le texte", pas *toutes* les actions - du coup, je suis d'accord avec toi, même si je l'ai mal dit.

Par contre, il faut toujours changer le "noun" de 'agiter' en "held".
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar auraes le Lun Aoû 04, 2014 5:43 am

Mule hollandaise a écrit:c'est écrit quelque part, ou c'est juste en regardant le code .
C'est dans l'indispensable ReleaseNotes.html : https://github.com/DavidKinder/Inform6
A new before_implicit property is available; at the moment this is used only by the parser, when it is about to perform an implicit TAKE (for example, EAT APPLE when you’re not holding the apple). You can give this property to an object if you wish to control the parser’s behaviour. The property’s value should be a constant or a routine which returns: 0 to report “(first taking the...)” and then attempt to do so (this is what currently happens); 1 to attempt the TAKE without first issuing the message, 2 to proceed with the requested action without attempting the TAKE, or 3 to object that “You aren’t holding that!”. The object can test action_to_be to determine which action has triggered the TAKE:

before_implicit [;
Take: if (action_to_be == ##Eat) return 2;
],
Mule hollandaise a écrit:si le flag NO_IMPLICIT_ACTIONS se matérialise
Visiblement, depuis ce matin c'est corrigé !
Avatar de l’utilisateur
auraes
Grand Ancien
 
Messages: 348
Inscription: Ven Avr 11, 2008 9:15 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar auraes le Jeu Aoû 07, 2014 6:15 am

Si quelqu'un peut m'aider; je ne suis pas sûr de bien comprendre :
I see. How would the language header file then access these parameters?
http://www.intfiction.org/forum/viewtopic.php?f=19&t=15730&start=30
Avatar de l’utilisateur
auraes
Grand Ancien
 
Messages: 348
Inscription: Ven Avr 11, 2008 9:15 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Mule hollandaise le Jeu Aoû 07, 2014 7:40 am

Quelque chose du genre "comment est-ce que le code dans French.h ou English.h accèdera/fera référence aux trucs qui seront passés en argument pour la nouvelle fonction ?" Je sais pas ce qu'il veut dire exactement, mais je pense que si tu précises le code que tu écrirais dans French.h (en pseudocode, ca doit etre if action to be == ##Dig then print LeLes(x2) else print LeLes(x1);, non ?) il comprendra.
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar auraes le Jeu Aoû 07, 2014 7:44 am

O.K., merci. C'est ce que j'ai dû faire !

Pourquoi dans la grammaire anglaise de Fill il y a 'from', mais pas 'with' ? Je fais un contresens avec Fill !?
Code: Tout sélectionner
Verb 'fill'
* noun -> Fill
* noun 'from' noun -> Fill;
Code: Tout sélectionner
* noun 'from'/'with' noun -> Fill;

Oops, frotz semble vouloir répondre à ma question:
http://www.intfiction.org/forum/viewtopic.php?f=7&t=15902
Avatar de l’utilisateur
auraes
Grand Ancien
 
Messages: 348
Inscription: Ven Avr 11, 2008 9:15 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Mule hollandaise le Dim Aoû 24, 2014 5:46 pm

Il y a un bug dans la bibli 6/11 francophone (même si je ne sais pas si c'est utilisé quelque part). Et j'ai oublié mes identifiants pour le dépôt... donc si une bonne âme pouvait faire le changement... ^^' Merci :D

Le code incriminé est à la ligne 897:
Code: Tout sélectionner
[ IsorAreNot obj;
    if (obj has pluralname || obj == player) print "ne sont pas";
                                        else print "n'est pas";
];

En anglais le test fait sens puisqu'on a "are not" et "is not" ; mais en français, ça devrait plutôt être :
Code: Tout sélectionner
[ IsorAreNot obj;
    if (obj has pluralname) print "ne sont pas";
    else {
         if (obj == player) print "n'êtes pas";
         else print "n'est pas";
    }
];

Bien sûr, on va peut-être passer à 6/12 d'ici quelques temps, mais en attendant il faudrait faire le fix ! :wink:
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Mule hollandaise le Sam Sep 20, 2014 3:31 am

J'ai trouvé un autre bug dans la bibliothèque.
>s'asseoir en haut
(de le dépliant de l'aéroport)
Vous ne pouvez pas vous y asseoir

Ca marche avec n'importe quel jeu où il y a un seul objet masculin ou pluriel, et ça marche avec n'importe quel verbe qui a des tokens "de/du/des/d^" : écrivez tout ce qu'il y a avant ce token, et le parser essaie de compléter, et prend le premier mot qu'il trouve et l'affiche. (Si vous écrivez " 'du'/'de'/'des'/'d^' " dans la grammaire, il dit "du le dépliant".)

Je sais pas trop comment corriger ça : je sais pas exactement où ça se trouve dans la bibliothèque, mais je crois pas que ça soit dans la partie francophone. Peut-être créer un token DuDeDesD qui, quand on essaie de l'afficher, arriverait à donner la bonne réponse ? Mais alors comment faire pour que ça donne pas "du le" ?
Si vous avez des idées... ou si vous pensez que ça doit être signalé à frotz pour la nouvelle version de la bibliothèque...

(Au passage, quelqu'un pourrait corriger le bug précédent ? Merci :) )
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar auraes le Sam Sep 20, 2014 6:54 am

Mule hollandaise a écrit:ça marche avec n'importe quel verbe qui a des tokens "de/du/des/d^"
J'avais remarqué le même problème avec : (a George) ou (a monstres). Il semble prendre la première préposition qu'il trouve dans la grammaire : 'a' au lieu de 'à' ou 'aux', ce qui semble logique, il ne peut pas savoir, parmis plusieurs préposition sur une même ligne de grammaire, laquelle est la plus adaptée à la situation. Cela vient de PrintCommand() dans parserm.h qui est aussi utilisé pour Miscellany 48 et 49, afin de reconstruire les phrases incomplètes. Tu peux utiliser LanguageCommand() pour reconstruire toi-même la phrase (et dans le pire (ou le meilleur !) des cas, ne pas l'afficher.)
Mule hollandaise a écrit:être signalé à frotz
Ce n'est certainement pas un bogue, mais il serait intéressant de voir comment la bibliothèque anglaise se débrouille avec ça. Je regarderai ça aujourd'hui.
Concernant ton : [Inform 6] Triggering a "Take All", vu mon niveau d'anglais, je comprends pas vraiment ce que tu veux faire. Je semble comprendre que tu veux étendre les possibilités de ALL, alors que je serais plutôt d'avis de les restreindre; je ne vois que des inconvénients à utiliser les multi-word token.

Mule hollandaise a écrit:(Au passage, quelqu'un pourrait corriger le bug précédent ? Merci :) )
Passe à la 6/12 !
Avatar de l’utilisateur
auraes
Grand Ancien
 
Messages: 348
Inscription: Ven Avr 11, 2008 9:15 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Mule hollandaise le Dim Sep 21, 2014 9:28 pm

Pour Take all, c'est dans l'extension, c'est "tout" prendre.

Voilà le nouveau code pour "PrintCommand" - si vous voulez le pousser dans la nouvelle version de la lib francophone... (je l'ai mis au début de French.h et ça marche)

Code: Tout sélectionner
Replace PrintCommand;

[ PrintCommand from i k spacing_flag variante_flag prep;
    if (from == 0) {
        i = verb_word;
        if (LanguageVerb(i) == 0)
            if (PrintVerb(i) == 0) print (address) i;
        from++; spacing_flag = true;
    }

   variante_flag = 0;
    for (k=from : k<pcount : k++) {
        i = pattern-->k;
        if (i == PATTERN_NULL) continue;
        if (spacing_flag && variante_flag == 0) print (char) ' ';
        if (i ==0 ) { print (string) THOSET__TX; jump TokenPrinted; }
        if (i == 1) { print (string) THAT__TX;   jump TokenPrinted; }
        if (i >= REPARSE_CODE) {
         prep = No__Dword(i-REPARSE_CODE);
            if (prep == 'de' || prep == 'a') {
            if (prep == 'de') { variante_flag = 1;} else { variante_flag = 2;}
            ! On skippe, on affichera tout ça au tour suivant
         }
         else { print (address) prep; }
      }
        else {
            if (i in compass && LanguageVerbLikesAdverb(verb_word))
                LanguageDirection (i.door_dir); ! the direction name as adverb
            else
                if (variante_flag > 0) {
               if (variante_flag == 1) { print (DeDuDes) i;}
               else { print (to_the) i; }
               variante_flag = 0;
            }
            else { print (name) i;}
      }
      .TokenPrinted;
        spacing_flag = true;
    }
];
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Mule hollandaise le Lun Nov 17, 2014 12:20 am

Autre signalement : il y a des "de/du/des/d^" manquants ou buggués :
  • Plonger au dessus de -> de/du/des/d^
  • Boire de/du l' -> Boire de l'/la
  • Manger 'de/du' -> Manger 'de'/'du'/'des'
Pour 'manger', c'est un vrai bug ! (le token était 'de/du')
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Mule hollandaise le Jeu Jan 01, 2015 4:09 am

Le comportement de "descendre noun" n'est pas bon : si vous êtes sur un truc et que vous tapez "descendre truc", on vous dit "mais vous êtes déjà sur le truc". C'est parce que "descendre noun" correspond à "Enter" ; "descendre du noun" c'est Exit, et "descendre dans/à/vers noun" c'est Enter.
J'ai fait un fix :
Code: Tout sélectionner
[ ExitOrEnterSub ;
  if (player in noun) { <<Exit noun>>; }
  else { <<Enter noun>>; }
];

Verb 'descendre'
        *                                                           -> GoDown
        * 'de'/'du'/'des' noun                                      -> Exit
        * 'a'/'au'/'en'/'vers'/'par' noun=ADirection                -> Go
        * 'a'/'au'/'en'/'vers'/'par'/'dans'/'sur'/'sous' noun       -> Enter
        * noun=ADirection                                           -> Go
        * noun                                                      -> ExitOrEnter;

Si on est dessus et qu'on tape "descendre noun", on descend ; sinon on Enter.

Deux remarques :
- est-ce que j'aurais dû utiliser IndirectlyContains() ?
- est-ce que ça serait pas mieux que "descendre noun" soit mappé vers Exit ? Je crois pas : "descendre escalier" et "descendre puits" correspondent à Enter, donc y'a que ce cas-là où on est déjà "dedans/dessus" qui n'est pas satisfaisant.

Sur ce, je pars fêter mon réveillon canadien. Bonne année 2015 à vous tous ! :)
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar auraes le Sam Fév 28, 2015 2:09 pm

Il me semble qu'il y a un petit problème dans ton code :
https://bitbucket.org/hlabrand/extensions-i6/src/f4ac3418b1aa0c3950ac11e06c6cfd607f78cf09/French.h?at=master
Ligne 52 :
Code: Tout sélectionner
if (prep == 'de' || prep == 'a') {
Il s'agit bien de tester si prep est égal à 'a//' (adresse du mot dans le dictionnaire) et non à 'a' (code ASCII 97).

Bon... Je retourne into the wild... Bonne continuation.
Avatar de l’utilisateur
auraes
Grand Ancien
 
Messages: 348
Inscription: Ven Avr 11, 2008 9:15 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Mule hollandaise le Sam Fév 28, 2015 7:50 pm

Exact ! Ca faisait un bug ! Merci à toi :)
J'en ai profité pour modifier un peu FrenchG, que la première préposition soit 'a' en général et pas '->' ; comme ça le code se déclenche pour plus de cas !

Bonne continuation dans the wild ! :wink:
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

PrécédenteSuivante

Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

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

cron