blob: c3d8feb553f81f30dae9da0b5bd02b6283710393 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001clean_up()
Zesstra953f9972017-02-18 15:37:36 +01002**********
MG Mud User88f12472016-06-24 23:31:02 +02003
MG Mud User88f12472016-06-24 23:31:02 +02004
Zesstra953f9972017-02-18 15:37:36 +01005FUNKTION
6========
MG Mud User88f12472016-06-24 23:31:02 +02007
Zesstra953f9972017-02-18 15:37:36 +01008 int clean_up(int ref);
MG Mud User88f12472016-06-24 23:31:02 +02009
MG Mud User88f12472016-06-24 23:31:02 +020010
Zesstra953f9972017-02-18 15:37:36 +010011DEFINIERT IN
12============
MG Mud User88f12472016-06-24 23:31:02 +020013
Zesstra70ea4242019-06-27 20:51:52 +020014 * /std/room.c
15
16 * man kann die Funktion jedoch auch in beliebigen Objekten selbst
17 definieren.
MG Mud User88f12472016-06-24 23:31:02 +020018
MG Mud User88f12472016-06-24 23:31:02 +020019
Zesstra953f9972017-02-18 15:37:36 +010020ARGUMENTE
21=========
22
23 ref
Zesstra70ea4242019-06-27 20:51:52 +020024 Ein Referenzzaehler (s.u.)
Zesstra953f9972017-02-18 15:37:36 +010025
26
27BESCHREIBUNG
28============
29
Zesstra70ea4242019-06-27 20:51:52 +020030 Wenn ein Objekt seit langer Zeit nicht mehr benutzt wurde (d.h. es
31 wurde keine lfun *von aussen* in ihm gerufen), ruft der Driver
32 diese Funktion auf. Es kann es sich hier selbst zerstoeren, um
33 Speicher freizugeben (und ggf. spaeter mit aktuellem Sourcecode neu
34 erzeugt werden, was auch eine Art einfacher Updatemechanismus ist).
35
36 Der Referenzzaehler <ref> gibt an, wie oft das Objekt als Vorlage
37 fuer Clones oder erbende Programme dient. Folgende Faelle sind
38 damit unterscheidbar:
39
40 ref==0:
41 Das Objekt ist ein Clone (oder eine Blueprint mit ersetztem
42 Programm)
43
44 ref==1:
45 Das Objekt ist eine Blueprint (kein Clone), von welcher zur
46 Zeit keine Clones oder erbenden Programme existieren.
47
48 ref > 1:
49 Das Objekt dient als Vorlage / Blueprint fuer Clones oder
50 erbende Programme.
51
52 Das Objekt im clean_up zu zerstoeren, ist in der Regel ist daher
53 nur sinnvoll, wenn ref kleiner oder gleich 1 ist.
54
55 Sollte man einem Objekt ein clean_up geben, was als Clone im Umlauf
56 ist und dieses im Falle von ref==0 zerstoeren, bedeutet dies
57 letztendlich, dass sich ungenutzte Clones aufraeumen.
58
59 In einem Spezialfall kann ref auch < 0 sein: wenn clean_up *nicht*
60 vom Driver gerufen wird, sondern (manuell) von irgendwo aus der
61 Mudlib, ist die *Konvention*, einen Wert < 0 zu uebergeben.
62
63 Standardmaessig definieren nur Raeume clean_up(). Hierbei gilt die
64 Besonderheit, dass Raeume sich erst beim *zweiten* Aufruf von
65 clean_up() wegraeumen, wenn in ihnen Objekte liegen, die der Raum
66 *nicht* selbst mittels AddItem() erzeugt hat. D.h. laesst jemand
67 etwas im Raum rumliegen, erhoeht sich effektiv die Cleanup-Zeit auf
68 das doppelte. Und hat irgendjemand sich auf einen Hook des Raums
69 registriert, raeumt der Raum sich nicht im clean_up() auf.
70
71 Soll ein Raum sich niemals per clean_up() selber aufraeumen, kann
72 die Property P_NEVER_CLEAN gesetzt werden. Aber bitte seid hiermit
73 *sehr sparsam* und benutzt das nur in Raeumen, die es wirklich
74 benoetigen. Fast alle Raeume kommen super klar, wenn sie bei Bedarf
75 neu erzeugt werden.
Zesstra953f9972017-02-18 15:37:36 +010076
77
78RUeCKGABEWERT
79=============
80
81 Der Rueckgabewert hat nur dann eine Bedeutung, wenn sich das Objekt
Zesstra70ea4242019-06-27 20:51:52 +020082 nicht selbst zerstoert hat.
Zesstra953f9972017-02-18 15:37:36 +010083
Zesstra70ea4242019-06-27 20:51:52 +020084 Wird 0 zurueckgegeben, so wird clean_up() *nicht erneut* gerufen.
85 Ein Rueckgabewert ungleich 0 zeigt hingegen an, dass das Objekt
86 sich moeglicherweise beim naechsten Aufruf von clean_up()
87 zerstoeren koennte, d.h. der Driver wird es nach Ablauf der
88 Cleanup-Zeit erneut versuchen.
Zesstra953f9972017-02-18 15:37:36 +010089
90
91BEMERKUNGEN
92===========
93
Zesstra70ea4242019-06-27 20:51:52 +020094 Die Cleanup-Zeit, die ein Objekt nicht benutzt werden darf, bevor
95 clean_up() aufgerufen wird, betraegt momentan 18h (64800 Sekunden).
Zesstra953f9972017-02-18 15:37:36 +010096
97
98SIEHE AUCH
99==========
100
Zesstra70ea4242019-06-27 20:51:52 +0200101 lfuns:
102 reset()
MG Mud User88f12472016-06-24 23:31:02 +0200103
Zesstra70ea4242019-06-27 20:51:52 +0200104 Properties:
105 P_NEVER_CLEAN
106
10718.02.2019, Zesstra