Forum moved to if-forum.org
Autor Nachricht
<  I6/Deform: "runter" von einem Supporter
Agrajag
BeitragVerfasst am: Sa, 20 März 2010 - 18:12  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 05.10.2004
Beiträge: 75
Wohnort: Chiemgau

Hallo zusammen,

ich versuche es meinem Spieler zu ermöglichen, durch einfache Eingabe von "runter" von einem Supporter herabzusteigen. Leider flutscht das nicht so richtig:

Frotz hat folgendes geschrieben:

> steig auf altar
Du steigst auf den Altar.

> runter
Das geht nicht, solange du noch auf dem Altar bist.

Das ganze wird auch nicht besser, wenn ich dem Objekt eine d_to Property gebe, die den gewünschten Ort angibt.

Ich habe derzeit folgende frickelige Lösung:
Code:

Object altar
 with   short_name "Altar",
 name 'altar',
 dekl 2,
 description "Es ist ein massiver Altar.",
 before [;
     exit,getoff:   
        print "Du steigst vom Altar herunter.^";
        playerto (parent(altar));
        return true;
     go:   
       if ( parent(player) == altar )
        {
        if ( (noun == d_obj) || (noun == out_obj) )
           {
           print "Du steigst vom Altar herunter.^";
           playerto(parent(altar));
           return true;
           }
        else "Das geht nicht, solange du dich auf dem Altar befindest.";
        }
     else return false;
     ],
has female static enterable supporter;


Dann passiert aber folgendes:
Frotz hat folgendes geschrieben:

> steig auf altar
Du steigst auf den Altar.

> runter
(Raumbeschreibung)
Du kannst nicht in diese Richtung gehen.

Also wird versucht, zweimal runter zu gehen, einmal erfolgreich vom Altar, einmal im Altarraum, von wo kein Weg nach unten vorgesehen ist.

Was mache ich falsch? Oder: Was wäre die korrekte Lösung?
Vielen Dank schonmal!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ChristianB
BeitragVerfasst am: Sa, 20 März 2010 - 20:04  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

Ich glaube, Du kannst es einfacher haben und beim Altar statt einer before-Property eine react_before benutzen (das habe ich in einem Spiel so gemacht, und da hat es auch für Exit und GetOff usw. funktioniert).

Code:
Object altar
 with   short_name "Altar",
 name 'altar',
 dekl 2,
 description "Es ist ein massiver Altar.",
 react_before [;
      Go:
         if ((noun == d_obj || (noun == out_obj)
              && player in self) <<Exit self>>;
  ],
has male static enterable supporter;


Vielleicht reicht das ja schon für Deine Zwecke (ich hab's jetzt auf die Schnelle nicht neu getestet).

Grüße,
Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Agrajag
BeitragVerfasst am: Sa, 20 März 2010 - 21:06  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 05.10.2004
Beiträge: 75
Wohnort: Chiemgau

Hallo Christian, danke für die rasche Antwort!

Ich hätte ebenfalls vermutet, daß es so gehen müßte, aber leider ist dem nicht so. Es funktioniert nur dann, wenn ich <<exit self>> in ein playerto(parent(self)) umwandle.

Ebenso ist die Umleitung von getoff auf playerto(parent(self)) notwendig, da ohne dasselbe passiert, wie oben beschrieben:
Frotz hat folgendes geschrieben:

>steig vom altar
Das geht nicht, solange du noch auf dem Altar bist.

Merkwürdig.

Aber wie dem auch sei: Das "Du kannst nicht in diese Richtung gehen" habe ich mit deiner Lösung erstmal überwunden. Danke dafür! :-)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ChristianB
BeitragVerfasst am: Sa, 20 März 2010 - 21:51  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

Agrajag hat folgendes geschrieben:
Merkwürdig.

In der Tat! Bei mir funktionierts:

Code:
Object altar Testraum
 with   short_name "Altar",
 name 'altar',
 dekl 2,
 description "Es ist ein massiver Altar.",
 react_before [;
      Go:
         if ( (noun == d_obj || noun == out_obj)
              && player in self) <<Exit self>>;
  ],
has male static enterable supporter;


ergibt:

Mein Testspiel hat folgendes geschrieben:
Testraum
Hier wird getestet.

Du siehst hier einen Altar.

>steig auf altar
Du steigst auf den Altar.

>steige vom altar
Du steigst von dem Altar.

Testraum

Du siehst hier einen Altar.

>steige auf altar
Du steigst auf den Altar.

>runter
Du steigst von dem Altar.

Testraum

Du siehst hier einen Altar.


Hast Du noch irgendwo ein before-Exit drin, das das Verhalten der Aktion verändert oder auf eine andere Aktion umleitet? Exit sollte immer funktionieren, wenn man in oder auf etwas ist, denn für genau den Fall ist es ja gedacht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Agrajag
BeitragVerfasst am: So, 28 März 2010 - 11:39  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 05.10.2004
Beiträge: 75
Wohnort: Chiemgau

Ich hatte in der Tat ein before-Exit in der Raumklasse. Allerdings hat auch dessen Entfall das Problem nicht gelöst. Ich werde das bei Gelegenheit mal gründlicher anschauen und korrigieren müssen, wenn mal mehr Zeit vorhanden ist.

Ich danke dir erstmal für die Hilfe!
Nach oben
Benutzer-Profile anzeigen Private Nachricht 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  >  Inform & Glulx

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