blob: a2855e56886941b97300b8c062db4dd3856927e8 [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001init()
2======
3
4FUNKTION
5--------
6::
7
8 void init();
9
10DEFINIERT IN
11------------
12::
13
14 /std/room/description.c
15
16ARGUMENTE
17---------
18::
19
20 keine
21
22BESCHREIBUNG
23------------
24::
25
26 init() wird immer dann aufgerufen, wenn ein lebendes Objekt in die
27 Naehe anderer Objekte bewegt wird oder ein nicht lebendiges Objekt
28 in die Naehe von Lebewesen gelangt. init() wird dabei in allen
29 Objekten aufgerufen, bei denen es notwendig ist.
30
31 Der Hauptzweck dieser Funktion besteht darin, den Objekten
32 untereinander ihre jeweiligen Befehle zugaenglich zu machen.
33 Waehrend dies in anderen MudLibs durch eine Reihe von
34 add_action()-Aufrufen im Rumpf von init() geschah, geschieht dies in
35 der MG-MudLib bei Objekten, die /std/thing/commands.c erben
36 (das sind zB. alle Standardobjekte) quasi automatisch
37 (dort werden die Befehle dann per AddCmd() im create() angemeldet,
38 man spart sich die Implementierung von init() und dem Mud somit
39 Speicher). Der andere Weg ist aber natuerlich immer noch moeglich.
40
41RUeCKGABEWERT
42-------------
43::
44
45 keiner
46
47BEMERKUNGEN
48-----------
49::
50
51 Der Ablauf der init()-Kette ist wie folgt:
52 o Ist das Objekt X, welches ins Zielobjekt D bewegt wurde, ein
53 Lebewesen, so wird in D init() aufgerufen, wobei this_player() auf
54 X gesetzt ist.
55 o Dann wird fuer jedes Objekt C in D folgendes ausgefuehrt:
56 + Ist C ein Lebewesen, dann wird init() in X aufgerufen, wobei
57 this_player() auf C gesetzt ist.
58 + Ist X ein Lebewesen, dann wird init() in C aufgerufen, wobei
59 this_player() auf X gesetzt ist.
60 o Schliesslich wird in dem Fall, dass D lebendig ist, in X init()
61 aufgerufen, wobei this_player() auf D gesetzt ist.
62
63BEISPIELE
64---------
65::
66
67 D sei ein Raum, in dem sich das Lebewesen L1 sowie die Gegenstaende
68 N1 und N2 befinden.
69 Betritt ein Spieler X diesen Raum, so werden folgende init()s
70 aufgerufen:
71
72 D->init(); // this_player() == X
73 X->init(); // this_player() == L1
74 L1->init(); // this_player() == X
75 N1->init(); // this_player() == X
76 N2->init(); // this_player() == X
77
78 Gelangt dagegen ein nichtlebendiges Objekt nach D, so sieht das Ganze
79 wie folgt aus:
80
81 X->init(); // this_player() == L1
82
83SIEHE AUCH
84----------
85::
86
87 exit(), AddCmd(), add_action(),
88 NotifyInsert()
89
90Last modified: 04.08.2007, Zesstra
91