efun: notify_fail


FUNKTION:

notify_fail

DEKLARATION:

varargs int notify_fail(mixed fail, int priority, int dont_overwrite)

BESCHREIBUNG:

Mit notify_fail() wird eine Fehlermeldung gesetzt, die der Spieler
anstelle der Standardmeldung "Wie bitte?" bekommt, wenn die Ausfuehrung
eines seiner Kommandos fehlschlaegt.

Anstatt eines Strings kann auch eine Closure benutzt werden. Diese wird 
ausgewertet, unmittelbar bevor der Spieler die Meldung erhaelt.
Sie erhaelt den Befehlsgeber als Argument.

In priority gibt man die Prioritaet der Meldung an. Dafuer gibt es folgende
Konstanten in notify_fail.h:

  FAIL_NOT_CMD:   Dieses Objekt definiert dieses Kommando eigentlich gar nicht,
                  hat aus technischen Gruenden dies Aktion aber trotzdem oder
                  will einfach nur dafuer sorgen, dass kein "Wie bitte?" kommt:
                  Beispiel: "oeffne brot"

  FAIL_NOT_OBJ:   Das Objekt definiert zwar dieses Kommando ist aber
                  offensichtlich nicht gemeint. (Dies ist die Voreinstellung)
                  Beispiel: "trink tee", wenn das Objekt aber Wein ist.

  FAIL_WRONG_ARG: Das Objekt definiert dieses Kommando, koennte auch gemeint
                  sein, die Argumente stimmen aber nicht.
                  Beispiel: "schliesse tuer mit brot auf"

  FAIL_INTERNAL:  Die Argumente stimmen, aber aus internen Gruenden
                  funktioniert es nicht.
                  Beispiel: "schliesse tuer mit schluessel auf", die Tuer
                            ist aber schon offen.

Es wird die zuletzt gesetzte Meldung mit der hoechsten Prioritaet ausgegeben.

Nach Moeglichkeit sollte ein Kommando
        notify_fail(meldung); return 0;
    anstatt von
        write(meldung); return 1;
    benutzen, da dann andere Objekte das Kommando auch noch auswerten koennen.

notify_fail() liefert immer 0 als Returnwert. Man kann also auch schreiben:
    return notify_fail(meldung);

Hinweis: Obwohl notify_fail mit notify_ anfaengt, ist es kein controller.

VERWEISE:

add_action, query_verb, query_notify_fail

GRUPPEN:

simul_efun, grundlegendes, player

SOURCE:

/secure/simul_efun/notify_fail.i

UNItopia (mudadm@UNItopia.de)