Autor |
Nachricht |
< I6/Deform 20100131: nimm etwas ab => programming error |
|
Verfasst am:
Di, 16 März 2010 - 17:05
|
|
|
Wasserträger

Anmeldungsdatum: 05.10.2004
Beiträge: 75
Wohnort: Chiemgau
|
|
Hallo zusammen,
mir ist während des Spielbauens aufgefallen, daß ich einen Fehler erzeugen kann, der scheinbar auch andere Projekte betrifft.
Frotz hat folgendes geschrieben: |
> nimm dingsbums ab
Aber das Dingsbums ist gar nicht
[** Programming error: tried to test “has” or “hasnt” of nichts **]
in nichts.
|
So oder ähnlich kommt die Meldung bei (zumindest Nichtkleidungs-) Objekten, auf die ich "nimm ab" anwende.
Spaßhalber habe ich dies auch mal mit dem Deformuseum geprüft. Ergebnis: Die dem ZIP-File beiliegende, damals kompilierte z5-Datei weist den Fehler nicht auf. Baue ich mit Deform vom 31.01.2010, tritt auch dort das o. g. Verhalten auf.
Kann das jemand nachstellen? Ich hab kurz auf die RemoveSub und die Remove-Anweisungen in Parser.h geschaut, aber eher wie ein Schwein in die Steckdose, und mir ist nichts ins Auge gesprungen. Vielleicht mache ich ja auch nur was falsch.
Danke schonmal! |
|
|
|
 |
|
Verfasst am:
Di, 16 März 2010 - 19:17
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Das müsste schon seit einer ganzen Weile so sein. NIMM <OBJEKT> AB triggert ##Remove, und das möchte gerne noun und second haben. Second ist in deinem Beispiel deshalb nothing.
NIMM <OBJEKT> AB sollte vielleicht besser ##Take auslösen. Damit gibt's jedenfalls keine Probleme mit nur einem Objekt. Wenn Du nach dem Einbinden von "GermanG.h" die Definitionen für 'nimm' (und damit für all dessen Synonyme) ersetzt, sollte alles funktionieren.
Code: | Extend 'nimm' replace
* dir multi -> Take
* multi 'auf'/'mit' -> Take
* worn 'ab' -> Disrobe
!!! gestrichen !!! * noun 'ab' -> Remove
* noun 'ab' -> Take
* multiinside 'aus' dative noun prep_heraus -> Remove
* multiinside 'in' dative noun prep_heraus -> Remove
* multiinside 'von' dative noun prep_herunter -> Remove
* multiinside noun_heraus -> Remove
* multiinside noun_darunter -> Remove
* 'platz' 'auf' dative noun -> Enter
* 'platz' 'in' dative noun -> Enter
* 'auf' dative noun 'platz' -> Enter
* 'in' dative noun 'platz' -> Enter
; |
>nimm ab
Du findest dich nicht zu dick.
Das funktioniert dann aber noch nicht ;-)
Grüße,
Christian |
|
|
|
 |
|
Verfasst am:
Di, 16 März 2010 - 20:23
|
|
|
Experte

Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München
|
|
Christian hat folgendes geschrieben: | NIMM <OBJEKT> AB sollte vielleicht besser ##Take auslösen. |
Ja, das muss Take heißen. Der Fehler ist schon seit Ende 2005 drin. Vorher stand nur die worn-Zeile für "nimm ab" dort. Und [noun=Routine]- und [attr]-Tokens können nur sinnvoll verwendet werden, wenn man ein [noun] oder [held] für dasselbe Satzmuster hinterherschickt. In diesem Fall habe ich es aber verschlimmbessert.
(Ich komme öfters mit den Inform-Actions durcheinander: Was bedeutet PutOn? Was Remove? Außerdem, was ist mit dem Fall "Nimm Barbara die Wasserpistole ab"?)
Eine neue Version mit just diesem Fix ist hochgeladen. Vielen Dank! _________________ Every silver lining has a cloud. |
|
|
|
 |
|
Verfasst am:
Mi, 17 März 2010 - 3:27
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Martin hat folgendes geschrieben: | Außerdem, was ist mit dem Fall "Nimm Barbara die Wasserpistole ab"? |
Das riecht nach Remove andersrum, oder?
Code: | * creature noun 'ab' -> Remove reverse
* noun noun 'ab' -> Remove reverse |
Danke fürs Update! |
|
|
|
 |
|
Verfasst am:
Do, 18 März 2010 - 17:40
|
|
|
Wasserträger

Anmeldungsdatum: 05.10.2004
Beiträge: 75
Wohnort: Chiemgau
|
|
Gerade ausprobiert, funktioniert nun einwandfrei. Danke für die Anpassung! |
|
|
|
 |
|