KONZEPT:
Objekt-Daemon des Wunderland
EINLEITUNG:
Der Objekt-Daemon dient dazu, Objekte verschiedener Art beim Laden
eines Raumes ueber 'AddItem' hinzu zu fuegen bevor ein Lebewesen den
Raum dann betritt.
WIE KANN MAN DIESEN DAEMON NUTZEN?
Durch das includen von 'properties.h' wird auch die 'daemon.h'
included in der wir den Objekt-Daemon ueber das Define OBJECTD
aufrufen koennen.
DIE FUNKTIONEN:
string AddObject(object obj, string env)
string RemoveObject(object obj, string env)
string *QueryObjects(string env)
DIE FUNKTION 'AddObject':
Mit 'AddObject' sagen wir dem Objekt-Daemon das er sich fuer
den Raum 'env' das Objekt 'obj' merken soll. Der Pfadname des
Raum muss dessen object_name() sein. Ist env Null, so wird der
Pfadname des Aufrufers (previous_object()) angenommen.
Soll das Objekt 'sofort' im Raum vorhanden sein, so muss man sich
selbst darum kuemmern - sonst wird es nur beim naechsten Erzeugen
des Raums beruecksichtigt.
'AddObject' liefert bei einem Fehler 0 (fuer nicht vorhandenes
Objekt obj oder string env) und den Pfadnamen von env (wenn das
Objekt 'obj' im Raum 'env' angemeldet wurde)
raum = find_object("/players/gilbert/workroom");
baum = clone_object("/players/gilbert/advent/obj/tannenbaum");
baum->move(raum, M_NOCHECK|M_SILENT);
OBJECTD->AddObject(baum, object_name(raum));
Den Objekten kann auch spezielle Infos mitgegeben werden,
siehe dazu die Hilfeseite zu P_AUTOLOAD.
DIE FUNKTION 'RemoveObject':
Mit 'RemoveObject' sagen wir dem Objekt-Daemon das er aus
dem Raum 'env' das Objekt 'obj' entfernen soll. Das Objekt
'obj' muss nachdem wir 'RemoveObject' im Objekt-Daemon
aufgerufen haben, zerstoert werden (wenn wir nicht wollen, dass
es weiter existiert, ansonsten wird es nur einfach beim naechsten
Erzeugen des Raums nicht mehr miterzeugt). Wir koennen das Objekt
'obj' aber auch im Raum 'env' lassen, weil es (wenn der
Raum mal entladen wird) dann ja mit verschwindet.
'RemoveObject' liefert bei einem Fehler 0 (fuer nicht
vorhandenes Objekt obj oder string env), oder den Pfadnamen des
Raums bei Erfolg.
raum = find_object("/players/gilbert/workroom");
baum = find_object("/players/gilbert/advent/obj/tannenbaum");
OBJECTD->RemoveObject(baum, object_name(raum));
baum->remove(1);
DIE FUNKTION 'QueryObjects':
Diese Funktion liefert uns ein Array mit allen object_name()n von
den Objekten, die ueber den Objekt-Daemon mit 'AddObject'
fuer den Raum env gespeichert wurden.
'QueryObjects' liefert bei einem Fehler 0 (wenn 'arg' ein
Clone ist) und ein Array mit den object_name()n der ueber
'AddObject' angemeldeten Objekte, bei korrekter Ausfuehrung.
SIEHE AUCH:
P_AUTOLOAD
|