IF-Forum

» IF-Forum - Autorencafé - Schreiben! - Raumbeschreibung unterdrücken
AntwortenNeues ThemaNeue Umfrage

Raumbeschreibung unterdrücken

Geschrieben um 19:13 am 27.12.2006 | Zitat | Editieren | Löschen
Antonia
Mitglied
Baby Gumby
Beiträge: 3

Hey! Bin ganz neu dabei und hab mal ne Frage:

Ich hab einen Raum Zimmer mit einem Sessel drin. Es soll zwei Raumbeschreibungen geben, jenachdem ob man in dem Sessel sitzt oder nicht. Das ist ja kein Problem:


Name   'Zimmer'

Besch   Ausf

   jenach duimSessel

   (0) Stop 'Blablabla...'

   (1) Stop 'Blablabla... Du sitzt in deinem Lieblingssessel.                   Blablabla...'

         Ende

EndeAusf

(Ich hab die Flagge duimSessel eingebaut, weil ich's anders nicht hingekriegt hab. Geht wahrscheinlich viel einfacher aber das ist ja gar nicht das Problem.)

Was mich eigentlich stört, ist der Text, so wie er dann im Spiel auftaucht:


>sieh dich um

Blablabla... Du sitzt in deinem Lieblingssessel. Blablabla...

Du siehst hier dies.

Du siehst hier jenes.

Du sitzt in dem Sessel.

Den letzten Satz würde ich gern unterdrücken, weil's ja schon in der Raumbeschreibung steht, dass man im Sessel sitzt.

Hat vielleicht jemand ne Idee? Danke schonmal im Voraus.

Geschrieben um 00:01 am 28.12.2006 | Zitat | Editieren | Löschen
Maik
Mitglied
Dr Gumby
Beiträge: 199

Ich würde es so versuchen:


Name   'Zimmer'

Besch   Ausf

   jenach duimSessel

   (0) Stop 'Blablabla...'

   (1) Stop 'Blablabla... Du sitzt in deinem Lieblingssessel.                   Blablabla...'

         Ende

EndeAusf

Obj Sessel

Name 'Sessel' m

Subst 'Sessel' m 'Sofa' n

Erst ' '

Text ' '

oder


Erst '[n]'

Text '[n]'

Das Erst und das Text machen es glaube ich aus. Alternativ einfach die Objekte zu Dekos machen - also statt Obj Deko schreiben - das hätte natürlich folgen, denn dann müsste man zum beispiel das "Nehmen" der Deko umprogrammieren...

Ansonsten wird Dir Martin bestimmt weiterhelfen können, aber dies im Voraus von mir.

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

Hallo,

das Objekt, auf dem der Spieler sitzt, steht oder liegt wird in der Variablen aSitz hinterlegt. Wenn du also wissen willst, ob der Spieler im Sessel, im Bett oder im Bus sitzt, kannst du das z.B. mit

Jenach (aSitz) ... Ende

abfragen. Ob der Spieler liegt, steht oder sitzt wird durch die Variable bSitz repräsentiert -- %sitzen (1), %stellen (2), %legen (3).

Der Satz nach der Raumbeschreibung, den du ändern bzw. unterdrücken willst, ist die InBesch. Wenn du die so definierst

InBesch '' ! zwei Hochkommas

(nicht getestet), sollte keine Meldung kommen.

In Kapitel 10.3. des T.A.G.-Handbuches ist dazu alles genau beschrieben.

Grüße, CB

Geschrieben um 17:56 am 31.12.2006 | Zitat | Editieren | Löschen
Antonia
Mitglied
Baby Gumby
Beiträge: 3

Tja, danke für die Tipps, aber die funktionieren leider beide nicht :(

Erst unterdrückt zwar 'Du siehst hier einen Sessel', aber nicht 'Du sitzt in dem Sessel'. Und die inBesch-Funktionion geht bei mir gar nicht, nicht mal bei dem Beispiel im Handbuch. Trotzdem Danke. Hab das Problem jetzt jedenfalls gelöst, indem ich mich einfach damit abgefunden hab. So leicht kann's gehn XD!

Cheer

~Antonia~

Geschrieben um 20:55 am 01.01.2007 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634
<td valign="top"><div class="post"><p>Hmmm. Die <strong>InBesch</strong> für den Käfig im Handbuch wird nur ausgegeben, wenn der Käfig zu ist. Ob das so sinnvoll ist, und ob mir da kein Denkfehler bei der Implementierung unterlaufen ist, weiß ich nicht.</p> <p>Für dein Problem gibt es aber eine Lösung. Wenn der Sessel das einzige Objekt ist, auf das man sich setzen kann, genügt es den Standardtext Nummer 119 zu ändern. Dazu kopierst du <em>tag.std</em> mit einem neuen Namen, z.B. <em>mein.std</em>, und platzierst zu Beginn deines Quelltexts die Direktive:</p> <pre><code class="language-#STD"></code></pre> <p>Dann änderst du den Text in <em>mein.std</em> ab:</p> <pre><code> ... 118&amp;nbsp; &amp;nbsp; &amp;nbsp;'Außerdem siehst du hier &amp;#91;liste 1&amp;#93;.' 119&amp;nbsp; &amp;nbsp; &amp;nbsp;'' &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ! war vorher 'Du &amp;#91;sitz&amp;#93;st &amp;#91;in&amp;#93; &amp;#91;dem aSitz&amp;#93;.' ... </code></pre> <p>Der Absatz &quot;Du sitzt in dem Sessel&quot; wird dann immer unterdückt. Wenn es weitere Objekte gibt, auf die sich der Spieler setzen kann, und bei denen dieser Absatz erscheinen soll, könntest du auch eine eigene Aktion definieren:</p> <pre><code class="language-Aktion"> Ausf &amp;nbsp; &amp;nbsp; wenn /&amp;#40;aSitz = Sessel&amp;#41; dann &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Text 'Du &amp;#91;sitz&amp;#93;st &amp;#91;in&amp;#93; &amp;#91;dem aSitz&amp;#93;.' &amp;nbsp; &amp;nbsp; sonst &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Text '' &amp;nbsp; &amp;nbsp; Ende EndeAusf ```und diese aus dem Standardtext heraus aufrufen mit: </code></pre> <p>...</p> <p>118     'Außerdem siehst du hier &#91;liste 1&#93;.'</p> <p>119     '&#91;mein_InBesch&#93;'</p> <p>        ! war vorher 'Du &#91;sitz&#93;st &#91;in&#93; &#91;dem aSitz&#93;.'</p> <p>...</p> <pre><code> Auf diese Weise könntest du auch den "Du sitzt"-Text für verschiedene Sitzmöbel anpassen. Der Haken ist hier jedoch, dass bei einer leeren Ausgabe - auch wenn man '/' benutzt um angehängte Leerzeichen zu unterdrücken - ein unschöner leerer Absatz ausgegeben wird, der Text also zerrissen wird. Eine weitere Lösung ist, den "Du sitzt"-Text in *mein.std* immer zu unterdrücken, also einfach für den Text 119 zwei Hochkommas ohne Inhalt anzugeben. Dann kann man den Befehl **Lage** so erweitern, dass für alle Sitzmöbel außer dem Sessel die passende Antwort ausgegeben wird: </code></pre> <p>Bef Lage</p> <p>NachAusf</p> <p>    wenn /&#40;aSitz = 0&#41; und /&#40;aSitz = Sessel&#41; dann</p> <p>        Text 'Du &#91;sitz&#93;st &#91;in&#93; &#91;dem aSitz&#93;.'</p> <p>    Ende</p> <p>EndeAusf</p> <pre><code> (T.A.G. erlaubt das Erweitern von fest verdrahteten Befehlen mit **VorAusf** und **NachAusf**. Auch weitere **Verb**en können definiert werden.)</code></pre></div></td>
AntwortenNeues ThemaNeue Umfrage
Powered by Spam Board SVN © 2007 - 2021
Impressum / Datenschutz