| Geschrieben um 01:18 am 09.09.2004 | Zitat | Editieren | Löschen | |
Mitglied Prof Gumby Beiträge: 569 | Ich weiß, die Frage hat Tanan schon mal so ähnlich hier im Forum gestellt, nur leider scheint die Antwort zu dem Beitrag gelöscht worden zu sein, also frag ich noch einmal: Momentan ist mir nur die Möglichkeit über das Attribut fest zum Unsichtbarmachen von Objekten bekannt. Um solche Objekte dennoch zu nehmen (oder auf andere entsprechende Weise zu manipulieren), schalte ich vor der Ausführung das Attribut fest aus und evtl. nach der Ausführung wieder ein; das kann in manchen Fällen recht umständlich sein. Gibt es noch eine andere Möglichkeit, Objekte unsichtbar zu machen, z.B. über ein Objekt-Attribut unsichtbar? |
| Geschrieben um 11:34 am 09.09.2004 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 707 | <td valign="top"><div class="post"><p>Es stimmt, lediglich Objekte mit dem Attribut <strong>fest</strong> und <strong>Deko</strong>s werden in Raumbeschreibungen nicht angezeigt. <strong>Deko</strong>s sind spezielle Objekte, die ihren Ort und ihren Zustand wähend des Spiels nicht ändern können und immer <strong>Deko</strong>s bleiben. Die einzige Möglichkeit, über Attribute die Sichtbarkeit zu ändern, ist also wie von dir beschrieben mit <strong>fest</strong>, das dem Objekt gegeben oder weggenommen wird.</p> <p>Der Hintergrund ist folgender: Alle Objekte, die der Spieler mitnehmen und woanders wieder ablegen kann, werden im dynamischen Teil der Raumbeschreibung, der Liste der Objekte erwähnt. Das ist so, damit der Spieler immer über den Zustand des Raums inklusive seines Inhalts Bescheid weiß. Das Attribut <strong>fest</strong> ist für nicht bewegliche Objekte gedacht, die in der (statischen) Raum<strong>besch</strong>reibung explizit erwähnt werden. Soll ein solcher Gegenstand in der Liste der beweglichen Objekte auftauchen, womöglich mit einer <strong>Erst</strong>-Beschreibung (die ja immer angezeigt würde, da das Objekt nicht mitgenommen werden kann und so auch nie vom Programm das Attribut <strong>bewegt</strong> bekommt), so muss es das Attribut <strong>immobil</strong> bekommen. (Diese Objekte können natürlich den Raum wechseln, wenn es der Autor so programmiert. Nur der Spieler kann sie nicht mit sich herumtragen.)</p> <p>Ein Verbergen von Objekten ist natürlich erst einmal eine Irreführung des Spielers, und als solche nicht erwünscht. Es sei denn, sie ist Bestandteil eines Rätsels, und dann ist sie wohl eine Ausnahme, zu der man ruhig etwas mehr Programmieraufwand in Kauf nehmen kann, finde ich. Wenn es in deinem Spiel, aus welchen Gründen auch immer, viele solcher Objekte gibt, ist die wohl eleganteste Lösung eine <strong>ObjKlasse</strong>, die das Attribut <strong>fest</strong> so setzt und löscht, wie du es möchtest.</p> <p>Eine weitere Möglichkeit, ein Objekt unsichtbar zu machen, ist, die Aktion <strong>SichtUndRw</strong> zu verwenden. Im nachfolgenden Beispiel kann man den Dreizack immer betrachten und anfassen, er wird aber nicht in der Raumbeschreibung erwähnt:</p> <p>“`</p> <h1>DAT ‘normal.adv’</h1> <p>Aktion Anfang</p> <p>Ausf</p> <p> Text ‘Irgendwo hier muss der Dreizack versteckt ein.</p> <p> [#][#][f]Z U M G R E I F E N N A H[n]</p> <p> [x]Ein interaktives Objekteraten[#]’</p> <p> geheZu Versteck</p> <p>EndeAusf</p> <p>Raum Strand</p> <p>Name ‘Strand’</p> <p>S Versteck</p> <p>Besch ‘Dieser weiße Sandstrand erstreckt sich von Westen nach</p> <p> Osten. Im Süden erhebt sich eine steile Felswand mit einer</p> <p> schmalen Öffnung.’</p> <p>Raum Versteck</p> <p>Name ‘Versteck’</p> <p>N Strand</p> <p>Besch ‘Dies ist das geheime Versteck von Ragnar dem</p> <p> Rotbärtigen, eine klamme und nur leidlich beleuchtete</p> <p> Höhle. Der einzige Ausgang ist im Norden, zurück zum</p> <p> Strand.’</p> <p>Obj Zechine</p> <p>Name ‘Zechnine’ f</p> <p>Adj ‘golden’</p> <p>Vor ‘gold’</p> <p>Subst ‘zechine’ f, ‘münze’ f</p> <p>Besch ‘Eine goldene Zechine aus Venedig, verziert mit dem</p> <p> Konterfei eines der Borgia.’</p> <p>Ort Versteck</p> <p>Obj Sextant</p> <p>Name ‘golden^ Sextant’ m</p> <p>Adj ‘golden’ ‘nautisch’</p> <p>Vor ‘gold’</p> <p>Subst ‘sextant’ m, ‘instrument’ n</p> <p>Besch ‘Ein nautisches Instrument, Präzisionsarbeit aus</p> <p> Nantes und purem Gold.’</p> <p>Ort Versteck</p> <p>Obj Brosche</p> <p>Name ‘Brosche’ f</p> <p>Adj ‘golden’</p> <p>Vor ‘gold’ ‘salamander’</p> <p>Subst ‘brosche’ f, ‘salamander’ m</p> <p>Besch ‘Es ist eine goldene Brosche in der Form eines</p> <p> Salamanders.’</p> <p>Ort Versteck</p> <p>Raum Limbo</p> <p>Name ‘Zwischen dieser und jener Welt’</p> <p>Besch ‘An einer der immateriellen Wände steht: “Wer das</p> <p> liest, ist tot.”’</p> <p>Obj Dreizack</p> <p>Name ‘Dreizack’ m</p> <p>Adj ‘golden’</p> <p>Vor ‘gold’</p> <p>Subst ‘dreizack’ m, ‘gabel’ f</p> <p>Besch ‘Ein Dreizack von etwa fünf Ellen Länge, wie er</p> <p> früher in der Ägäis benutzt wurde - nur, dass dieser</p> <p> aus purem Gold ist.’</p> <p>Ort Limbo</p> <p>Aktion SichtUndRw</p> <p>Ausf</p> <p> wenn (aRaum = Versteck) und (iObj = Dreizack) und</p> <p> (iObj in Limbo) und /(aBef = Lage) dann</p> <p> ObjInRw iObj</p> <p> ObjInSicht iObj</p> <p> Ende</p> <p>EndeAusf</p> <p>“`</p> <p>Alternativ könnte man in <strong>SichtUndRw</strong> auch die Sichtbarkeit des Dreizacks beim Befehl “Lage” mit <strong>ObjAußerSicht</strong> unterdrücken und würde einen Raum sparen. Dann würde der Dreizack (wenn es nicht anders abgefangen würde) im Versteck immer unsichtbar sein, auch wenn er aufgehoben und wieder abgelegt wird. (Das ist mir zu spät eingefallen, ich hatte den Code schon geschrieben…)</p> </div></td> |
| Geschrieben um 17:41 am 09.09.2004 | Zitat | Editieren | Löschen | |
Mitglied Prof Gumby Beiträge: 569 | Herzlichen Dank für die ausführliche Antwort und das schöne Beispiel. Dein Vorschlag mit der Aktion SichtUndRw ist bei weitem eleganter, als das, was ich mir da zurechtgebastelt hatte. Es sollen an bestimmten Stellen im Spiel alle anwesenden (beweglichen) Gegenstände unsichtbar werden - so wirds viel übersichtlicher, danke nochmals. |
| Geschrieben um 14:19 am 13.09.2004 | Zitat | Editieren | Löschen | |
Gast | ChristianB:
Sie lautete meiner Erinnerung nach Walafrid:
|