Autor |
Nachricht |
< Aktion * - Problem |
|
Verfasst am:
Di, 19 Okt 2010 - 1:06
|
|
|
Neuling
Anmeldungsdatum: 03.10.2010
Beiträge: 12
Wohnort: Burg Runenstein
|
|
Hallo, ich möchte eine unsichtbare Truhe aus dem Boden ausgraben. Die liegt im Moment im Nirwana und wird dann nach dem graben Befehl in den Raum Wald gesetzt. Soweit klappt das schon ganz gut. Die Truhe erscheint Im Wald und ich kann sie, untersuchen und öffnen, aber wenn ich jetzt nochmal den Befehl graben eingebe, dann wird die ganze Aktion * wiederholt.
Die Zeile "Wenn /(aObj = Truhe3) dann" müsste doch dafür sorgen, dass bis zum "Sonst" von dieser Aktion * nichts mehr beachtet wird. Es wird aber immer wieder der Text "'Du gräbst eine Truhe frei.'" herausgegeben. Wie kann ich das verhindern, sodas beim 2. graben der Text "'Hier hast du schon gegraben.'" erscheint?
Code: |
Deko Erde
Name 'Waldboden' m
Vor 'Wald'
Adj 'nasse' 'feuchte' 'weiche'
Subst 'Erde' f 'Boden' m
Ort Wald
Besch 'Der Waldboden .....'
VorAusf
(nehmen)
Text 'Du kannst das nicht nehmen. '
Stop
(hier_graben)
Text '...'
Stop
EndeAusf
Aktion *
Ausf
Wenn /(aObj = Truhe) dann
Wenn (aRaum = Wald) dann
Wenn (aBef = hier_graben) dann
Text 'Du gräbst eine Truhe frei.'
ObjNach Truhe Wald
Sonst
Wenn (aBef = hier_graben) dann
Wenn (aObj = Truhe) dann
Text 'Hier hast du schon gegraben.'
Ende
Ende
Ende
Ende
Ende
Stop
EndeAusf
|
Ich bedanke mich schon mal für evtl. Hilfe :0) _________________ "Kal Vas Xen Flam" |
|
|
|
|
|
Verfasst am:
Di, 19 Okt 2010 - 6:57
|
|
|
Experte
Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München
|
|
Hmmm. Eine Aktion * ist eigentlich dazu da, in jedem Zug Dinge auszuführen, die unabhängig vom Spielzug des Spielers passieren: Ein Windhauch streicht durch den Wald, NPCs bewegen sich durch die Räume, eine Straßenbahn fährt ihre Linie ab, so etwas. In einer Aktion * sollten also aObj und aBef, die den Spielzug des Spielers beschreiben, nicht vorkommen.
Außerdem ist aObj ja gar nicht die Truhe. Der Befehl heiß ja vermutlich nur "grabe", und dann ist nur aBef belegt. (Oder der Befehl lautet "grabe in der erde", dann ist aBef ja die Erde.)
Außer-außerdem kann die zweite Bedingung (aBef = hier_graben), die im sonst-Ast, nie wahr sein, weil die Bedingung im anderen Ast, die auch (aBef = hier_graben) heißt, schon wahr ist. Wenn man den Code richtig einrückt, wird das klar:
Code: |
Aktion *
Ausf
Wenn /(aObj = Truhe) dann
Wenn (aRaum = Wald) dann
Wenn (aBef = hier_graben) dann
Text 'Du gräbst eine Truhe frei.'
ObjNach Truhe Wald
Sonst
Wenn (aBef = hier_graben) dann
Wenn (aObj = Truhe) dann
Text 'Hier hast du schon gegraben.'
Ende
Ende
Ende
Ende
Ende
Stop
EndeAusf
|
Ich würde das Finden der Truhe direkt beim Raum abfangen:
Code: |
Raum Wald
Name 'Im Wald'
Besch 'Riesige Bäume ...'
VorAusf
(hier_graben)
Bed (Truhe in Nirgendwo)
'Nach deinem Glückstreffer mit der Truhe
findest du hier nichts Weiteres mehr.'
ObjNach Truhe Wald
Stop 'Du gräbst eine Truhe frei.'
Stop
EndeAusf
|
Easy-peasy! :-)
(Es ist leichter, wenn man 'nirgendwo' und 'Nirwana' unterscheidet: Im Nirgendwo sind Objekte, die noch nicht im Spiel sind, im Nirwana sind Objekte, die aus dem Spiel herausgenommen wurden. So kann die Truhe später im Nirwana landen, weil sie etwa in eine Schlucht gefallen oder verbrannt ist, und trotzdem nicht wieder ausgegraben werden.) _________________ Every silver lining has a cloud. |
|
|
|
|
|
Verfasst am:
Di, 19 Okt 2010 - 10:47
|
|
|
Neuling
Anmeldungsdatum: 03.10.2010
Beiträge: 12
Wohnort: Burg Runenstein
|
|
Juhuuu, es funktioniert! :0)
Oh Mann, so einfach kanns sein.
Habt Dank für die Erleuchtung! _________________ "Kal Vas Xen Flam" |
|
|
|
|
|
|
Alle Zeiten sind GMT + 1 Stunde (MEZ) |
|
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.
|
|