| Geschrieben um 02:06 am 19.10.2010 | Zitat | Editieren | Löschen | |
Mitglied Pupil Gumby Beiträge: 11 | <td valign="top"><div class="post"><p>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.</p> <p>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?</p> <p>“`</p> <p>Deko Erde</p> <p>Name ‘Waldboden’ m</p> <p>Vor ‘Wald’</p> <p>Adj ‘nasse’ ‘feuchte’ ‘weiche’</p> <p>Subst ‘Erde’ f ‘Boden’ m</p> <p>Ort Wald</p> <p>Besch ‘Der Waldboden …..’ </p> <p>VorAusf</p> <p> (nehmen)</p> <p> Text ‘Du kannst das nicht nehmen. ‘</p> <p> Stop</p> <p> (hier_graben)</p> <p> Text ‘…’</p> <p> Stop</p> <p>EndeAusf</p> <p>Aktion *</p> <p>Ausf </p> <p> Wenn /(aObj = Truhe) dann</p> <p> Wenn (aRaum = Wald) dann</p> <p> Wenn (aBef = hier_graben) dann</p> <p> Text ‘Du gräbst eine Truhe frei.’ </p> <p> ObjNach Truhe Wald </p> <p> Sonst</p> <p> Wenn (aBef = hier_graben) dann</p> <p> Wenn (aObj = Truhe) dann</p> <p> Text ‘Hier hast du schon gegraben.’</p> <p> Ende</p> <p> Ende</p> <p> Ende</p> <p> Ende</p> <p> Ende </p> <p> Stop</p> <p>EndeAusf</p> <p>“`</p> <p>Ich bedanke mich schon mal für evtl. Hilfe :0)</p> </div></td> |
| Geschrieben um 07:57 am 19.10.2010 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 707 | <td valign="top"><div class="post"><p>Hmmm. Eine Aktion * ist eigentlich dazu da, in jedem Zug Dinge auszuführen, die <em>unabhängig</em> 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.</p> <p>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.)</p> <p>Außer-außerdem kann die zweite Bedingung (aBef = hier<em>graben), die im sonst-Ast, nie wahr sein, weil die Bedingung im anderen Ast, die auch (aBef = hier</em>graben) heißt, schon wahr ist. Wenn man den Code richtig einrückt, wird das klar:</p> <p>“`</p> <p>Aktion *</p> <p>Ausf </p> <p> Wenn /(aObj = Truhe) dann</p> <p> Wenn (aRaum = Wald) dann</p> <p> Wenn (aBef = hier_graben) dann</p> <p> Text ‘Du gräbst eine Truhe frei.’ </p> <p> ObjNach Truhe Wald</p> <p> Sonst</p> <p> Wenn (aBef = hier_graben) dann</p> <p> Wenn (aObj = Truhe) dann</p> <p> Text ‘Hier hast du schon gegraben.’</p> <p> Ende</p> <p> Ende</p> <p> Ende</p> <p> Ende</p> <p> Ende </p> <p> Stop</p> <p>EndeAusf</p> <p>“`</p> <p>Ich würde das Finden der Truhe direkt beim Raum abfangen:</p> <p>“`</p> <p>Raum Wald</p> <p>Name ‘Im Wald’</p> <p>Besch ‘Riesige Bäume …’ </p> <p>VorAusf</p> <p> (hier_graben)</p> <p> Bed (Truhe in Nirgendwo)</p> <p> ‘Nach deinem Glückstreffer mit der Truhe</p> <p> findest du hier nichts Weiteres mehr.’</p> <p> ObjNach Truhe Wald</p> <p> Stop ‘Du gräbst eine Truhe frei.’</p> <p> Stop</p> <p>EndeAusf</p> <p>“`</p> <p>Easy-peasy! :-)</p> <p>(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.)</p> </div></td> |
| Geschrieben um 11:47 am 19.10.2010 | Zitat | Editieren | Löschen | |
Mitglied Pupil Gumby Beiträge: 11 | Juhuuu, es funktioniert! :0) Oh Mann, so einfach kanns sein. Habt Dank für die Erleuchtung! |