Dokumentation zu: ET_WIELD(WL)

HR Image


-------- PROVISORIUM -------

EVENT-TYPEN
        ET_WIELD    - der 'Zueck'-Event fuer Waffen.
        ET_UNWIELD  - der 'Wegsteck'-Event fuer Waffen.

BEDEUTUNG
        Wenn ein Lebewesen eine Waffe zueckt oder wegsteckt, werden
        diese Events ausgeloest. Auf diese Ereignisse kann dann
        reagiert werden.
        ET_WIELD wird auch gesendet, wenn ein Schild gezueckt wird;
        es zaehlt diesbezueglich als Waffe.
        Aufgrund der Aehnlichkeit von ET_WIELD und ET_UNWIELD steht
        diese Manpage fuer beide Events.

DEFAULT HANDLER
        /global/handler/weapon.c

EVENT DEFINES
        /sys/events.h
        /sys/combat.h

EVENT DATEN
        Das Event-Mapping enthaelt folgende Daten:

        Key             | Inhalt
        --------------- +----------------------------------------------------
        Eintraege, die automatisch gesetzt werden (NICHT VERAENDERN!)
        E_SENDER        | (object) Event-Erzeuger. (Meist das Lebewesen)
        E_DESTINATIONS  | (array) Objekte, an die der Event gesandt wird. (Im
                        | Normalfall der Start- und Zielraum)
        E_COMMAND       | (string) Das eingegebene Kommando. (Der Ausgang)
                        | Kann auch 0 sein! (siehe Manpage zu query_command()
        E_USE_NFAIL     | (int) 0 oder 1. Ist es 1 soll zum Setzen der
                        | Cancel-Message notify_fail() benutzt werden, an-
                        | sonsten tell_object()

        Daten, die veraendert werden duerfen:
        E_WIELD_WEAPON  | (object) Die Waffe (oder Schild), die gezueckt
                        | werden soll. (nur ET_WIELD!)
        E_UNWIELD_WEAPON| (object) Die Waffe (oder Schild), die weggesteckt
                        | werden soll. (nur ET_UNWIELD!)
        E_ACTOR         | Das agierende Lebewesen.
        E_WIELD_FLAGS   | Flags ueber die Handhabung des Ereignisses
                        | (sowohl fuer ET_WIELD als auch ET_UNIELD) s. u.


        Nach oder waehrend der Abarbeitung EVENTUELL enthalten:
        E_HANDLED       | (int) Wenn gesetzt, wurde der Event ausgefuehrt.
        E_HANDLER       | (object) Der ausfuehrende Handler.
        E_CANCELLED     | (mixed) Wenn gesetzt, wurde der Event abgebrochen.
                        | Der Inhalt sollte immer 1 sein.
        E_CANCELLER     | (object) Das abbrechende Object.

EVENT-LAUSCHER
        Siehe allgemeine Syntaxen in event_listeners(WL).

EVENT-SENDER
        Siehe allgemeine Syntaxen in event_senders(WL). Gesendet werden
        muessen mindestens:
        E_WIELD_WEAPON bzw. E_UNWIELD_WEAPON, E_ACTOR

        Automatisch werden immer gesetzt:
        E_SENDER, E_DESTINATION und E_COMMAND.

        Ziel des Events sollte immer die Umgebung des Agierenden sein,
        bzw. dessen aeusserstes Environment, falls sich ein Raum in einem
        anderen Raum befindet. (all_environment(raum)[<1])

BESCHREIBUNG
        Der ET_WEAR oder ET_UNWEAR Event wird erzeugt, wenn die Waffe
        NICHT mit E_SILENT gezueckt oder weggesteckt wurde

        Der Event geht mit Prioritaet EPRIO_DEF_HANDLE (0) an den Default-
        Handler (siehe oben).

        ACHTUNG! Abbruchmeldungen MUESSEN als Argument (string oder closure)
        im cancel_event() angegeben werden!

        Der Event kann mit 2 Moeglichen Flags gesendet werden, die im
        Datenfeld E_WIELD_FLAGS uebergeben werden:

            WIELD_SILENT   |  Es soll keine Meldung an Spieler/Umstehende
                           |  erfolgen.
            WIELD_NOFORCE  |  Es sollen keine Waffen/Schilde zurueckgesteckt
                           |  werden (nur bei ET_WIELD) - z.B. bei
                           |  "zuecke alles"

BEISPIELE:

        1) Ein Raum, in dem Waffen weder gezueckt noch weggesteckt werden
           koennen. (z.B. weil man an einem Seil haengt und sich festhalten
           muss/soll)

        #include <combat.h>
        #include <events.h>

        // Deklarartion
        void keine_waffen(mapping data, string type);

        void create()
        {
          ...
          // Anmelden zum Lauschen
          listen_event(ET_UNWIELD, EPRIO_CANCEL, #'keine_waffen);
          listen_event(ET_WIELD,   EPRIO_CANCEL, #'keine_waffen);
        }

        void keine_waffen(mapping data, string type)
        {
          if (environment(data[E_ACTOR]) != ME) return;
          cancel_event(break_string(
            "Du haeltst Dich gerade am Seil fest, dazu brauchst Du "
            "all Deine Haende."));
          // Der String wird nicht automatisch umgebrochen!
        }

        2) /doc/beispiele/events/schild.c

SIEHE AUCH
        events(WL), event_types(WL), event_prioritaeten(WL),
        listen_event(S)


Start » Magierhandbuch » Docu » Konzepte » ET_WIELD Letzte Generierung: 16.04.2009, 21:44
Email an: mud@wl.mud.de
Valid HTML 4.01!