[I6] Consulter des "topic" hors livre/PNJ

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

Modérateurs: Stormi, Otto Grimwald

[I6] Consulter des "topic" hors livre/PNJ

Messagepar Adrien le Ven Mai 08, 2015 6:07 pm

Mince alors, ça doit pas être bien compliqué mais je dois me prendre la tête sur des bêtises... je vois pas comment créer un verbe du type "penser à" qui permettrait de donner des infos sur une liste de "topic". Autant ça marche bien avec les PNJ, autant en dehors j'ai tjrs un souci pour récupérer la variable donnée au verbe.

Genre, version ultra basique, si je fais :
Code: Tout sélectionner
Extend 'reflechir' replace
        * 'a'/'au' topic                                                     -> Penser;


Code: Tout sélectionner
[PenserSub;
   switch (topic) {
      'bar':
         print "Un coin vraiment sympa.^";
      default:
         print "Vous vous perdez dans vos pensées pendant quelques secondes avant de reprendre vos esprits.^";
   }
   rtrue;
];


pareil avec switch(second) ou avec switch(n) et [PenserSub n;

Vu que certains d'entre vous ont bien bossé sur la grammaire, si vous avez une idée...
Avatar de l’utilisateur
Adrien
Très Ancien
 
Messages: 1092
Inscription: Mar Aoû 24, 2004 9:23 am
Localisation: Montpellier, France

Re: [I6] Consulter des "topic" hors livre/PNJ

Messagepar Mule hollandaise le Sam Mai 09, 2015 12:04 am

T'as regardé dans le DM4? Là sans ordi sous la main je vois pas le problème, ça m'a l'air bon... :/

Sinon un petit truc que j'ai découvert y'a pas longtemps, c'est Info.h de Jesse Burnenko (une extension sur inform-fiction.org) ; ca permet de créer des objets de type "Topic" qui sont reconnus dans les "ask/tell", ce qui veut dire que tu peux faire des name et des parse_name compliqués pour reconnaitre des trucs cools. Je m'en suis servi il y a peu pour une conversation avec un NPC où j'arrivais à détecter "demander à mon amie quel jour elle repart" pas trop difficilement :)
Mule hollandaise
Grand Ancien
 
Messages: 1123
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: [I6] Consulter des "topic" hors livre/PNJ

Messagepar auraes le Sam Mai 09, 2015 6:17 am

Je n'ai pas trop envie de remettre la tête dans I6, mais j'avais modifier un bout de code de Yoruk qui utilisait le topic :
http://auraes.free.fr/tmp/dragon_modifier.html
http://auraes.free.fr/tmp/dragon_modifier.inf
Il y a des exemples d'usage du topic dans le DM4 avec consult_from, consult_words, etc.
(Par contre, je ne comprends pas ton code dans PenserSub !? (Et rtrue; n'est pas indispensable car implicite pour une fonction hors d'un objet.))
Avatar de l’utilisateur
auraes
Grand Ancien
 
Messages: 348
Inscription: Ven Avr 11, 2008 9:15 pm

Re: [I6] Consulter des "topic" hors livre/PNJ

Messagepar Adrien le Sam Mai 09, 2015 8:26 am

Oui, c'est vrai que rtrue c'est devenu un réflexe mais ici il a pas trop de sens !
Par contre l'exemple donné ne convient pas, parce qu'on est encore dans "Life". Effectivement, pour consult ou ask/tell on trouve des exemples, dans le DM et ailleurs, mais pour avoir un équivalent qui fonctionne en dehors, c'est pas la même chose. Pour une raison que je ne comprends pas encore, le switch que j'utilise dans le verbe ne récupère pas le COD tapé lors de la commande. Du moins, si j'utilise "topic" (ce dont j'ai besoin pour utiliser une chaîne de caractères, parce que si j'utilise "noun" seuls les objets en jeu sont pris en compte et ce n'est pas ce que je veux).
Avatar de l’utilisateur
Adrien
Très Ancien
 
Messages: 1092
Inscription: Mar Aoû 24, 2004 9:23 am
Localisation: Montpellier, France

Re: [I6] Consulter des "topic" hors livre/PNJ

Messagepar auraes le Sam Mai 09, 2015 9:22 am

Au lieu de rediriger ton verbe 'reflechir' vers -> penser, tu devrais le rediriger vers -> Consult; La bibliothèque d'i6 initialisera alors les variables dédiées correctement. Tu n'auras plus qu'a tester dans ton objet : before Consult: que le verbe saisi soit bien réfléchir.
Je ne pense pas que tu puisses utiliser le topic autrement.
(Voir DM4 page 131)
Avatar de l’utilisateur
auraes
Grand Ancien
 
Messages: 348
Inscription: Ven Avr 11, 2008 9:15 pm

Re: [I6] Consulter des "topic" hors livre/PNJ

Messagepar Adrien le Sam Mai 09, 2015 9:50 am

Ah, bonne idée ouais merci, j'utilise pas le verbe consulter par ailleurs donc ça ne poserait pas de souci. Par contre il faudrait du coup envoyer le nom de l'objet à consulter. Il faut pas que le joueur ait besoin de préciser "consulter mémoire à propos de" donc il reste à trouver comment envoyer cet objet en dur depuis les fichiers du jeu (j'aimerais éviter de modifier la "lib" si possible, dans une optique de partage open source à terme).
Bon, à voir !
Avatar de l’utilisateur
Adrien
Très Ancien
 
Messages: 1092
Inscription: Mar Aoû 24, 2004 9:23 am
Localisation: Montpellier, France

Re: [I6] Consulter des "topic" hors livre/PNJ

Messagepar auraes le Sam Mai 09, 2015 10:20 am

Adrien a écrit:Ah, bonne idée ouais merci
Pas sûr ! J'ai vraiment pas la tête dans I6 mais dans un décompilateur/compilateur de jeux Scott Adams.
Je jetterai éventuellement un œil cet après-midi. Ta première idée est peut-être la bonne. Il faudrait regarder si : wn, consult_from, consult_words, etc sont corectement chargés dans Pensersub, (sinon le faire) et utiliser NextWord().
Ou pas.
Dernière édition par auraes le Sam Mai 09, 2015 1:34 pm, édité 1 fois.
Avatar de l’utilisateur
auraes
Grand Ancien
 
Messages: 348
Inscription: Ven Avr 11, 2008 9:15 pm

Re: [I6] Consulter des "topic" hors livre/PNJ

Messagepar Mule hollandaise le Sam Mai 09, 2015 10:27 am

Question bête: c'est-y pas parce que tu as mis 'bar' et qu'il faudrait mettre "bar" ? :)

(Ptet qu'un topic c'est un string et pas un mot du dictionnaire?)
Mule hollandaise
Grand Ancien
 
Messages: 1123
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: [I6] Consulter des "topic" hors livre/PNJ

Messagepar Adrien le Sam Mai 09, 2015 11:49 am

Mule hollandaise a écrit:Question bête: c'est-y pas parce que tu as mis 'bar' et qu'il faudrait mettre "bar" ? :)

(Ptet qu'un topic c'est un string et pas un mot du dictionnaire?)


Bonne remarque, des fois des détails de ce genre peuvent passer inaperçus pendant des heures :shock: mais là ce n'est pas le cas, pour les topic on est bien sur de l'apostrophe. Si on met des guillemets ça génère des erreurs.
Avatar de l’utilisateur
Adrien
Très Ancien
 
Messages: 1092
Inscription: Mar Aoû 24, 2004 9:23 am
Localisation: Montpellier, France

Re: [I6] Consulter des "topic" hors livre/PNJ

Messagepar auraes le Sam Mai 09, 2015 1:29 pm

Code: Tout sélectionner
Include "Parser.h";
Include "VerbLib.h";

Object lieu
   with description "lieu"
   has light;

[ Initialise;
   location = lieu;
];

[ PenserSub;
   wn = consult_from;
   while (consult_words) {
      switch (NextWord()) {
         'bar': "Un coin vraiment sympa.";
         'physique', 'quantique': "Max Planck !";
         'femme': "Superbe !";
         !default:
      }
      consult_words--;
   }
   "Vous vous perdez dans vos pensées pendant quelques secondes avant de reprendre vos esprits.";
];

Include "Grammar";

verb 'reflechir'
   * -> Penser
   * 'a'/'au' topic -> Penser;
>reflechir
Vous vous perdez dans vos pensées pendant quelques secondes avant de reprendre
vos esprits.

>reflechir a la femme
Superbe !

>reflechir au bar
Un coin vraiment sympa.

>reflechir a rien
Vous vous perdez dans vos pensées pendant quelques secondes avant de reprendre
vos esprits.

>reflechir a la physique quantique
Max Planck !

>reflechir a la physique
Max Planck !

>reflechir au quantique
Max Planck !

>

Avatar de l’utilisateur
auraes
Grand Ancien
 
Messages: 348
Inscription: Ven Avr 11, 2008 9:15 pm

Re: [I6] Consulter des "topic" hors livre/PNJ

Messagepar Adrien le Dim Mai 10, 2015 6:14 pm

Super, merci, j'avais encore jamais eu à toucher ces wn, consult_from et autres consult_words, et j'ai encore un peu de mal à trouver les bonnes traces à écrire pour débugger efficacement de l'Inform et bien voir ce qui passe dans les tuyaux...
C'est reparti !
Avatar de l’utilisateur
Adrien
Très Ancien
 
Messages: 1092
Inscription: Mar Aoû 24, 2004 9:23 am
Localisation: Montpellier, France


Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 1 invité

cron