TriggerEvent()
**************


FUNKTION
========

   varargs int TriggerEvent(string eid, mixed data);


DEFINIERT IN
============

   /p/daemon/eventd.c


DEKLARIERT IN
=============

   /sys/events.h


ARGUMENTE
=========

   string eid,
     Die ID des Events, der ausgeloest werden soll.
     Da dieser String fuer alle Events jeweils eindeutig sein muss,
     empfiehlt es sich, fuer eigene Events z.B. als Praefix den eigenen
     Magiernamen zu nehmen, z.B. "zesstra_vulkanausbruch".
     ACHTUNG: IDs, die mit 'evt_lib_' beginnen, sind AUSSCHLIESSLICH der
     Mudlib vorbehalten!

   mixed data,
     Daten, die jeder Lauscher uebergeben bekommt. Kann ein beliebiger
     Datentyp sein. Ggf. ein Mapping oder Array benutzen.


BESCHREIBUNG
============

   Der Event mit der ID 'eid' wird ausgeloest. Mit kurzer Verzoegerung
   (meist 0-2s) werden alle fuer 'eid' registrierten Lauscher durch Aufruf
   einer Funktion in ihnen informiert:
   listener->fun(eid, triggerob, data);
   'triggerob' ist hierbei das Objekt, welche TriggerEvent() gerufen hat,
   'data' das, was das triggernde Objekte als Daten weiterverteilen moechte.
   Die einzelnen fun() in den lauschenden Objekten muessen wissen, was sie
   mit 'data' anfangen sollen. ;-)


RUeCKGABEWERT
=============

   1 fuer Erfolg, <=0 fuer Misserfolg.
   1   - Erfolg, Event 'eid' wurde ausgeloest.
   -1  - falsche Argumente wurden uebergeben
   -2  - nicht-oeffentlicher Event und das triggernde Objekt wurde nicht
         fuer diesen Event freigegeben (momentan gibt es noch keine
         nicht-oeffentlichen Events)
   -3  - Event 'eid' existiert nicht, d.h. es gibt keine Lauscher.
   -4  - Es gibt zuviele nicht verarbeitete Events.


BEMERKUNGEN
===========


BEISPIELE
=========

   1. Ein Waechter wird angegriffen:
      EVENTD->TriggerEvent("xand_holzfaellerlager_angriff",
                           (["angreifer": enemy,
                             "ort": environment(this_object()) ]) );
      Alle anderen angemeldeten Waechter der Lagers werden nun informiert
      und koennen ihrerseits reagieren (dem ersten Waechter zuhilfe kommen
      oder auch die Lagertore schliessen).


SIEHE AUCH
==========

   events, eventd, UnregisterEvent(), RegisterEvent()

Last modified: 15.08.2007, Zesstra
