Autor |
Nachricht |
< I7 und GerX Fragen |
|
Verfasst am:
Mi, 3 Nov 2010 - 13:26
|
|
|
Wasserträger

Anmeldungsdatum: 02.11.2010
Beiträge: 90
Wohnort: Schkeuditz
|
|
Hallo,
ich stricke nun erst seid ein paar Tagen mit Inform 7 und GerX rum. Sehr hilfreich war dabei "Mariel". Also erstmal vielen Dank dafür. So etwas erleichtert ungemein den Einstieg.
Jetzt bin ich natürlich über ein paar Sachen gestolpert:
1. Scheinbar wird durch das Einbinden der deutschen Erweiterung die Rease-Funktion nicht beeinflußt, oder doch? Ich habe gesehen, dass ich selbst Templates schreiben kann. Das würde ich jetzt tun um am Ende eine deutsche Seite bei "release along with a website" zu erhalten. Meine Frage ist nun: Ist das überhaupt nötig oder werden die Standardseiten bereits durch eine andere Mechanik übersetzt, die ich nur nicht gefunden habe.
2. Ich hätte gern das ein Objekt abhängig von einer Condition beim Betreten eines Raumes angezeigt wird (so wie scenery).
Bsp.:
Code: |
The tree-garden is a room. "Du stehst in einem kleinen Teil des Gartens. Direkt neben Dir ragt ein Apfelbaum in die Höhe.".
A thing can be atop.
A thing is usually not atop.
The apple is a male edible thing in the tree-garden. The printed name of the apple is "Apfel". Understand "apfel" as apple. The apple is atop.
Instead of taking the apple when the apple is atop:
say "Du pflückst den Apfel.";
now the apple is not atop;
now the player carries the apple.
|
"atop" soll hier bedeuten der Apfel hängt noch am Baum. Solange der Spieler den Apfel nicht gepflückt hat, möchte ich nicht, dass er beim Betreten des Raumes aufgeführt wird. Geht das irgendwie elegant.
3. unter Actions im Index im Inform-Editor sehe ich welche Regeln bei welcher Aktion greifen. Wenn die Regel von mir ist, habe ich da einen schönen Link. Wenn es aber eine bereits vorhandene ist, würde mich interessieren was die macht. Es gibt aber nur diese kleinen blauen Kästchen mit name und unlist, deren Funktion sich mir nicht erschließt.
Ich hoffe Ihr könnt mir helfen. |
|
|
|
 |
|
Verfasst am:
Mi, 3 Nov 2010 - 14:25
|
|
|
Experte

Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München
|
|
Zu Punkt 2: Wenn man nicht möchte, dass Gegenstände in der Raumbeschreibung auftauchen, muss man sie als scenery definieren. (Als alter I6er dachte ich ja, das ginge auch mit concealed, aber das kann man nur prüfen, nicht selbst belegen.)
Anstatt eine neue Eigenschaft für alle Objekte einzuführen, würde ich hier das bereits existierende scenery nehmen und es dann, genau wie Du es bereits mit atop gemacht hast, es vor dem ersten Nehmen wegnehmen.
Damit der Spieler überhaupt weiß, dass es einen Apfel gibt, muss die Beschreibung des Baums angepasst werden:
"Lekker, lekker!" by Bart Appeldoorn
Include German by Team Gerx.
A thing is usually privately-named. A room is usually privately-named.
The tree-garden is a room. "Du stehst in einem kleinen Teil des Gartens. Direkt neben Dir ragt ein Apfelbaum in die Höhe.". The printed name of the tree-garden is "Obstgarten".
The tree is male scenery in the tree-garden. The description is "Der knorrige Apfelbaum steht etwas abseits der anderen Bäume.[if apple is scenery] Ein Apfel hängt am Baum." Understand "knorrig" or "apfelbaum" or "baum" as the tree.
The apple is male edible scenery in the tree-garden. The printed name of the apple is "Apfel". Understand "apfel" or "boskoop" or "boskop" as the apple. The description is "Boskoop."
Instead of taking the apple when the apple is scenery:
say "Du pflückst den Apfel.";
now the apple is not scenery;
now the player carries the apple.
test me with "u baum / u apfel / nimm apfel / i / lege apfel ab / l / u baum".
_________________ Every silver lining has a cloud. |
|
|
|
 |
|
Verfasst am:
Mi, 3 Nov 2010 - 14:44
|
|
|
Wasserträger

Anmeldungsdatum: 02.11.2010
Beiträge: 90
Wohnort: Schkeuditz
|
|
Vielen Dank. Irgendwie dachte ich scenery ist eine Art (a kind) und nicht eine Eigenschaft. So geht's natürlich.
Zitat: | Damit der Spieler überhaupt weiß, dass es einen Apfel gibt, muss die Beschreibung des Baums angepasst werden |
Die Apfelbeschreibugn habe ich schon im Baum drin. Ich hatte mein Bsp. stark gekürzt damit es etwas übersichtlicher wird. Trotzdem Danke. |
|
|
|
 |
|
Verfasst am:
Mi, 3 Nov 2010 - 15:18
|
|
|
Experte

Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München
|
|
Hmmm. So ganz klappt das nicht: man kann den Apfel nicht zweimal aufheben, nur wenn er "gepflückt" wird: Man muss den Apfel zusätzlich not fixed in place machen.
Außerdem ist es keine gute Idee, den Apfel direkt ins Inventar des Spielers zu befördern - so umgeht man unter Umständen andere Regeln. Ich habe das Beispiel etwas abgeändert, damit es besser in das Gerüst von Inform passt. Wenn man die Regentonne schleppt, kann man nichts anderes mehr nehmen, also auch den Apfel nicht pflücken. (Aber dann funktioniert das mit dem for he first time nicht mehr. Naja, da soll sich mal das Team GerX drum kümmern.)
"Veräppelt" by Bart Appeldoorn
Include German by Team Gerx.
A thing is usually privately-named. A room is usually privately-named.
The tree-garden is a room. "Du stehst in einem kleinen Teil des Gartens. Direkt neben Dir ragt ein Apfelbaum in die Höhe.". The printed name of the tree-garden is "Obstgarten".
The tree is male scenery in the tree-garden. The description is "Der knorrige Apfelbaum steht etwas abseits der anderen Bäume. [if apple is scenery] Ein Apfel hängt am Baum." Understand "knorrig" or "apfelbaum" or "baum" as the tree.
The apple is male edible scenery in the tree-garden. The printed name of the apple is "Apfel". Understand "apfel" or "boskoop" or "boskop" as the apple. The description is "Boskoop."
Report taking the apple for the first time: say "Du pflückst den Apfel." instead.
Report eating the apple: say "Lekker, lekker." instead.
Before taking the apple when the apple is scenery: now the apple is not scenery; now the apple is not fixed in place.
The barrel is a female container in the tree-garden. "Eine Regentonne steht hier." The description is "Halbvoll[if the barrel is carried by the player] und sackschwer (Ächz!)[otherwise], aber gewiss tragbar." Understand "tonne" or "regentonne" or "fass [n]" or "regenfass [n]" or "wasser [n]" or "regenwasser [n]" as the barrel. Instead of inserting something into the barrel: say "Gluck, gluck, [der noun] verschwindet im brackigen Wasser."; now the noun is off-stage. Instead of searching the barrel, say "Du magst nicht in den brackigen Wasser fischen."
Check taking something when the player carries the barrel: say "Dazu musst du zuerst die Tonne abstellen." instead.
Check taking the barrel when the player is carrying something: say "Das kannst du nur machen, wenn du die Hände frei hast." instead.
Report taking the barrel: say "In Ordnung (Achz!)" instead.
test me with "u baum / u apfel / nimm apfel / i / lege apfel ab / l / u baum / nimm apfel".
test interference with "u tonne / nimm tonne / nimm apfel / stelle tonne ab / nimm apfel / u baum". _________________ Every silver lining has a cloud. |
|
|
|
 |
|
Verfasst am:
Mi, 3 Nov 2010 - 15:38
|
|
|
Wasserträger

Anmeldungsdatum: 02.11.2010
Beiträge: 90
Wohnort: Schkeuditz
|
|
Nein das ist auch nicht ganz was ich will. Da ich verhindern will, dass der Spieler den Apfel von unten pflückt, greift das "report [...] for the first time" wahrscheinlich nicht.
Ich glaube das sollte gehen:
Code: |
Before taking the apple when the apple is atop:
if the player is atop:
now the apple is not a scenery;
now the apple is not fixed in place.
Instead of taking the apple when the apple is atop and the player is not atop:
say "Du hüpfst ein wenig, aber Du kommst dennoch nicht an den Apfel heran.".
After taking the apple when the apple is atop:
now the apple is not atop;
say "Von hier oben kommst Du leicht an den Apfel. Er gehört Dir.".
|
Edit: Ich sehe gerade an Deinem Bsp. das ich das wohl lieber mit "check" testen sollte. Ich habe bis jetzt alles über instead-if-konstrukte abgefangen. Offenbar nicht der beste Weg.
Also eher so: Check taking something when the player is not atop.
Zuletzt bearbeitet von jorl am Mi, 3 Nov 2010 - 15:47, insgesamt einmal bearbeitet |
|
|
|
 |
|
Verfasst am:
Mi, 3 Nov 2010 - 15:47
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
jorl hat folgendes geschrieben: | 1. Scheinbar wird durch das Einbinden der deutschen Erweiterung die Rease-Funktion nicht beeinflußt, oder doch? |
Nein, GerX hat auf die Release-Funktionen (bislang) keinen Einfluss. (Ich habe es bis heute nicht hinbekommen, ein Spiel mit Webseite ins Release zu bringen. Vielleicht könnte mich da mal jemand schlauer machen, wie das richtig funktioniert ...)
Edit: Ich meinte, für Glulx habe ich noch Schwierigkeiten, eine Webseite zu erzeugen. Für Z habe sogar ich es hinbekommen.
Edit 2: Sorry, jetzt geht's auch mit Glulx. Hier war wohl etwas durcheinander geraten.
Michael hat Mariel mit deutscher Seite hinbekommen, aber ich vermute, dass er da einiges von Hand geändert hat. Falls es eine Möglichkeit gibt, eine deutsche Webseiten-Vorlage mit einzubinden, würde mich das sehr interessieren.
Grüße,
Christian |
|
|
|
 |
|
Verfasst am:
Mi, 3 Nov 2010 - 15:58
|
|
|
Wasserträger

Anmeldungsdatum: 02.11.2010
Beiträge: 90
Wohnort: Schkeuditz
|
|
Die einfachste (und nicht sehr schöne) Möglichkeit wäre doch die Standardseiten einmal zu übersetzen und als Download anzubieten. Dann kann man die ja einfach per Code: | Release along with a "Templatename" website. | einbinden.
Da fällt mir doch auch glatt noch Frage 4 ein:
Wenn ich so eine iFiction.xml erzeugen lasse, steht automatisch Code: | <language>en</language> | drin. Kann man das durch einen Parameter im Quellcode anpassen? (Ich weiß allerdings nicht inwieweit diese library cards überhaupt Verwendung finden. Ist mir nur aufgefallen.) |
|
|
|
 |
|
Verfasst am:
Mi, 3 Nov 2010 - 16:09
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
jorl hat folgendes geschrieben: | Die einfachste (und nicht sehr schöne) Möglichkeit wäre doch die Standardseiten einmal zu übersetzen und als Download anzubieten. |
Hmm. Anders geht's wohl nicht.
jorl hat folgendes geschrieben: | Kann man das durch einen Parameter im Quellcode anpassen? |
Ist mir nicht bekannt.
The story language is "de".
oder Ähnliches scheint nicht zu funktionieren.
Da muss wohl wieder der Texteditor angeworfen werden und von Hand nachgebastelt werden. Die Library cards sind wohl interessant für Betreiber von Spielesammlungen, schätze ich. Aber ob das schon irgendwo zum Einsatz kommt, weiß ich nicht. |
|
|
|
 |
|
Verfasst am:
Mi, 3 Nov 2010 - 17:15
|
|
|
Wasserträger

Anmeldungsdatum: 02.11.2010
Beiträge: 90
Wohnort: Schkeuditz
|
|
ChristianB hat folgendes geschrieben: | jorl hat folgendes geschrieben: | Die einfachste (und nicht sehr schöne) Möglichkeit wäre doch die Standardseiten einmal zu übersetzen und als Download anzubieten. |
Hmm. Anders geht's wohl nicht.
|
und es geht nicht mal so, da viele Texte gar nicht plain in den den Dateien stehen, sondern ersetzt werden (was wohl anhand der verschiedenen Releaseoptionen gar nicht anders möglich ist). Schade, aber man kann auch ohne leben. |
|
|
|
 |
|
Verfasst am:
Di, 9 Nov 2010 - 15:21
|
|
|
Wasserträger

Anmeldungsdatum: 02.11.2010
Beiträge: 90
Wohnort: Schkeuditz
|
|
Ich mache hier mal weiter mit
Frage Nummer 5:
In der Doku steht unter 2.12 use option
Zitat: | [...]change the normal way room descriptions are shown: normally they are given in full when the room is first entered, but are subsequently shortened unless the player actually asks to "look". |
Ich habe bei meinen bisherigen Versuchen nicht gesehen, dass irgendwann der Raumbeschreibungstext gekürzt wurde. Es steht immer die komplette Beschreibung da, wenn ich nicht selber mit [if]-Konstrukten eingreife. Und etwas wie eine "short description" scheint es auch nicht zu geben. Für mich sieht default wie full-length room descriptions aus. Übersehe ich da etwas?
Frage 6:
Ich möchte das der Spieler erst vom Bett aufsteht bevor er verschiedene Aktionen macht (und ihn aber nicht mit einem Text wie "Du musst erst aufstehen" quälen), aber
Code: | Before doing something other than sleeping or eximining when the player is on the bed:
try getting off the bed. |
liefert immer Code: | *** Run-time problem P7: Too many rulebooks in simultaneous use. |
|
|
|
|
 |
|
Verfasst am:
Di, 9 Nov 2010 - 20:17
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Zu Frage 5:
Die Option "full-length room descriptions" (VERBOSE) ist seit der neuen I7-Version der Standard. Es werden immer die langen Raumbeschreibungen ausgegeben, d.h. Es wird zunächst die description des Raumes angezeigt, dann die initial appeances der sichtbaren Objekte und dann die Namen der restlichen sichtbaren Objekte.
Mit der Option
Use abbreviated room descriptions.
kann der "alte" Standard wiederhergestellt werden, bei dem nur beim ersten Betreten des Raumes die vollen Beschreibungen angegeben werden (oder nach dem Befehl LAGE (LOOK)). Dies kann aber bei sehr dynamischen Raumbeschreibungen dazu führen, dass der Spieler Teile der Geschichte verpasst, deshalb wurde es geändert.
Zu Frage 6:
Dein Code führt zu einer Endlosschleife, weil die Aktion die versucht wird (getting off) immer wieder ausgeführt wird. Ich dachte ja, das löst man so:
Before doing something other than sleeping or examining when the player is on the bed: say "(Du steigst dazu erst auf.)[command clarification break]"; move the player to the location of the bed.
Aber das führt zu einem fatalen Fehler. (Dem mysteriösen Error 10) Schade.
Edit: So geht's: looking (für die erste Raumbeschreibung) und getting off müssen auch abgefangen werden.
Before doing something other than sleeping, looking, getting off or examining when the player is on the bed: try getting off the bed. |
|
|
|
 |
|
Verfasst am:
Mi, 10 Nov 2010 - 8:34
|
|
|
Wasserträger

Anmeldungsdatum: 02.11.2010
Beiträge: 90
Wohnort: Schkeuditz
|
|
Frage 5:
Mit der Option
Use abbreviated room descriptions.
werden die Raumbeschreibungen niemals angezeigt.
Use BRIEF room descriptions. funktioniert aber.
Aus der Doku geht für mich aber immer noch nicht hervor, warum es zwei verschiedene Arten gibt um einen Parameter zu setzen (also in wie weit sich das unterscheidet, aber vermutlich gar nicht). |
|
|
|
 |
|
Verfasst am:
Mi, 10 Nov 2010 - 9:51
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
VERBOSE, BRIEF und SUPERBRIEF sind die klassischen, noch aus Infocom-Zeiten stammenden Bezeichnungen.
WI 2.12 hat folgendes geschrieben: | Alternatively, we can set the traditional Infocom-style of room description to any of VERBOSE, BRIEF and SUPERBRIEF: ... |
Wie das neue Pendant zu BRIEF jetzt heißt, steht da allerdings nicht. Aber ein Blick in die Standard Rules zeigt, dass die Optionen wohl mal
sometimes abbreviated room descriptions
heißen sollte. Vielleicht wurde die einfach vergessen.
Wenn Du die statt BRIEF benutzen möchtest, kannst Du in deinem Quelltext schreiben:
Use sometimes abbreviated room descriptions translates as (- Constant I7_LOOKMODE = 1; -).
Dann kann die Option mit
Use sometimes abbreviated room descriptions.
aktiviert werden. Aber die abgekürzten Raumbeschreibungen sind für moderne Spiele wahrscheinlich sowieso nicht zu empfehlen. |
|
|
|
 |
|
Verfasst am:
Mi, 10 Nov 2010 - 11:49
|
|
|
Wasserträger

Anmeldungsdatum: 02.11.2010
Beiträge: 90
Wohnort: Schkeuditz
|
|
Ich habe jetzt die (wahrscheinlich einfachste) Lösung für Frage 2, falls das auch andere interessiert. Der Apfel muss nur undescribed sein und fertig.
Code: | The apple is a male edible undescribed thing in the tree-garden. |
|
|
|
|
 |
|
Verfasst am:
Mi, 10 Nov 2010 - 12:08
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Das Attribut undescribed wird als fehleranfällig gehandelt. Was genau das Problem damit ist, erinnere ich nicht mehr, aber das wurde immer wieder diskutiert. Wenn es also bei Dir zu seltsamen Phänomenen kommt (unvollständige Sätze oder so), dann liegt es wahrscheinlich daran.
Andrew Plotkin hat folgendes geschrieben: | The "undescribed" property is confusing. It does several different things at once, and I'd have to look through the library source code to name them all. That's why it's not documented: it's not a good idea to use it. It's a holdover from the I6 library code. |
Als sicherer gilt (glaube ich), den Apfel als scenery zu deklarieren und ihm dieses Attribut dann bei Bedarf zu nehmen. Mit dem Attribut mentioned könnte man vielleicht auch arbeiten. Wenn ein Objekt "mentioned" ist, bedeutet das, es wurde schon (in der Raumbeschreibung) erwähnt. |
|
|
|
 |
|