| Geschrieben um 05:07 am 29.01.2010 | Zitat | Editieren | Löschen | |
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… “`Include German by Banbury & Christian Bluemke. 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:
Du siehst hier Gerd und Helmut.
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 | |
Mitglied Prof Gumby Beiträge: 569 | <td valign="top"><div class="post"><p>Hallo zurück!</p> <p><strong>ChrisW:</strong></p> <blockquote> <p>Ich hätte als Antwort eher “Wen meinst du…?” erwartet, also Miscellany 45 statt 46.</p> </blockquote> <p>Hmmm. In der Routine NounDomain() gibt es zwei Zeilen (4573 f.), die das eigentlich richtig ausgeben sollten:</p> <p>“` if (context==CREATURE_TOKEN) L__M(##Miscellany, 45);</p> <p> else L__M(##Miscellany, 46);“`</p> <p>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.</p> <p>Edit: Das Problem ist offenbar noch ursprünglicher, denn auch im englischen Original funktioniert das nicht:</p> <p><strong>Mein englisches Testspiel:</strong></p> <blockquote> <p>Kanzleramt</p> </blockquote> <p>You can see Gerd and Helmut here.</p> <blockquote> <p>x kanzler</p> </blockquote> <p>Which do you mean, Gerd or Helmut?</p> <p>Nicht gut. Eigentlich sollte es “<em>Who</em> do you mean … ” heißen.</p> <p>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:</p> <blockquote> <p>u kanzler</p> </blockquote> <p>Wen meinst du, Helmut oder den Weißwein?</p> <p>Du könntest Dich ja vorerst mit einer neuen Disambiguisierungs-Regel behelfen (was ja sowieso immer ganz nett ist für den Spieler):</p> <p>blue</p> <p>Viele Grüße,</p> <p>Christian</p> </div></td> |
| Geschrieben um 10:02 am 29.01.2010 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 707 | <td valign="top"><div class="post"><p><strong>ChristianB:</strong></p> <blockquote> <p>Warum das nicht klappt, muss ich mal näher ergründen.</p> </blockquote> <p>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:</p> <p>“` j = 1; marker = 0;</p> <p> for (i=1 : i<=number<em>of</em>classes : i++) {</p> <p> while (((match_classes—>marker) ~= i)</p> <p> && ((match_classes—>marker) ~= -i)) marker++;</p> <p> if (match_list—>marker hasnt animate) j = 0;</p> <p> }</p> <p> </p> <p> if (j) L<strong>M(##Miscellany, 45); else L</strong>M(##Miscellany, 46);</p> <p> ! if (context==CREATURE_TOKEN) L__M(##Miscellany, 45);</p> <p> ! else L__M(##Miscellany, 46);</p> <p>“`</p> <p>Im Kanzlerbeispiel funktioniert das ganz gut:</p> <p><strong>Frotz:</strong></p> <blockquote> <blockquote> <p>u kanzler</p> </blockquote> </blockquote> <p>Wen meinst du, Helmut oder Gerd?</p> <blockquote> <p>gerd</p> </blockquote> <p>Du siehst nichts Besonderes an Gerd.</p> <blockquote> <p>u gerd</p> </blockquote> <p>Was meinst du, Gerd oder den Weißwein?</p> <blockquote> <p>wein</p> </blockquote> <p>Ein 2002er Château de Gerd.</p> <p>Vielleicht sollte das in deform Standard sein.</p> </div></td> |
| Geschrieben um 14:10 am 29.01.2010 | Zitat | Editieren | Löschen | |
Mitglied Prof Gumby Beiträge: 569 | Martin:
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 | |
Mitglied Dr Gumby Beiträge: 275 | Wow, das ging schnell! Vielen Dank euch beiden für die Hilfe! ChristianB:
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 | |
Mitglied Retired Gumby Beiträge: 707 | 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 | |
Mitglied Prof Gumby Beiträge: 569 | Super, dankeschön! Ich habe den Fehler an Graham Nelson gemeldet — bin gespannt, was er dazu sagt. |