Forum moved to if-forum.org
Autor Nachricht
<  BeiMir und andere
RobinOsaka
BeitragVerfasst am: Di, 22 Aug 2006 - 17:37  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 16.07.2006
Beiträge: 28
Wohnort: Japan

Als Ortsbedingungen fuer Objekte gibt es zB 'beimir', 'hier' und 'angezogen'.

'beimir' scheint aber Objekte in einem Behaelter, den ich bei mir trage, nicht zu erfassen.

Muss ich alle Behaelter per Schleife auslesen oder gibt es eine weitere Bedingung, die ich nicht kenne?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ChristianB
BeitragVerfasst am: Mi, 23 Aug 2006 - 21:50  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

Mit der Anweisung StammObj (T.A.G.-Handbuch Kapitel 5.2.4.) kannst du leicht feststellen, ob sich ein Objekt indirekt beim Spieler befindet. Wenn das Stammobjekt eines Objekts beiMir ist, dann muss das Objekt auch irgendwo in den Tiefen des Inventars zu finden sein. Ähh... ein kleines Beispiel:

Code:
Obj     Vase
Name    'Blumenvase' f
Vor     'blumen'
Subst   'vase' f
Attr    Behälter transparent
Vol     10
Ort     beiMir

Obj     Bernstein
Name    'Bernstein' m
Vor     'bern'
Subst   'stein' m
Attr    Behälter transparent
Vol     2
Ort     in Vase

ObjVar  xObj ! in der normal.adv schon vordefiniert

Obj     Fliege
Name    'Fliege im Bernstein' f
Adj     'tot'
Subst   'fliege' f  'insekt' n
Ort     in Bernstein
VorAusf
    (untersuchen)
        StammObj xObj selbst
        ! Der Objekt-Variablen xObj wird das
        ! Stammobjekt der Fliege (selbst) zugewiesen.
        ! (Hier: die Vase)
       
        Wenn (xObj beiMir) dann
            Stop 'Die Fliege ist indirekt bei dir.'
        Ende
    (nehmen herausnehmen)
        Stop 'Die Fliege ist schon vor Jahrmillionen im
              Harz gefangen worden.'
EndeAusf
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
RobinOsaka
BeitragVerfasst am: Fr, 25 Aug 2006 - 18:37  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 16.07.2006
Beiträge: 28
Wohnort: Japan

Mir scheint der Befehl InhListe geeignet, das Spiel auf Gegenstaende in einem Behaelter reagieren zu lassen. ZB eine Waffe in einem Koffer.

InhListe OVar Flg
Schreibt den Inhalt des Objekts OVar heraus. Je nach Flg wird eine Meldung herausgegeben, wenn OVar leer ist, und es werden darunterliegende mitbetrachtet (Rekursion). Um Sachen darin zu zeigen, muß das Objekt ein Behälter sein, um Sachen darauf zu zeigen, eine Ablage.

Dieser Befehl schreibt aber nur den Inhalt eines Behaelters, wenn der Behaelter geoeffnet oder transparent ist. Solange der Behaelter geschlossen ist, gibt das Spiel als Inhalt 'nichts' aus. Das Spiel soll in meinem Fall aber auch Gegenstaende in geschlossenen Behaeltern als sich beim Spieler befindlich erkennen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
RobinOsaka
BeitragVerfasst am: Fr, 25 Aug 2006 - 18:52  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 16.07.2006
Beiträge: 28
Wohnort: Japan

Ich hab's! Der Code unten macht was ich brauche. Danke fuer den Tipp, ChristianB!

N bisschen laestig ist nur, dass ich BeiMir und Angezogen (fuer Rucksaecke etc) abpruefen muss.

Code:
ObjVar   iteststamm
ObjVar   itestobj

Bef     Itest
Name   'Itest'
Verb   'itest'
Ausf   
     Schleife itestobj
     StammObj iteststamm itestobj
         Wenn (iteststamm beimir)
             Text '[itestobj] ist bei dir.'
         Wenn (iteststamm angezogen)
             Text '[itestobj] ist bei dir.'
      Ende
EndeAusf
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ChristianB
BeitragVerfasst am: Fr, 25 Aug 2006 - 21:51  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

beiMir und angezogen kannst du in einer Bedingung benutzen (entspricht "oder"):
Code:
Wenn (iteststamm beimir angezogen) ! beimir ODER angezogen
     Text '[itestobj] ist bei dir.'

So lästig ist's doch nicht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
RobinOsaka
BeitragVerfasst am: Sa, 26 Aug 2006 - 5:45  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 16.07.2006
Beiträge: 28
Wohnort: Japan

Ach, das heisst ODER? Ich dachte, die Aufzaehlung bedeutet UND. Danke.

Ich habe noch eine Bedingung, die ich mit UND verbinde. Ergebnis soll sein, dass die Pistole bei mir entdeckt wird, egal, ob ich sie in einem Rucksack, einer Jackentasche oder einem Koffer verstecke.

Code:
Wenn (itestobj = Pistole) und (istammobjekt beiMir) oder (istammobjekt angezogen) dann

und
Code:
Wenn (itestobj = Pistole) und (istammobjekt beiMir angezogen) dann

haben beide nicht so funktioniert wie erwartet. Mit dem eingangs gezeigten Code geht's aber. Egal, hauptsache es laeuft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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