| Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 1 | RegisterEvent() |
| 2 | =============== |
| 3 | |
| 4 | FUNKTION |
| 5 | -------- |
| 6 | :: |
| 7 | |
| 8 | int RegisterEvent(string eid, string fun, object listener); |
| 9 | |
| 10 | DEFINIERT IN |
| 11 | ------------ |
| 12 | :: |
| 13 | |
| 14 | /p/daemon/eventd.c |
| 15 | |
| 16 | DEKLARIERT IN |
| 17 | ------------- |
| 18 | :: |
| 19 | |
| 20 | /sys/events.h |
| 21 | |
| 22 | ARGUMENTE |
| 23 | --------- |
| 24 | :: |
| 25 | |
| 26 | string eid, |
| 27 | Die ID des Events, fuer den man sich registrieren will. Da dieser |
| 28 | String fuer alle Events jeweils eindeutig sein muss, empfiehlt es sich, |
| 29 | fuer eigene Events z.B. als Praefix den eigenen Magiernamen zu nehmen, |
| 30 | z.B. "zesstra_vulkanausbruch". |
| 31 | ACHTUNG: IDs, die mit '_evt_lib_' beginnen, sind AUSSCHLIESSLICH der |
| 32 | Mudlib vorbehalten! |
| 33 | string fun, |
| 34 | Name der Funktion, die im Objekt listener bei Auftreten des Events |
| 35 | gerufen werden soll. |
| 36 | object listener, |
| 37 | Das Objekt, das als Lauscher fuer diesen Event registriert werden soll. |
| 38 | |
| 39 | BESCHREIBUNG |
| 40 | ------------ |
| 41 | :: |
| 42 | |
| 43 | Das Objekt 'listener' wird als Lauscher dieses Events registriert. Ab |
| 44 | diesem Moment wird immer dann, wenn ein Event mit der ID 'eid' ausgeloest |
| 45 | wird, in 'listener' die Funktion 'fun' aufgerufen (zeitverzoegert, meist |
| 46 | 0-2s). |
| 47 | |
| 48 | |
| 49 | |
| 50 | Die Funktion wird dabei immer mit 3 Argumenten aufgerufen: |
| 51 | listener->fun(eid, triggerob, data); |
| 52 | Hierbei ist 'eid' die jeweilige Event-ID und 'triggerob' ist das Objekt, |
| 53 | welches den Event ausloeste. |
| 54 | 'data' kann jeder LPC-Datentyp sein und enthaelt die Daten, die das |
| 55 | triggernde Objekt an alle Listener uebermitteln will (damit sind Datentyp |
| 56 | und Inhalt komplett abhaengig vom Event!) |
| 57 | |
| 58 | Existiert bisher noch kein Event mit der ID 'eid', wird implizit ein |
| 59 | neuer Event erstellt, der erstmal nur das sich gerade registrierende |
| 60 | Objekt als Lauscher hat. |
| 61 | |
| 62 | RUeCKGABEWERT |
| 63 | ------------- |
| 64 | :: |
| 65 | |
| 66 | 1 fuer Erfolg, <=0 fuer Misserfolg. |
| 67 | 1 - Erfolg, 'listener' wurde eingetragen. |
| 68 | -1 - falsche Argumente wurden uebergeben |
| 69 | -2 - nicht-oeffentlicher Event und 'listener' wurde nicht fuer diesen |
| 70 | Event freigegeben (momentan gibt es noch keine nicht-oeffentlichen |
| 71 | Events) |
| 72 | -3 - 'fun' in 'listener' ist nicht vorhanden oder nicht von aussen |
| 73 | aufrufbar (protected, static, private). |
| 74 | |
| 75 | |
| 76 | |
| 77 | BEMERKUNGEN |
| 78 | ----------- |
| 79 | :: |
| 80 | |
| 81 | Wenn 'listener' bereits fuer den Event registriert wird, wird die alte |
| 82 | Registrierung ueberschrieben (als ggf. gilt dann der jetzt uebergebene |
| 83 | Funktionsname). |
| 84 | Die Funktion 'fun' sollte sparsam mit den Eval-Ticks umgehen. Momentan |
| 85 | ist die max. Menge an Ticks auf 30000 beschraenkt. Dies kann bei |
| 86 | Problemen auch jederzeit reduziert werden! |
| 87 | Der EVENTD merkt sich Event-Lauscher nicht ueber Reboots hinaus. |
| 88 | Sollte sich eine Blueprint anmelden, sich zerstoeren und neugeladen |
| 89 | werden, ist die neue Blueprint noch angemeldet, weil das neue Objekt |
| 90 | unter dem alten Namen wiedergefunden wird. Dies gilt _nicht_ fuer |
| 91 | Clones! |
| 92 | |
| 93 | BEISPIELE |
| 94 | --------- |
| 95 | :: |
| 96 | |
| 97 | 1. Ein Objekt moechte ueber Spielertode informiert werden: |
| 98 | EVENTD->RegisterEvent(EVT_LIB_PLAYER_DEATH, "spieler_ist_tot", |
| 99 | this_object()); |
| 100 | Ab jetzt wird im Objekt jedes Mal, wenn ein Spieler stirbt, die |
| 101 | Funktion "spieler_ist_tot" aufgerufen. |
| 102 | |
| 103 | 2. Ein Objekt will informiert werden, wenn der Event |
| 104 | "boing_zwergenkoenig_angriff" ausgeloest wird: |
| 105 | EVENTD->RegisterEvent("boing_zwergenkoenig_angriff","alarm", |
| 106 | this_object()); |
| 107 | |
| 108 | SIEHE AUCH |
| 109 | ---------- |
| 110 | :: |
| 111 | |
| 112 | events, eventd, UnregisterEvent(), TriggerEvent() |
| 113 | |
| 114 | |
| 115 | Last modified: 15.08.2007, Zesstra |
| 116 | |