CONCEPT:
Channeld
DESCRIPTION:
Noch sehr sehr unvollstaendig! Hier nur eine Kurzuebersicht ueber
die Externen Master:
Alle Funktionen sind optional! Wenn nichts vorhanden ist, wird die
Ebene komplett vom Channeld verwaltet. Moechte man eine Funktion
genauer und selber steuern, so nimmt man sie einfach in den Master
auf.
Bitte Master als Objekte _nur_ fuer diesen Zweck anlegen. Wenn ein
Master buggt, buggen alle Channels!
Folgende Funktionen koennen angelegt werden:
int ChannelSend(string channel, mixed username, mixed msg, int cmd);
Damit erhaelt der Master die Meldung und kann sie verwerten.
usernames und msg koennen Strings sein (einfacher Fall) oder Arrays
aus Strings (bei Bedarf), die enthalten dann ({ Invis-Name,
Vis-Name }) sowie ({ Ausgabemeldung, Spezialmeldung an Ausgeber })
Rueckgabewerte sind (bei anderen Werten ist das Verhalten undefiniert):
1 - Ausgabe erfolgreich
0 - Ausgabe via channeld vornehmen
-1 - Fehler
int CheckChannelUser(object user, string channel, int action);
Darf der Spieler den Kanal benutzen? Dann muss 0 zurueckgegeben
werden. Wenn nicht ist -1 zurueckzugegeben. Bei anderen Werten ist
das Verhalten undefiniert! Erzmagier duerfen allen Kanaelen lauschen
und sprechen. Sprecherlaubnis beinhaltet immer Lauscherlaubnis.
Bemerkung: Oft kann es sinnvoll sein zu testen, ob user ueberhaupt
ein Spieler ist - denn sonst muessen in Npcs und Raeumen (oder
anderen Objekten, die die Meldung erzeugen wollen) alle Eigenschaften
die hier im externen Master getestet werden vorhanden sein.
action: 1 - lauschen (betreten) 2 - sprechen
void RegisterChannelUser(object user, string channel);
Damit wird der ext. Master informiert, wenn 'user' die Ebene
betritt. Der Master kann nun nichts mehr dagegen tun; ein (in
Wirklichkeit mehrere) Aufruf von CheckChannelUser() ging diesem
voraus. Wird nach dem (erfolgreichen) Betreten aufgerufen.
void UnregisterChannelUser(object user, string channel);
Damit wird der ext. Master informiert, wenn 'user' die Ebene
verlaesst. Wird nach dem (erfolgreichen) Verlassen aufgerufen.
Die Funktion wird nicht bei gezwungenem Verlassen durch Channeld-
Reload aufgerufen!
SEE ALSO:
|