Forum moved to if-forum.org
Autor Nachricht
<  [i6] Räume referenzieren
Mikawa
BeitragVerfasst am: Di, 13 Mai 2014 - 21:25  Antworten mit Zitat
Abenteurer
Abenteurer


Anmeldungsdatum: 03.09.2009
Beiträge: 453
Wohnort: Cham

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.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mischa
BeitragVerfasst am: Di, 13 Mai 2014 - 22:33  Antworten mit Zitat
Abenteurer
Abenteurer


Anmeldungsdatum: 05.03.2008
Beiträge: 285
Wohnort: Wien

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
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ChristianB
BeitragVerfasst am: Mi, 14 Mai 2014 - 0:02  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

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.

Code:
[ InScope;
   if (action_to_be == ##Examine)
      PlaceInScope(real_location);
];

Die Routine muss irgendwo zwischen VerbLib und GermanG stehen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mikawa
BeitragVerfasst am: Mi, 14 Mai 2014 - 7:31  Antworten mit Zitat
Abenteurer
Abenteurer


Anmeldungsdatum: 03.09.2009
Beiträge: 453
Wohnort: Cham

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

Ok, vielen Dank!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mikawa
BeitragVerfasst am: Mi, 14 Mai 2014 - 11:01  Antworten mit Zitat
Abenteurer
Abenteurer


Anmeldungsdatum: 03.09.2009
Beiträge: 453
Wohnort: Cham

Der Vollständigkeit halber:

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

Code:
[ InScope;
   if (action_to_be == ##Examine)
      PlaceInScope(real_location);
   rfalse;
];
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ChristianB
BeitragVerfasst am: Mi, 14 Mai 2014 - 11:16  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

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 stop the action in I7 entspricht).
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ChristianB
BeitragVerfasst am: Mi, 14 Mai 2014 - 15:14  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

Mikawa hat folgendes geschrieben:
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 hat folgendes geschrieben:
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).
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Alle Zeiten sind GMT + 1 Stunde (MEZ)

Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Seite 1 von 1
if-de :: Forum Foren-Übersicht  >  Inform & Glulx

Neues Thema eröffnen   Neue Antwort erstellen


 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.



Kontakt: Administrator

Powered by phpBB and NoseBleed v1.05