Forum moved to if-forum.org
Autor Nachricht
<  Raumbeschreibung unterdrücken
Antonia
BeitragVerfasst am: Mi, 27 Dez 2006 - 18:13  Antworten mit Zitat
Neuling
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.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Maik
BeitragVerfasst am: Mi, 27 Dez 2006 - 23:01  Antworten mit Zitat
Kompassleser
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.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ChristianB
BeitragVerfasst am: Do, 28 Dez 2006 - 1:07  Antworten mit Zitat
Experte
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
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Antonia
BeitragVerfasst am: So, 31 Dez 2006 - 16:56  Antworten mit Zitat
Neuling
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~
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Martin
BeitragVerfasst am: Mo, 1 Jan 2007 - 19:55  Antworten mit Zitat
Experte
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:
Code:
#STD 'mein.std'

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.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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  >  T.A.G.

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