Autor |
Nachricht |
< Raumbeschreibung unterdrücken |
|
Verfasst am:
Mi, 27 Dez 2006 - 18:13
|
|
|
Neuling
Anmeldungsdatum: 27.12.2006
Beiträge: 4
|
|
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:
Code: | Raum Zimmer
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:
Code: |
>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. |
|
|
|
|
|
Verfasst am:
Mi, 27 Dez 2006 - 23:01
|
|
|
Kompassleser
Anmeldungsdatum: 19.09.2002
Beiträge: 217
|
|
Ich würde es so versuchen:
Code: | Raum Zimmer
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
Code: |
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. |
|
|
|
|
|
Verfasst am:
Do, 28 Dez 2006 - 1:07
|
|
|
Experte
Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
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
Code: | 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
Code: | 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 |
|
|
|
|
|
Verfasst am:
So, 31 Dez 2006 - 16:56
|
|
|
Neuling
Anmeldungsdatum: 27.12.2006
Beiträge: 4
|
|
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~ |
|
|
|
|
|
Verfasst am:
Mo, 1 Jan 2007 - 19:55
|
|
|
Experte
Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München
|
|
Hmmm. Die InBesch 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.
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 tag.std mit einem neuen Namen, z.B. mein.std, und platzierst zu Beginn deines Quelltexts die Direktive:
Dann änderst du den Text in mein.std ab:
Code: |
...
118 'Außerdem siehst du hier [liste 1].'
119 ''
! war vorher 'Du [sitz]st [in] [dem aSitz].'
...
|
Der Absatz "Du sitzt in dem Sessel" 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:
Code: | Aktion meine_InBesch
Ausf
wenn /(aSitz = Sessel) dann
Text 'Du [sitz]st [in] [dem aSitz].'
sonst
Text ''
Ende
EndeAusf
| und diese aus dem Standardtext heraus aufrufen mit:
Code: |
...
118 'Außerdem siehst du hier [liste 1].'
119 '[mein_InBesch]'
! war vorher 'Du [sitz]st [in] [dem aSitz].'
...
|
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: |
Bef Lage
NachAusf
wenn /(aSitz = 0) und /(aSitz = Sessel) dann
Text 'Du [sitz]st [in] [dem aSitz].'
Ende
EndeAusf
|
(T.A.G. erlaubt das Erweitern von fest verdrahteten Befehlen mit VorAusf und NachAusf. Auch weitere Verben können definiert werden.) _________________ Every silver lining has a cloud. |
|
|
|
|
|
|
Alle Zeiten sind GMT + 1 Stunde (MEZ) |
|
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.
|
|