IF-Forum

» IF-Forum - Autorencafé - Schreiben! - Inform7/GerX: "Was meinst du, x oder y?"
AntwortenNeues ThemaNeue Umfrage

Inform7/GerX: "Was meinst du, x oder y?"

Geschrieben um 05:07 am 29.01.2010 | Zitat | Editieren | Löschen
ChrisW
Mitglied
Dr Gumby
Beiträge: 275

Hallo erstmal wieder, nach so langer Zeit. Ich arbeite mich gerade in Inform7 und die deutsche Extension ein - Respekt, die funktioniert schon richtig gut! -, bin dabei allerdings auf ein kleines Problem gestoßen und bin nicht sicher, obs an mir oder an der Library liegt.

Folgender Beispielquelltext...



Kanzleramt is a room.

Gerd is a man. He is here.

Understand "kanzler" as Gerd.

Helmut is a man. He is here.

Understand "kanzler" as Helmut.```

führt bei mir zu diesem Ergebnis:

**Zitat:**
> Kanzleramt

Du siehst hier Gerd und Helmut.

>u kanzler

Was meinst du, Gerd oder Helmut?

Ich hätte als Antwort eher "**Wen** meinst du...?" erwartet, also Miscellany 45 statt 46.

Gibt's ne Möglichkeit, das zu bekommen?

Viele Grüße, Chris
Geschrieben um 07:20 am 29.01.2010 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

Hallo zurück!

ChrisW:

Ich hätte als Antwort eher "Wen meinst du...?" erwartet, also Miscellany 45 statt 46.

Hmmm. In der Routine NounDomain() gibt es zwei Zeilen (4573 f.), die das eigentlich richtig ausgeben sollten:



    else                         L__M(##Miscellany, 46);```

Warum das nicht klappt, muss ich mal näher ergründen. Das Problem existiert in deform aber auch -- vielleicht hat Martin da eine Idee. Bei der LM für ##Miscellany, 49 gab's auch Probleme, da habe ich aber schon was nicht so ganz Elegantes reingemogelt. Wie man das in diesem neuen Fall retten könnte, will mir jetzt gerade nicht einfallen.

Edit: Das Problem ist offenbar noch ursprünglicher, denn auch im englischen Original funktioniert das nicht:

**Mein englisches Testspiel:**
> Kanzleramt

You can see Gerd and Helmut here.

>x kanzler

Which do you mean, Gerd or Helmut?

Nicht gut. Eigentlich sollte es "*Who* do you mean ... " heißen.

Edit 2: So wie es aussieht, wird der Creature_Token-Kontext nur bei Konversation gesetzt. Bei allen anderen Aktionen wird das ignoriert. Der Parser müsste eigentlich gucken, ob beide Objekte *animate* sind und wenn ja, die Wen-Frage stellen. Wenn nur eines von den Objekten unbelebt ist, kommt das vielleicht etwas merwürdig rüber:

>u kanzler

Wen meinst du, Helmut oder den Weißwein?

Du könntest Dich ja vorerst mit einer neuen Disambiguisierungs-Regel behelfen (was ja sowieso immer ganz nett ist für den Spieler):

blue

Viele Grüße,

Christian
Geschrieben um 10:02 am 29.01.2010 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

ChristianB:

Warum das nicht klappt, muss ich mal näher ergründen.

Inform schaut offenbar nicht, welche Objekte ausgegeben werden sollen, sondern welches Token untersucht wird. Man könnte die von Christian identifizierten Zeilen gegen eine solche Überprüfung austauschen:


    for (i=1 : i<=number_of_classes : i++) {

        while (((match_classes-->marker) ~= i)

            && ((match_classes-->marker) ~= -i)) marker++;

        if (match_list-->marker hasnt animate) j = 0;

    }

   

    if (j) L__M(##Miscellany, 45); else L__M(##Miscellany, 46);

    ! if (context==CREATURE_TOKEN) L__M(##Miscellany, 45);

    ! else                         L__M(##Miscellany, 46);

Im Kanzlerbeispiel funktioniert das ganz gut:

Frotz:

u kanzler

Wen meinst du, Helmut oder Gerd?

gerd

Du siehst nichts Besonderes an Gerd.

u gerd

Was meinst du, Gerd oder den Weißwein?

wein

Ein 2002er Château de Gerd.

Vielleicht sollte das in deform Standard sein.

Geschrieben um 14:10 am 29.01.2010 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

Martin:

Vielleicht sollte das in deform Standard sein.

Gekauft, danke Martin! Ich denke schon, dass das Standard sein sollte (wenn es nicht noch irgendwem gelingt, die Abfrage auszuhebeln).

Ich konnte noch keinen Fehler finden. Die Frage wird auch bei mehr als zwei Kandidaten korrekt gestellt. Zum Ausprobieren für die vielen fleißigen I7-Autoren habe ich das schon mal in die deutsche Erweiterung aufgenommen und eine neue Version hochgeladen.

Vielen Dank an Christoph fürs Finden und Martin fürs Reparieren!

Viel Spaß weiterhin,

Christian

Geschrieben um 14:27 am 29.01.2010 | Zitat | Editieren | Löschen
ChrisW
Mitglied
Dr Gumby
Beiträge: 275

Wow, das ging schnell! Vielen Dank euch beiden für die Hilfe!

ChristianB:

Du könntest Dich ja vorerst mit einer neuen Disambiguisierungs-Regel behelfen (was ja sowieso immer ganz nett ist für den Spieler):

blue

Es geht bei mir auch in der Praxis um Berufsbezeichnungen, die wahrscheinlich vom Spieler kaum verwendet werden, aber falls doch, kann Inform keine fundierte Annahme treffen, wer von beiden gemeint ist. Die Trefferquote wäre fifty-fifty. Solche Fälle gibt's halt auch. :)

Geschrieben um 21:16 am 31.01.2010 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

So, eine neue Version von deform ist oben. Sie enthält nur den oben gezeigten Patch, wer den also schon drin hat, kann sich den Download sparen.

Ich hatte zunächst befürchtet, dass durch diesen Fix auch leere Nachfragen, bei dem Objektangaben ganz fehlen ("Was willst du nehmen?") mit einem "Wem" bedacht werden, aber das ist nicht der Fall - das wird komplett in PrintCommand() gelöst.

Geschrieben um 00:08 am 01.02.2010 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

Super, dankeschön! Ich habe den Fehler an Graham Nelson gemeldet -- bin gespannt, was er dazu sagt.

AntwortenNeues ThemaNeue Umfrage
Powered by Spam Board SVN © 2007 - 2021
Impressum / Datenschutz