Autor |
Nachricht |
< I6/Deform: "runter" von einem Supporter |
|
Verfasst am:
Sa, 20 März 2010 - 18:12
|
|
|
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! |
|
|
|
|
|
Verfasst am:
Sa, 20 März 2010 - 20:04
|
|
|
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 |
|
|
|
|
|
Verfasst am:
Sa, 20 März 2010 - 21:06
|
|
|
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! :-) |
|
|
|
|
|
Verfasst am:
Sa, 20 März 2010 - 21:51
|
|
|
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. |
|
|
|
|
|
Verfasst am:
So, 28 März 2010 - 11:39
|
|
|
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! |
|
|
|
|
|