IF-Forum

» IF-Forum - Autorencafé - Schreiben! - [i6] Räume referenzieren
AntwortenNeues ThemaNeue Umfrage

[i6] Räume referenzieren

Geschrieben um 22:25 am 13.05.2014 | Zitat | Editieren | Löschen
Mikawa
Avatar
Mitglied
Prof Gumby
Beiträge: 324

Eine kleine Frage:

Wie kann man in I6 Räume referenzieren? Ein Raum ist ja auch nur ein Object, das auch keine besondere Eigenschaft zugewiesen bekommt, allerdings triggert der Parser L_M 39 "Damit musst du dich in diesem Spiel nicht beschäftigen.", was ja für die Examine Aktion eigentlich Unsinn ist. Da sollte einfach die Raumbeschreibung ausgegeben werden.

Wo setze ich da an?

Edit: Klarstellung: Ich meine eben, wie man den Standard Mechanismus aushebelt, der bei Räumen die oben genannte Meldung ausgibt.

Geschrieben um 23:33 am 13.05.2014 | Zitat | Editieren | Löschen
Mischa
Mitglied
Master Gumby
Beiträge: 107

Hast du schon probiert dem Raum Namen zu geben? (name-property)

Wenn das nicht reicht, könnte es (bei meiner Aufgabe) auch der external_name aus der GoNeighbour-Erweiterung gewesen sein...

Oder aber die ScenicGer-Erweiterung übernimmt das...

Edit: Link zu ScenicGer.h hinzugefügt

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

Standardmäßig ist der aktuelle Raum nicht sichtbar (in scope). Die Sichtbarkeit von Objekten kann man in dem Einhänger InScope() manipulieren. Hier mal ein ganz einfaches Beispiel, in dem immer der aktuelle Ort (auch bei Dunkelheit) in den sichtbaren Bereich gerückt wird, wenn die Aktion ##Examine getriggert werden soll. Damit lässt sich der Raum über Vokabeln in der Name-Property ansprechen.



   if (action_to_be == ##Examine)

      PlaceInScope(real_location);

];```

Die Routine muss irgendwo zwischen VerbLib und GermanG stehen.
Geschrieben um 08:31 am 14.05.2014 | Zitat | Editieren | Löschen
Mikawa
Avatar
Mitglied
Prof Gumby
Beiträge: 324

Ups, auf ein scope Problem wär ich nicht gekommen, weil der Raum ja mit definiertem Vokabular angesprochen werden kann.

Ok, vielen Dank!

Geschrieben um 12:01 am 14.05.2014 | Zitat | Editieren | Löschen
Mikawa
Avatar
Mitglied
Prof Gumby
Beiträge: 324

Der Vollständigkeit halber:

Am Ende der Routine fehlt noch rfalse, sonst wird der scope nur noch auf den Raum beschränkt.



   if (action_to_be == ##Examine)

      PlaceInScope(real_location);

   rfalse;

];```
Geschrieben um 12:16 am 14.05.2014 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

Ah, ja, genau. Auch so eine I6-Besonderheit: Normale Routinen geben true zurück, wenn sie ohne explizites "return" enden, aber bei Routinen in Objekteigenschaften ist der Default-Rückgabewert false (z.B. muss man bei der before-Property immer true zurück geben, wenn die Aktion sofort enden soll, was blue in I7 entspricht).

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

Mikawa:

Ups, auf ein scope Problem wär ich nicht gekommen, weil der Raum ja mit definiertem Vokabular angesprochen werden kann.

Ich hab's mal genauer nachgelesen: Das Vokabular in der name-Property ist eigentlich für "unwichtige" Dinge in der Raumbeschreibung reserviert und weniger als echter Raumname. Deshalb wird auch die Standard-Antwort für Scenery ausgegeben. Aus dem DM4, S. 106:

Graham Nelson:

This room has a name property even though rooms are not usually referred to by players. The nouns given are words which Inform knows ‘‘you don’t need to refer to’’, and it’s a convention of the genre that the designer should signpost the game in this way.

Graham setzt in I6 also auf Konventionen, mit denen wir schon länger in GerX gebrochen haben (und die wir wohl langsam vergessen). Die meisten Spieler deutschsprachiger Spiele scheinen ja zu finden, dass es natürlich ist, den Raum in einem Kommando zu nennen, z.B. in VERLASS KÜCHE (ich übrigens auch).

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