| init() |
| |
| FUNKTION: |
| void init(); |
| |
| DEFINIERT IN: |
| /std/room/description.c |
| |
| ARGUMENTE: |
| keine |
| |
| BESCHREIBUNG: |
| init() wird immer dann aufgerufen, wenn ein lebendes Objekt in die |
| Naehe anderer Objekte bewegt wird oder ein nicht lebendiges Objekt |
| in die Naehe von Lebewesen gelangt. init() wird dabei in allen |
| Objekten aufgerufen, bei denen es notwendig ist. |
| |
| Der Hauptzweck dieser Funktion besteht darin, den Objekten |
| untereinander ihre jeweiligen Befehle zugaenglich zu machen. |
| Waehrend dies in anderen MudLibs durch eine Reihe von |
| add_action()-Aufrufen im Rumpf von init() geschah, geschieht dies in |
| der MG-MudLib bei Objekten, die /std/thing/commands.c erben |
| (das sind zB. alle Standardobjekte) quasi automatisch |
| (dort werden die Befehle dann per AddCmd() im create() angemeldet, |
| man spart sich die Implementierung von init() und dem Mud somit |
| Speicher). Der andere Weg ist aber natuerlich immer noch moeglich. |
| |
| RUeCKGABEWERT: |
| keiner |
| |
| BEMERKUNGEN: |
| Der Ablauf der init()-Kette ist wie folgt: |
| o Ist das Objekt X, welches ins Zielobjekt D bewegt wurde, ein |
| Lebewesen, so wird in D init() aufgerufen, wobei this_player() auf |
| X gesetzt ist. |
| o Dann wird fuer jedes Objekt C in D folgendes ausgefuehrt: |
| + Ist C ein Lebewesen, dann wird init() in X aufgerufen, wobei |
| this_player() auf C gesetzt ist. |
| + Ist X ein Lebewesen, dann wird init() in C aufgerufen, wobei |
| this_player() auf X gesetzt ist. |
| o Schliesslich wird in dem Fall, dass D lebendig ist, in X init() |
| aufgerufen, wobei this_player() auf D gesetzt ist. |
| |
| BEISPIELE: |
| D sei ein Raum, in dem sich das Lebewesen L1 sowie die Gegenstaende |
| N1 und N2 befinden. |
| Betritt ein Spieler X diesen Raum, so werden folgende init()s |
| aufgerufen: |
| |
| D->init(); // this_player() == X |
| X->init(); // this_player() == L1 |
| L1->init(); // this_player() == X |
| N1->init(); // this_player() == X |
| N2->init(); // this_player() == X |
| |
| Gelangt dagegen ein nichtlebendiges Objekt nach D, so sieht das Ganze |
| wie folgt aus: |
| |
| X->init(); // this_player() == L1 |
| |
| SIEHE AUCH: |
| exit(), AddCmd(), add_action(), |
| NotifyInsert() |
| ---------------------------------------------------------------------------- |
| Last modified: 04.08.2007, Zesstra |