Geschrieben um 12:21 am 14.07.2010 | Zitat | Editieren | Löschen | |
Mitglied Bachelor Gumby Beiträge: 40 | Hallo an alle! Es sind wieder Sommerferien und draußen ist es viel zu warm, daher vertiefe ich meine Gehversuche mit I6, genauer: Deform. (In mir verstärkt sich der Eindruck, dass ich damit ziemlich out bin, aber macht nix...) Da ich mit TAG angefangen habe, bin ich bei den leicht zu handelnden Objektbeschreibungen etwas verwöhnt. Gibt es bei I6 auch eine Möglichkeit, eine Darauf- oder Darin-Property zu definieren? Für Nicht-TAG-ler:
Meine bisherige Idee: die Invent-Property dazu verwenden. Daran friemel ich gerade herum, aber bisher ohne nennenswerten Erfolg. Kennt jemand eine andere, einfachere Möglichkeit oder hat jemand so was schon mal gemacht und online gestellt? Ich freu mich über Hinweise und wünsche schöne Sommertage. Christof |
Geschrieben um 14:52 am 14.07.2010 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 1062 | Vergleichbares gibt es in deform standardmäßig nicht. Raumbeschreibung: Falls Dich nur die Inhaltslisten als Nebensatz (in Klammern) stört, könntest Du die deform-Option der unverschachtelten Listen benutzen, indem Du am Anfang Deines Codes
definierst. Ansonsten kannst du per
|
Geschrieben um 09:51 am 15.07.2010 | Zitat | Editieren | Löschen | |
Mitglied Bachelor Gumby Beiträge: 40 | Hallo Christian, danke schön erst mal für die schnelle Antwort. Die Auflistung im einzelnen Satz gefällt mir schon deutlich besser. Dein letzter Hinweis funktioniert bei mir nicht. Ich habe den Befehl PrintOrRun durch print (string) ersetzt, weil WinFrotz dabei immer einen Illegal-Object-Fehler anzeigt und dann abstürzt. Aber da meine Objektbeschreibungen eher simpel sind, macht das nichts. (Was sie kompliziert macht, sind ja die Inhaltsbeschreibungen, die ich gemäß deiner Anleitung in der before-Property aufliste.) Es sieht dann so aus:
Nun tauchen folgende Probleme auf:
Zitat:
Warning! @get_child called with object 0 (PC = d25c) (occurence = 1) und noch zwei davon. Vielleicht hast du auch eine Idee, wie man diesen Fehler fixen kann. Ansonst ist wie gesagt die ausführliche Inventarbeschreibung ohne Klammern schon eine gute Sache und ich brauche (vorerst) keine ausgefallenen Listen. Es wäre nur schön, wenn nicht immer Auf dem ... ist/ sind ... verwendet würde, und ich will erst mal nicht in der Lib rumspielen. Schöne Grüße, Christof |
Geschrieben um 18:06 am 15.07.2010 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 1062 | Ja, die von mir vorgeschlagene Liste war Unfug. Sie enthielt die Listenoptionen ISARE_BIT und WORKFLAG_BIT. Wenn Du die aus der Listenanweisung herausnimmst, klappt es vielleicht besser. Zu den Listenoptionen: ISARE_BIT stellt der Liste ein "ist" oder ein "sind" voran. Das WORKFLAG_BIT berücksichtigt nur Objekte, die zuvor zum Listen markiert wurden. Wenn du die description als String ausgibst, kannst Du bei keinem Objekt eine Routine als description verwenden, was die Möglichkeiten der Klasse "Ablage" einschränkt. |
Geschrieben um 20:28 am 15.07.2010 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 1062 | Tschuldigung, aber ich bin jetzt erst zum Testen gekommen. Deshalb kommt hier ein gestester Vorschlag, der (glaube ich) das macht, was Du möchtest. Die Routine SayWhatsInOrOnIt kannst Du für Behälter und Ablagen benutzen und sie funktioniert mit und ohne NO_NESTED_LISTS.
|
Geschrieben um 21:16 am 15.07.2010 | Zitat | Editieren | Löschen | |
Mitglied Bachelor Gumby Beiträge: 40 | Guten Abend! ChristianB:
Kein Grund zum Entschuldigen, das ist ja kein Dienstleistungsbetrieb hier. Die meisten meiner Fragen liegen ohnehin in der Tatsache begründet, dass ich das DM nicht von Deckel zu Deckel durcharbeiten kann und nicht immer die richtigen Suchbegriffe finde. Und Stück für Stück fange ich an, die Programmiersprache zu druchblicken. Ich bin nach deinen Tipps auf eine ähnliche Idee gekommen und habe eine Routine programmiert, die ähnliches leistet. Nur kannte ich die Bedingung children == 0 nicht, das habe ich mit einer While-Schleife umschifft. Ein weiteres Problem war, dass die Objektbeschreibung zweimal ausgedruckt wurde; der Return-Befehl hat Deform also nicht daran gehindert, nach dem Abarbeiten des Before-Befehls das Objekt noch mal zu beschreiben, und zwar dann erst mit Ablageinhalt. Daher habe ich die Funktion in einer After-Property aufgerufen und so funzt es bei mir:
Deine Variante werde ich aber auch gleich ausprobieren, damit ich die genannten Befehle besser verstehe. Übrigens klappt es bei mir nicht, die Inhaltslisten mit dem Invent-Befehl in der Raumbeschreibung zu deaktivieren, aber das ist das nächste Projekt. Schönen Dank noch mal und bis zur nächsten Frage... Christof |
Geschrieben um 09:34 am 20.07.2010 | Zitat | Editieren | Löschen | |
Mitglied Bachelor Gumby Beiträge: 40 | Und noch mal hallo an alle, die es wissen wollen! Ich habe nun doch in der Lib rumgespielt und in der in german.h angegebenen Language-Routine im Abschnitt Look die Einträge 4 und -1 verändert; statt der bisherigen Einträge wird auf die Routine ZeigeInhalt verwiesen. Dort wird erst geprüft, ob ein Objekt überhaupt Töchter hat, und wenn ja, ob es eine darauf-Property besitzt. Wenn nicht, wird die Liste ausgegeben, und zwar (ein kleiner Spleen von mir) unter Verwendung von Zufallstexten, sodass verschiedeneAngaben möglich sind: *Auf dem Tisch siehst du eine Flasche Korn und zwei Gläser. Es befinden sich eine Flasche Korn und zwei Gläser auf dem Tisch. Eine Flasche Korn und zwei Gläser befinden sich auf dem Tisch. Du siehst auf dem Tisch eine Flasche Korn und zwei Gläser. *u.s.w. Weil diese Texte oft noch zu zu langweilig (und nichtssagend) sind, gibt es auch die Möglichkeit, dass Gegenstände herumliegen: *Auf dem Bett liegen drei Paar Socken. Ein Stapel Wäsche liegt im Waschkorb.* Nur wenig komplizierter wird es, wenn Gegenstände per se nicht liegen, sondern stehen, wie etwa der Wäschekorb. Der bekommt eine Property l_verb "steh", die besagt, dass er steht und nicht liegt. Hier kann der Programmierer auch andere Verben, jedoch nur einteilige: "vergammel" ja, "herumoxidier" nein. Auf der To-Do-Liste ist noch das Verarbeiten von Gegenständen, die stehen und liegen können. *Eine Flasche Korn und drei Gläser stehen auf dem Tisch. Auf dem Wohnzimmerteppich liegt eine leere Schnapsflasche.* Das vielleicht später. Wer Interesse hat, die Erweiterung auszuprobieren oder vielleicht erst mal nur kritisch durchzulesen findet sie unter www.gehirnthaler.net -> Download. Ich freu mich über Rückmeldungen. (Die Änderungen sind wie o.a. zu finden; die zusätzlich Routinen etc. sind unten angefügt.) Christof |