Doku-Update
Commit auto-erzeugter Dateien.
Change-Id: I26a870d8c6f82a3648df52621dba6def25897e4b
diff --git a/doc/lfun/AddItem b/doc/lfun/AddItem
index 222b24d..97bd0a8 100644
--- a/doc/lfun/AddItem
+++ b/doc/lfun/AddItem
@@ -33,6 +33,8 @@
- REFRESH_ALWAYS - Neuer Clone bei jedem Reset.
- REFRESH_MOVE_HOME - Objekt wird bei Reset automatisch
zurueckgeholt, wenn es wegbewegt wurde.
+ Wurde das Objekt zerstoert, wird es automatisch neu
+ erzeugt, wie bei REFRESH_DESTRUCT.
(nur in Raeumen!)
Bei NPC's gilt zusaetzlich:
- CLONE_WEAR - Item Anziehen, wenn es eine Ruestung ist.
@@ -56,84 +58,85 @@
BESCHREIBUNG
============
- Abhaengig von <filename> und <props> wird ein Objekt erzeugt und in
- den Raum bzw. NPC bewegt. Dabei gibt es folgende Moeglichkeiten:
- - <filename> ist ein Dateiname.
- Es wird ein Clone dieser Datei erstellt oder (wenn <props>=1 ist)
- deren Blueprint verwendet.
- - <filename> ist ein Array von Dateinamen.
- Es wird eine Datei zufaellig aus dem Array ausgewaehlt und von
- dieser Datei ein Clone erstellt oder (wenn <props>=1 ist) deren
- Blueprint verwendet.
- Uebergibt man fuer <props> ein Mapping mit dem Aufbau
- ([prop_name:prop_wert,...]),
- so werden diese Properties im erzeugten Objekt gesetzt.
- Der Parameter <refresh> gibt an, was waehrend eines Resets im Raum
- bzw. in NPC's oder was beim Erzeugen von NPC's geschehen soll:
- In <rooms.h> sind dazu folgende Moeglichkeiten definiert:
- - REFRESH_NONE
- Das Objekt wird niemals erneuert; falls es zerstoert wurde, wird
- es erst dann wieder erzeugt, wenn der Raum erneut geladen bzw.
- der NPC neu erzeugt wird. Man beachte, dass nicht jeder NPC
- wirklich refreshende Objekte benoetigt, REFRESH_NONE spart
- hierbei sowohl Rechenzeit als auch Speicher!
- - REFRESH_DESTRUCT
- Das Objekt wird nur dann erneuert, wenn es in der Zwischenzeit
- zerstoert wurde (bei NPC's ist das zum Beispiel der Fall, wenn
- sie getoetet wurden).
- REFRESH_NONE & REFRESH_DESTRUCT + Blueprint-Objekt bedeutet bei
- NPC's ein Unique-Objekt, es wird also nicht beim Neuerzeugen des
- NPC's zurueckgesetzt.
- - REFRESH_REMOVE
- Das Objekt wird erneuert, wenn es sich nicht mehr im Raum bzw.
- im NPC befindet. Das kein sein, weil es zerstoert wurde, aber
- auch zum Beispiel in folgenden Faellen:
- * weil es jemand mitgenommen hat
- (in Raeumen bei Gegenstaenden)
- * weil es fortgegangen ist
- (in Raeumen bei NPC's, die herumlaufen)
- * weil es weggeworfen wurde
- (in NPC's bei Gegenstaenden)
- - REFRESH_ALWAYS
- Das Objekt wird immer erneuert. Von dieser Refreshmethode sollte
- man allerdings Abstand nehmen, da sich sonst mit der Zeit
- gewaltige Mengen von Objekten ansammeln koennen!
- - REFRESH_MOVE_HOME
- Das Objekt wird in einen Raum zurueckbewegt, sofern es noch
- existiert, jedoch nicht mehr in dem Raum ist. Sinnvoll ist dies
- eigentlich nur fuer Lebewesen, funktioniert aber auch bei
- beliebigen Objekten. Hauptsaechlich geht es hierbei darum,
- herumlaufende NPCs oder bei erzwungenen Bewegungen nicht von
- P_GUARD zurueckgehaltene NPCs wieder an einen definierten
- Ausgangsort zurueckzubringen.
- Hat man in Raeumen als <filename> ein Array von Dateinamen
- uebergeben, so wird beim Reset jedesmal aufs Neue ein zufaelliges
- Objekt aus der Liste ausgewaehlt (nicht in NPC's).
- In NPC's gilt der Grundsatz der Vermeidung von ueberfluessigen
- Objekten im MUD. Neu erzeugt werden Objekte beim Erzeugen eines
- NPC's oder bei einem Reset im selbigen. Anstatt die Objekte gleich
- neu zu erschaffen, wird erst geschaut, ob sich identische Objekte
- schon im Raum befinden. Ist dies der Fall, so nimmt der NPC sie auf,
- ruft jedoch vorher nochmals create() in ihnen auf!
- (noetig wegen moeglicher Veraenderungen an den Objekten)
- Was dann passiert, haengt von weiteren Angaben in <refresh> ab.
- Folgende weitere Moeglichkeiten sind in <npc.h> definiert:
- - CLONE_WEAR
- Ist das hinzugefuegte Item eine Ruestung, so wird sie nach
- Aufnahme oder Neuerzeugung angezogen.
- - CLONE_WIELD
- Ist das hinzugefuegte Item eine Waffe, so wird sie nach Aufnahme
- oder Neuerzeugung gezueckt.
- - CLONE_NO_CHECK
- Hiermit verhindert man eine Ueberpruefung, ob eine Ruestung
- angezogen oder eine Waffe gezueckt werden kann. Es ist jedoch
- Vorsicht geboten: So kann es ohne weiteres passieren, dass ein NPC
- mehrere Ruestungen gleichen Typs angezogen oder mehrere Waffen
- gezueckt hat.
- Benutzt man Blueprints (<props>=1) mit REFRESH_REMOVE oder
- REFRESH_ALWAYS, so kann es zu ungewollten Ueberraschungen kommen, da
- die Blueprint dann unabhaengig von ihrem momentanen Aufenthaltsort
- wieder in den Raum bzw. NPC bewegt wird, von dem sie erzeugt wurde!
+ Abhaengig von <filename> und <props> wird ein Objekt erzeugt und in
+ den Raum bzw. NPC bewegt. Dabei gibt es folgende Moeglichkeiten:
+ - <filename> ist ein Dateiname.
+ Es wird ein Clone dieser Datei erstellt oder (wenn <props>=1 ist)
+ deren Blueprint verwendet.
+ - <filename> ist ein Array von Dateinamen.
+ Es wird eine Datei zufaellig aus dem Array ausgewaehlt und von
+ dieser Datei ein Clone erstellt oder (wenn <props>=1 ist) deren
+ Blueprint verwendet.
+ Uebergibt man fuer <props> ein Mapping mit dem Aufbau
+ ([prop_name:prop_wert,...]),
+ so werden diese Properties im erzeugten Objekt gesetzt.
+ Der Parameter <refresh> gibt an, was waehrend eines Resets im Raum
+ bzw. in NPC's oder was beim Erzeugen von NPC's geschehen soll:
+ In <rooms.h> sind dazu folgende Moeglichkeiten definiert:
+ - REFRESH_NONE
+ Das Objekt wird niemals erneuert; falls es zerstoert wurde, wird
+ es erst dann wieder erzeugt, wenn der Raum erneut geladen bzw.
+ der NPC neu erzeugt wird. Man beachte, dass nicht jeder NPC
+ wirklich refreshende Objekte benoetigt, REFRESH_NONE spart
+ hierbei sowohl Rechenzeit als auch Speicher!
+ - REFRESH_DESTRUCT
+ Das Objekt wird nur dann erneuert, wenn es in der Zwischenzeit
+ zerstoert wurde (bei NPC's ist das zum Beispiel der Fall, wenn
+ sie getoetet wurden).
+ REFRESH_NONE & REFRESH_DESTRUCT + Blueprint-Objekt bedeutet bei
+ NPC's ein Unique-Objekt, es wird also nicht beim Neuerzeugen des
+ NPC's zurueckgesetzt.
+ - REFRESH_REMOVE
+ Das Objekt wird erneuert, wenn es sich nicht mehr im Raum bzw.
+ im NPC befindet. Das kein sein, weil es zerstoert wurde, aber
+ auch zum Beispiel in folgenden Faellen:
+ * weil es jemand mitgenommen hat
+ (in Raeumen bei Gegenstaenden)
+ * weil es fortgegangen ist
+ (in Raeumen bei NPC's, die herumlaufen)
+ * weil es weggeworfen wurde
+ (in NPC's bei Gegenstaenden)
+ - REFRESH_ALWAYS
+ Das Objekt wird immer erneuert. Von dieser Refreshmethode sollte
+ man allerdings Abstand nehmen, da sich sonst mit der Zeit
+ gewaltige Mengen von Objekten ansammeln koennen!
+ - REFRESH_MOVE_HOME
+ Das Objekt wird in einen Raum zurueckbewegt, sofern es noch
+ existiert, jedoch nicht mehr in dem Raum ist. Sinnvoll ist dies
+ eigentlich nur fuer Lebewesen, funktioniert aber auch bei
+ beliebigen Objekten. Hauptsaechlich geht es hierbei darum,
+ herumlaufende NPCs oder bei erzwungenen Bewegungen nicht von
+ P_GUARD zurueckgehaltene NPCs wieder an einen definierten
+ Ausgangsort zurueckzubringen.
+ Wurde das Objekt zerstoert, wird es neu erzeugt.
+ Hat man in Raeumen als <filename> ein Array von Dateinamen
+ uebergeben, so wird beim Reset jedesmal aufs Neue ein zufaelliges
+ Objekt aus der Liste ausgewaehlt (nicht in NPC's).
+ In NPC's gilt der Grundsatz der Vermeidung von ueberfluessigen
+ Objekten im MUD. Neu erzeugt werden Objekte beim Erzeugen eines
+ NPC's oder bei einem Reset im selbigen. Anstatt die Objekte gleich
+ neu zu erschaffen, wird erst geschaut, ob sich identische Objekte
+ schon im Raum befinden. Ist dies der Fall, so nimmt der NPC sie auf,
+ ruft jedoch vorher nochmals create() in ihnen auf!
+ (noetig wegen moeglicher Veraenderungen an den Objekten)
+ Was dann passiert, haengt von weiteren Angaben in <refresh> ab.
+ Folgende weitere Moeglichkeiten sind in <npc.h> definiert:
+ - CLONE_WEAR
+ Ist das hinzugefuegte Item eine Ruestung, so wird sie nach
+ Aufnahme oder Neuerzeugung angezogen.
+ - CLONE_WIELD
+ Ist das hinzugefuegte Item eine Waffe, so wird sie nach Aufnahme
+ oder Neuerzeugung gezueckt.
+ - CLONE_NO_CHECK
+ Hiermit verhindert man eine Ueberpruefung, ob eine Ruestung
+ angezogen oder eine Waffe gezueckt werden kann. Es ist jedoch
+ Vorsicht geboten: So kann es ohne weiteres passieren, dass ein NPC
+ mehrere Ruestungen gleichen Typs angezogen oder mehrere Waffen
+ gezueckt hat.
+ Benutzt man Blueprints (<props>=1) mit REFRESH_REMOVE oder
+ REFRESH_ALWAYS, so kann es zu ungewollten Ueberraschungen kommen, da
+ die Blueprint dann unabhaengig von ihrem momentanen Aufenthaltsort
+ wieder in den Raum bzw. NPC bewegt wird, von dem sie erzeugt wurde!
BEMERKUNGEN
@@ -141,7 +144,6 @@
Wenn man Blueprints benutzt, sollte man daran denken, dass sich von
dieser dann keine Clones mehr erstellen lassen!
- RemoveItem() zum Entfernen von Items ist nur fuer Raeume definiert!
Die Option CLONE_NEW ist veraltet. Die Objekte werden nun immer
neu erzeugt. Die Option darf noch angegeben werden, hat aber keine
diff --git a/doc/lfun/AddVItem b/doc/lfun/AddVItem
index 0b48656..af42f22 100644
--- a/doc/lfun/AddVItem
+++ b/doc/lfun/AddVItem
@@ -1,5 +1,5 @@
-AddvItem()
+AddVItem()
**********
@@ -21,8 +21,7 @@
key
Eindeutige Bezeichnung des vItems und mit dieser wieder
- loeschbar. Das vItem wird im Raum auch unter dieser ID
- ansprechbar sein.
+ loeschbar. Das vItem bekommt dies u.U. auch als ID (s.u.)
refresh
Refresheinstellungen des vItems, nachdem es mitgenommen wurde
@@ -60,6 +59,10 @@
<props> angegebenen Properties in ihm gesetzt. Auf diese Weise kann
man das genommene Objekt noch individuell konfigurieren.
+ Werden fuer ein reines vItem ohne Vorlage keine P_IDS in
+ <shadowprops> angegeben, so bekommt das vItem den string <key> als
+ ID, damit es irgendwie im Raum ansprechbar ist.
+
Zu beachten ist: in <shadowprops> enthaltene Properties *ersetzen*
(nicht ergaenzen) im Regelfall diejenigen im Templat *und* in
<props>. In <props> enthaltene Properties *ersetzen* wiederum
@@ -189,6 +192,6 @@
SIEHE AUCH
==========
- AddvItem(), AddItem(), RemoveItem() *../std/vitems*
+ RemoveVItem(), AddItem(), RemoveItem() *../std/vitems*
Last modified: 03.04.2019, Zesstra
diff --git a/doc/lfun/PreventInsert b/doc/lfun/PreventInsert
index 3635142..e58e827 100644
--- a/doc/lfun/PreventInsert
+++ b/doc/lfun/PreventInsert
@@ -19,7 +19,7 @@
=========
ob
- Das Objekt, das in den Behaelter eingefuegt werden soll.
+ Das Objekt, das in den Behaelter eingefuegt werden soll.
BESCHREIBUNG
@@ -28,44 +28,49 @@
Mit dieser Funktion kann ein Behaelter pruefen, ob er das Objekt ob
aufnehmen moechte oder nicht.
+ Man beachte bitte, dass nach dieser Funktion *nicht* garantiert
+ ist, dass das Objekt wirklich bewegt wird, es handelt sich
+ lediglich um die Abfrage der Erlaubnis! Die Bewegung kann aus einer
+ Vielzahl an Gruenden noch abgebrochen werden.
+
+ Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventInsert()
+ zwar aufgerufen, aber das Ergebnis ignoriert, d.h. die Aufnahme
+ kann in dem Fall nicht verhindert werden.
+
RUeCKGABEWERT
=============
- 0, wenn das Objekt aufgenommen werden kann; ein Wert groesser als 0
- zeigt an, dass das Objekt nicht aufgenommen werden soll.
+ 0
+ wenn das Objekt aufgenommen werden kann;
-
-BEMERKUNGEN
-===========
-
- Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventInsert() zwar
- aufgerufen, das Objekt wird jedoch auf jeden Fall in den Behaelter
- bewegt, unabhaengig vom Rueckgabewert!
+ > 0
+ ein Wert groesser als 0 zeigt an, dass das Objekt nicht
+ aufgenommen werden soll.
BEISPIELE
=========
- Um zu verhindern, dass man Geld in einen Behaelter stecken kann, sollte
- man wie folgt vorgehen:
+ Um zu verhindern, dass man Geld in einen Behaelter stecken kann,
+ sollte man wie folgt vorgehen:
- varargs int PreventInsert(object ob)
- {
- // Wenn es Geld ist, erheben wir sofort Einspruch
- if (ob->id("geld"))
- return 1;
- // Ansonsten koennte ein ererbtes Objekt noch Einspruch erheben!
- else
- return ::PreventInsert(ob);
- }
+ public int PreventInsert(object ob)
+ {
+ // Wenn es Geld ist, erheben wir sofort Einspruch
+ if (ob->id("geld"))
+ return 1;
+ // Ansonsten koennte ein ererbtes Objekt noch Einspruch erheben!
+ else
+ return ::PreventInsert(ob);
+ }
SIEHE AUCH
==========
PreventLeave(), NotifyInsert(), NotifyLeave(), MayAddObject(),
- PreventInsertLiving(), PreventLeaveLiving(), NotifyMove(),
- PreventMove(), MayAddWeight(), move(), /std/container/restrictions.c
+ MayAddWeight(), PreventInsertLiving(), PreventLeaveLiving(),
+ NotifyMove(), PreventMove(), move(), /std/container/restrictions.c
-Last modified: Sat Dec 18 02:00:00 1999 by Tiamak
+Last modified: 30.01.2020, Zesstra