blob: e6ec976a4e19ade634594098fd1dffe1db18c546 [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001TriggerEvent()
2**************
MG Mud User88f12472016-06-24 23:31:02 +02003
4
Zesstra953f9972017-02-18 15:37:36 +01005FUNKTION
6========
MG Mud User88f12472016-06-24 23:31:02 +02007
Zesstra953f9972017-02-18 15:37:36 +01008 varargs int TriggerEvent(string eid, mixed data);
MG Mud User88f12472016-06-24 23:31:02 +02009
Zesstra953f9972017-02-18 15:37:36 +010010
11DEFINIERT IN
12============
13
14 /p/daemon/eventd.c
15
16
17DEKLARIERT IN
18=============
19
20 /sys/events.h
21
22
23ARGUMENTE
24=========
25
26 string eid,
27 Die ID des Events, der ausgeloest werden soll.
28 Da dieser String fuer alle Events jeweils eindeutig sein muss,
29 empfiehlt es sich, fuer eigene Events z.B. als Praefix den eigenen
30 Magiernamen zu nehmen, z.B. "zesstra_vulkanausbruch".
31 ACHTUNG: IDs, die mit 'evt_lib_' beginnen, sind AUSSCHLIESSLICH der
32 Mudlib vorbehalten!
33
34 mixed data,
35 Daten, die jeder Lauscher uebergeben bekommt. Kann ein beliebiger
36 Datentyp sein. Ggf. ein Mapping oder Array benutzen.
37
38
39BESCHREIBUNG
40============
41
42 Der Event mit der ID 'eid' wird ausgeloest. Mit kurzer Verzoegerung
43 (meist 0-2s) werden alle fuer 'eid' registrierten Lauscher durch Aufruf
44 einer Funktion in ihnen informiert:
45 listener->fun(eid, triggerob, data);
46 'triggerob' ist hierbei das Objekt, welche TriggerEvent() gerufen hat,
47 'data' das, was das triggernde Objekte als Daten weiterverteilen moechte.
48 Die einzelnen fun() in den lauschenden Objekten muessen wissen, was sie
49 mit 'data' anfangen sollen. ;-)
50
51
52RUeCKGABEWERT
53=============
54
55 1 fuer Erfolg, <=0 fuer Misserfolg.
56 1 - Erfolg, Event 'eid' wurde ausgeloest.
57 -1 - falsche Argumente wurden uebergeben
58 -2 - nicht-oeffentlicher Event und das triggernde Objekt wurde nicht
59 fuer diesen Event freigegeben (momentan gibt es noch keine
60 nicht-oeffentlichen Events)
61 -3 - Event 'eid' existiert nicht, d.h. es gibt keine Lauscher.
62 -4 - Es gibt zuviele nicht verarbeitete Events.
63
64
65BEMERKUNGEN
66===========
67
68
69BEISPIELE
70=========
71
72 1. Ein Waechter wird angegriffen:
73 EVENTD->TriggerEvent("xand_holzfaellerlager_angriff",
74 (["angreifer": enemy,
75 "ort": environment(this_object()) ]) );
76 Alle anderen angemeldeten Waechter der Lagers werden nun informiert
77 und koennen ihrerseits reagieren (dem ersten Waechter zuhilfe kommen
78 oder auch die Lagertore schliessen).
79
80
81SIEHE AUCH
82==========
83
84 events, eventd, UnregisterEvent(), RegisterEvent()
85
MG Mud User88f12472016-06-24 23:31:02 +020086Last modified: 15.08.2007, Zesstra