IF-Forum

» IF-Forum - Autorencafé - Schreiben! - BeiMir und andere
AntwortenNeues ThemaNeue Umfrage

BeiMir und andere

Geschrieben um 18:37 am 22.08.2006 | Zitat | Editieren | Löschen
RobinOsaka
Mitglied
Student Gumby
Beiträge: 28

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?

Geschrieben um 22:50 am 23.08.2006 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

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:



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```
Geschrieben um 19:37 am 25.08.2006 | Zitat | Editieren | Löschen
RobinOsaka
Mitglied
Student Gumby
Beiträge: 28

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.

Geschrieben um 19:52 am 25.08.2006 | Zitat | Editieren | Löschen
RobinOsaka
Mitglied
Student Gumby
Beiträge: 28

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.



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 ```
Geschrieben um 22:51 am 25.08.2006 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

beiMir und angezogen kannst du in einer Bedingung benutzen (entspricht "oder"):



     Text '[itestobj] ist bei dir.'```

So lästig ist's doch nicht.
Geschrieben um 06:45 am 26.08.2006 | Zitat | Editieren | Löschen
RobinOsaka
Mitglied
Student Gumby
Beiträge: 28

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.

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

und

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.

AntwortenNeues ThemaNeue Umfrage
Powered by Spam Board SVN © 2007 - 2021
Impressum / Datenschutz