Eric, j’ai réinstallé ton extension French, la dernière MAJ , pour tester ce truc avec les tirets et les apostrophes.
J’ai ceci
The AppartAlix is a bâtiment in Etage4. The printed name is "appartement d[']Alix". Understand "appartement" or "appartement d Alix" as the AppartAlix.
Or une fois ingame, si je tape « entrer dans l’appartement d alix » ou « entrer dans l’appartement d-alix », ça fonctionne
par contre « entrer dans l’appartement d’alix » non - c’est bien l’apostrophe qui pose problème…
comme je n’ai pas tout le jeu, j’ai ajouté l’objet dans un des miens:
Ville is a room. The AppartAlix is in Ville. The printed name is "appartement d[']Alix". Understand "appartement" or "appartement d Alix" as the AppartAlix.
As-tu essayé ça dans un jeu vraiment minimaliste ?
Bon, c’est ma faute, dans le dernier jeu que je développais, j’avais rajouté un truc pour éviter ce problème, et j’avais oublié que c’était pour ça que ça fonctionnait.
Le code complet est :
Include French by Eric Forgeot. Use French Language.
Include Punctuation Removal by Emily Short.
After reading a command:
remove apostrophes.
Ville is a room.
The truc is in Ville. The printed name is "appartement d[']Alix". Understand "appartement" or "appartement d Alix" as the Truc.
Du coup ça devrait fonctionner dans Azthath sans faire d’autre modification que celle-ci. (en espérant que ça ne rajoute pas de latence)
je pense que c’est normal, la bibliothèque ne doit prendre en compte que « le, la, les », et pas « l », enfin normalement c’est pris en compte par ce code dans la bibliothèque :
je présume ça provoque ce bogue parce que « l » tout seul n’est pas pris en compte.
En attendant on peut rajouter ça mais il faudrait le faire pour chaque mot débutant par une voyelle :
Understand "l artichaud" as artichaud.
Je suis certain qu’on peut faire cela automatiquement avec les regex (chapitre 19.8 du manuel) mais pour le moment je n’y arrive pas. Et puis on verra avec la dernière version d’inform comment c’est géré.
Par exemple pour le moment j’ai ça :
After reading a command:
remove apostrophes;
let N be indexed text;
let N be the player's command;
replace the regular expression " l " in N with " ";
say "[N][paragraph break]";
mais je ne sais pas comment le réinjecter dans la commande initiale.
Il est peut-être possible aussi d’ignorer une commande (un mot, enfin, une lettre)
After reading a command:
remove apostrophes;
now the last command is the player’s command;
let n be indexed text;
let n be the player’s command;
replace the regular expression « (.) l (.) » in n with « \1 \2 »;
replace the regular expression « (.) l (.) » in the last command with « \1 \2 »;
[say « ([last command])[line break] »; [pour vérifier la commande remplacée] ]
change the text of the player’s command to the last command.[/code]
par contre ça fait analyser chaque commande tapée par le joueur pour détecter la chaîne " l " (c’est à dire le résultat de punctuation removal), j’ai peur que ça surcharge encore le jeu…
Bon, je remonte un autre sujet assez ancien, mais comme il existe, je vais pas en faire un autre.
Azathoth, est-ce que tu as eu des ralentissements avec le code d’Otto, finalement ? En fait, il n’est pas super optimisé (variable last command inutile, et qui entraîne deux fois l’utilisation de regex…).
Pour la nouvelle extension, j’ai fait ce code :
[code]Include Punctuation Removal by Emily Short.
After reading a command:
remove apostrophes;
if the player’s command includes « l »:
cut the matched text;
[say « [the player’s command][command clarification break] »). [pour tester si ça marche]][/code]
Ça semble marcher, tu pourrais tester ?
Aussi (et hors-sujet), en parlant de ralentissements, je sais qu’Azthath est un gros jeu et que tu as déjà eu des problèmes avec ça. La dernière version d’Inform, les jeux compilés sont encore plus lourds, mais plus rapides, d’après ce que j’ai lu. T’es pas obligé de tout reconvertir bien sûr, mais au moins tu le saura.
Je vais tester, je te dirai ça, merci. Je crois que j’avais abandonné l’idée d’inclure des apostrophes dans les commandes du joueur, à cause d’un autre bug (sans aucun rapport) que ça produisait par ricochet, mais je ne sais plus lequel
Pour ce qui est de convertir Azthath je crois que je vais d’abord essayer de finir une version viable de mon jeu, avec l’avant dernière build, et éventuellement, ensuite, essayer de le mettre à niveau faudrait déjà que toutes les extensions que j’utilise aient été mises à jour, et c’est loin d’être le cas.
Je remonte le sujet pour dire que j’ai trouvé la solution : il n’y a pas besoin d’enlever les apostrophes, il suffit d’ajouter une espace dans les lignes de compréhension :
Understand "appartement d' Alix" as the AppartAlix. [Noter l'apostrophe ET l'espace qui le suit]
C’était tout bête, car comme l’extension française ajoute une espace après l’apostrophe, il suffisait de l’ajouter aussi.