IF-Forum

» IF-Forum - Autorencafé - Schreiben! - Teil von etwas (Inventar)
AntwortenNeues ThemaNeue Umfrage

Teil von etwas (Inventar)

Geschrieben um 18:05 am 21.01.2011 | Zitat | Editieren | Löschen
Christian
Mitglied
Student Gumby
Beiträge: 32

Hallo zusammen,

ich kaempfe mich gerade durch die Untiefen von Inform7 und da kommen wohl zwangslaeufig einige Fragen auf.

Ist es moeglich im Inventar Dinge die zusammen gehoeren, auch gemeinsam aufzulisten? Im konkreten Fall: Wenn ich einen Anzug habe und einen weiteren Gegenstand der (wenn man ihn anzieht) "part of the" Anzug wird, kann man den zweiten Gegenstand dann direkt nach dem Anzug, am besten etwas eingerueckt, anzeigen lassen? Oder noch besser, wenn etwas "part of something" wird, dass es dann immer mit dem, ich nenn's jetzt mal Elternteil, aufgelistet wird?

Idealerweise sollte das Teil welches "part of" wird, dann auch mit abgelegt werden, wenn das "Elternteil" aus dem Inventory verschwindet.

Vielleicht liege ich da mit der Eigenschaft "is part of something" ja auch voll daneben?!

Gruss

Christian

Geschrieben um 01:53 am 22.01.2011 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

Hallo Christian, willkommen im flachen Gewässer!

Teile von Dingen werden in I7 nicht automatisch im Inventar zusammengefasst. Der Inhalt von Dingen (Behältern) hingegen schon. Hier mal ein Beispiel mit extra eingerücktem Inventar und Spiegelstrichen, in dem ein Kostüm, das in Wirklichkeit ein Behälter ist, aus drei Teilen besteht:

blue

Das ergibt:



Du hast Folgendes bei dir:

    - ein Spiderman-Kostüm (angezogen)

         - eine blaue Pyjamahose

         - ein blau-rotes T-Shirt

         - eine Spiderman-Maske```

Man kann sowas sicher auch für echte Teile hinkriegen, oder Dinge von Hand im Inventar gruppieren, aber da muss ich leider passen. Ich habe mal ein Spiel geschrieben, in dem Kostüme aus verschiedenen Teilen eine wichtige Rolle spielen (allerdings in I6); das sieht erstmal harmlos aus, ist aber alles andere als trivial.

In dem obigen Beispiel funktioniert das Ausziehen von Teilen des Kostüms nicht, weil Dinge nicht gleichzeitig in dem Kostüm und angezogen sein können (zumindest in I7). Mit Teilen wird's noch schwieriger, denn die sind fest mit dem Mutterobjekt verschweißt. Ich habe das in meinem Spiel (Klub Karisma) so gelöst, dass alle Einzelteile Kleidung waren, solange, bis das Kostüm einmal komplett angezogen war. Dann wurden alle Teile zu einem Gesamtkostüm zusammengesetzt, das man nur als Ganzes wieder ausziehen (und danach auch wieder anziehen) konnte. Das Zerlegen in die Einzelteile war für das Spiel nicht wichtig und deshalb habe ich mir diese Mühe gespart. Erschwerend hinzu kam noch, dass man die Kleidung in mehreren Schichten tragen konnte. Ich habe für das ganze Anziehen und Ausziehen eine neue Klasse (Kind) für Kostüme definiert, in der der ganze Kram geregelt wurde. Es gab zusätzlich noch eine Klasse "Gown", die man über einem Kostüm tragen konnte. Und dann noch bestimmte Unterwäsche, die man erst ausziehen konnte, wenn man die Schicht darüber ausgezogen hat. Und Schuhe, mit Socken drunter oder auch nicht. Ziemlicher Irrsinn.

Viel Erfolg und immer 'ne Handbreit Wasser unterm Kiel,

Christian
Geschrieben um 12:23 am 22.01.2011 | Zitat | Editieren | Löschen
Christian
Mitglied
Student Gumby
Beiträge: 32

Hallo Christian,

vielen Dank für die schnelle und ausführliche Antwort!

Mit Deinem Beispiel als Grundlage, hab' ich eine - für mich erst einmal - ausreichende Lösung gefunden. Ob es jetzt für die Klamotten großen Sinn macht weiß ich nicht, in meiner Story soll ein Anzug - genauer ein Raumanzug - mit zusätzlichen Ausrüstungsgegenständen "bestückt" werden können.

Irgendwie hab' ich bei meinen ersten Versuchen mit einem Haufen "Instead"-Anweisungen alles etwas durcheinandergebracht. Das meiste konnte ich dann mit "Before"- oder "After"-Konstrukten lösen, was die Inform7 Engine dann wohl etwas besänftigt hat. Das Beispiel unten wäre dann auch nur ein Minimalbeispiel, da viele Aktionen noch abgefangen werden müssten.

Btw., kann das jemand bestätigen, dass man mit "Instead" die Abläufe etwas durcheinanderwürfeln kann, wenn man nicht aufpasst?

Nun, wie dem auch sei, hier mal der Quelltext:

blueErgebnis:



> nimm hose

In Ordnung.

> nimm maske

In Ordnung.

> nimm shirt

In Ordnung.

> i

Du hast Folgendes bei dir:

    - ein blau-rotes T-Shirt

    - eine Spiderman-Maske

    - eine blaue Pyjamahose

    - ein Spiderman-Kostüm

       (angezogen)

> zieh hose an

> zieh shirt an

> zieh maske an

> i

Du hast Folgendes bei dir:

    - ein Spiderman-Kostüm

        - blaue Pyjamahose (Teil des Kostüms)

        - blau-rotes T-Shirt (Teil des Kostüms)

        - Spiderman-Maske (Teil des Kostüms)

       (angezogen)

> zieh hose aus

Irgendwie fuehle ich mich nackt ohne die blaue Pyjamahose.

> i

Du hast Folgendes bei dir:

    - eine blaue Pyjamahose

    - ein Spiderman-Kostüm

        - blau-rotes T-Shirt (Teil des Kostüms)

        - Spiderman-Maske (Teil des Kostüms)

       (angezogen)

> ```

Was mich jetzt noch stört, ist, dass der Text "(angezogen)" am Ende der Liste erscheint und nicht hinter dem Kostüm.

> Use inventory indent and the inventory hyphen bullet.

Das sind so kleine nützliche Dinge, über die man aber glaube nur durch Zufall stolpert, oder?! :-)

Noch mal danke!

Ah, eins interessiert mich noch sehr, kann man sich im laufenden Spiel von einem Objekt alle Eigenschaften auflisten lassen? Das wäre zum debuggen sehr hilfreich. Über die Befehle "Actions on/off" bin ich auch nur durch Zufall gestolpert. Inform7 scheint ein steiniger Weg zu sein...

Gruß

Christian

Edit: In diesem Beispiel ist es natürlich Quatsch, dass man das Kostüm schon trägt wenn man den Rest noch nicht angezogen hat... - Aber das war ja nicht das Problem.
Geschrieben um 17:42 am 22.01.2011 | Zitat | Editieren | Löschen
StJohn Limbo
Mitglied
Master Gumby
Beiträge: 104

Hallo Christian,

auch von mir noch ein herzliches "Willkommen hier im Forum"!

Zitat:

Btw., kann das jemand bestätigen, dass man mit "Instead" die Abläufe etwas durcheinanderwürfeln kann, wenn man nicht aufpasst?

Ja, das kann passieren, weil "Instead"-Regeln die üblichen Regeln für die jeweilige Handlung umgehen (sie laufen eben "instead", also stattdessen). Wenn ich mich richtig erinnere, ist die Reihenfolge der Regeln, die ablaufen, wenn eine Handlung erfolgt, so:

  1. Before

  2. Instead

  3. Check

  4. Carry Out

  5. After

  6. Report.

Wenn man für eine Handlung nun eine Instead-Regel angibt, dann wird der Inhalt dieser Regel ausgeführt und danach ist die Handlung direkt beendet (d. h., alle folgenden Regeln (3-6) werden dann nicht mehr berücksichtigt). Einen genaueren Einblick gibt es u. a. in den Kapiteln 7.2, 12.2 und 12.21 in der Inform-Dokumentation.

Zitat:

Ah, eins interessiert mich noch sehr, kann man sich im laufenden Spiel von einem Objekt alle Eigenschaften auflisten lassen?

Ja, mit "showme" kann man eine Auflistung der Objekte im aktuellen Raum anzeigen lassen, und mit "showme Objektname" (z. B. "showme Hose") werden die Eigenschaften eines Objekts aufgelistet (egal, ob es im selben Raum ist oder nicht).

Ein weiterer Test-Befehl, der manchmal nützlich sein kann: "rules on/off".

Hast Du vor, einen Grand-Prix-Beitrag einzureichen? Wäre cool!

Viel Spaß weiterhin wünscht

Michael

Geschrieben um 18:47 am 22.01.2011 | Zitat | Editieren | Löschen
Christian
Mitglied
Student Gumby
Beiträge: 32

Hallo,

danke fuer das Addendum und die Tipps!

Zitat:

Ja, mit "showme" kann man eine Auflistung der Objekte im aktuellen Raum anzeigen lassen, und mit "showme Objektname" (z. B. "showme Hose") werden die Eigenschaften eines Objekts aufgelistet (egal, ob es im selben Raum ist oder nicht).

Ein weiterer Test-Befehl, der manchmal nützlich sein kann: "rules on/off".

Hätte ich die Befehle von Anfang an gekannt... :-)

Für einen Beitrag beim Grand Prix bin ich zu spät dran, als Autor- und Inform7-Neuling bekomme ich das auf die schnelle nicht hin. Jedenfalls nichts, was meinen Ansprüchen und vermutlich den, der meisten potentiellen Spieler, genügen würde. Das will ich dann auch keinem zumuten. ;-)

Gruß

Christian

Geschrieben um 01:15 am 25.01.2011 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

Christian:

Was mich jetzt noch stört, ist, dass der Text "(angezogen)" am Ende der Liste erscheint und nicht hinter dem Kostüm.

Das könntest Du so ändern:

blue

Leider stimmen dann aber die Einrückungstiefen für die verschiedenen Inventar-Ebenen immer noch nicht so ganz. Und >INVENTAR ALS SATZ bringt alles durcheinander. Na ja.

Christian:

Use inventory indent and the inventory hyphen bullet.

Das sind so kleine nützliche Dinge, über die man aber glaube nur durch Zufall stolpert, oder?! :-)

... oder wenn man in der Kurzdoku, die in GerX enthalten ist (und die man in Dokumentationsteil der Entwicklungsumgebung --> Installed Extensions --> German einsehen kann) unter Kapitel 7 nachliest oder HIER klickt ;-) Da sind noch mehr Optionen aufgelistet, die es nur in der deutschen Übersetzung gibt.

Viele Grüße,

Christian

Geschrieben um 22:23 am 25.01.2011 | Zitat | Editieren | Löschen
Christian
Mitglied
Student Gumby
Beiträge: 32

Hallo!

Zitat:

Leider stimmen dann aber die Einrückungstiefen für die verschiedenen Inventar-Ebenen immer noch nicht so ganz.

Die Einrueckungstiefe ist mit ein paar Leerzeilen ok:



say "[line break]        - [n] (Teil des Kostüms)";```

**Zitat:**
> Und >INVENTAR ALS SATZ bringt alles durcheinander. Na ja. 

Mhmm, stimmt. Wusste gar nicht dass es >INVENTAR ALS SATZ  gibt. :-) Das koennte man ja noch umleiten auf ein "normales" >INV.

**Zitat:**
> 
> **Zitat:**
> > Christian hat folgendes geschrieben:
> 
> > Use inventory indent and the inventory hyphen bullet.
> 
> 
> 
> Das sind so kleine nützliche Dinge, über die man aber glaube nur durch Zufall stolpert, oder?! :-)
> 
> 
> 
> 
> 
> 
> ... oder wenn man in der Kurzdoku, die in GerX enthalten ist (und die man in Dokumentationsteil der Entwicklungsumgebung --> Installed Extensions --> German einsehen kann) unter Kapitel 7 nachliest oder HIER klickt ;-) 

Ja, ja, ich weiss! :-) Aber so kurz ist die Kurzdoku auch nicht!

Nochmals danke! Das letztendliche Ergebniss werde ich dann mal als Snippet posten.

Gruss

Christian
Geschrieben um 22:49 am 25.01.2011 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

Christian:

Mhmm, stimmt. Wusste gar nicht dass es >INVENTAR ALS SATZ gibt. :-)

Das ist noch nicht so richtig (eigentlich gar nicht) dokumentiert (ja, warum eigentlich nicht???). Das ist ein deform-Feature, das wir erst Ende August 2010 in GerX implementiert haben -- und es funktioniert etwa so (Zitat aus dem Changelog der Version 3/100828):

Zitat:

-- Das Anzeigen des Inventars funktioniert nun wie in deform. Der Spieler

kann zwischen zwei Anzeige-Stilen wählen:

"inventar hoch/liste/lang"

"inventar als liste"

ändern den Inventar-Stil auf "Liste" und zeigen das Inventar als

Liste an (Standard).

"inventar quer/satz/breit"

"inventar als satz"

ändern den Inventar-Stil auf "Satz" und zeigen das Inventar als

Satz an.

Anstelle des Verbs "inventar" können wie gewohnt auch die synonymen

Kommandos "i/inv/besitz/eigentum" verwendet werden. Beide Einstellungen

funktionieren auch mit den Optionen Non-nested lists, inventory indent

und inventory bullet.

Was da nicht steht, ist, dass die dazugehörige Steuervariable "inventory style" heißt und die Werte "wide inventory" und "tall inventory" annehmen kann.

Christian:

Das koennte man ja noch umleiten auf ein "normales" >INV.

Könnte man. Dann würden Fans dieser Umschaltmöglichkeit (gibt es I-Quer-Fans?) vielleicht etwas traurig sein. Oder auch nicht, wenn keiner davon weiß. Ich glaube für I6/deform war das auch nirgendwo dokumentiert. Das werde ich dann wohl mal in der nächsten GerX-Version nachholen. Vielleicht gibt's sogar noch mehr, das noch dokumentiert werden muss ...

Christian:

Aber so kurz ist die Kurzdoku auch nicht!

... deshalb vielleicht ;-)

Grüße,

Christian

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