blob: fb7476462e174d12453122133e5af62a38835452 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001create()
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 protected void create();
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
Zesstra953f9972017-02-18 15:37:36 +010014 allen Standardobjekten
MG Mud User88f12472016-06-24 23:31:02 +020015
MG Mud User88f12472016-06-24 23:31:02 +020016
Zesstra953f9972017-02-18 15:37:36 +010017ARGUMENTE
18=========
MG Mud User88f12472016-06-24 23:31:02 +020019
Zesstra953f9972017-02-18 15:37:36 +010020 keine
MG Mud User88f12472016-06-24 23:31:02 +020021
MG Mud User88f12472016-06-24 23:31:02 +020022
Zesstra953f9972017-02-18 15:37:36 +010023BESCHREIBUNG
24============
MG Mud User88f12472016-06-24 23:31:02 +020025
Zesstra6cadc1b2018-11-15 22:27:32 +010026 Diese Funktion wird aufgerufen, wenn ein Objekt geladen oder
27 geclont wird. In dieser Funktion wird das Objekt initialisiert und
28 konfiguriert. Waehrend des create() kann es einen
29 this_player()/this_interactive() geben, muss aber nicht! Im
30 create() hat das Objekt noch kein environment(). create() wird nur
31 gerufen, wenn das Objekte geclont oder explizit geladen wird. Wenn
32 es aufgrund eines inherit in einem anderen Objekt vom Driver
33 geladen wird, wird das create() nicht ausgefuehrt (s.
34 create_super()).
MG Mud User88f12472016-06-24 23:31:02 +020035
MG Mud User88f12472016-06-24 23:31:02 +020036
Zesstra953f9972017-02-18 15:37:36 +010037RUeCKGABEWERT
38=============
39
40 keiner
41
42
43BEMERKUNGEN
44===========
45
Zesstra6cadc1b2018-11-15 22:27:32 +010046 Erbt man von anderen Objekten, so besteht die erste Aktion
47 innerhalb von create() normalerweise darin, in diesen Objekten
48 create() aufzurufen.
Zesstra953f9972017-02-18 15:37:36 +010049
Zesstra6cadc1b2018-11-15 22:27:32 +010050 In altem Code wird create() haeufig ohne Sichtbarkeitsmodifikator
51 verwendet, es sollte aber immer protected gewaehlt werden, es gibt
52 keinen guten Grund create() mehr als einmal zu rufen, im Gegenteil,
53 wird das geerbte create() mehrfach gerufen kann das zu schwer zu
54 findenden Bugs fuehren.
Zesstra953f9972017-02-18 15:37:36 +010055
Zesstra6cadc1b2018-11-15 22:27:32 +010056 Um Speicher zu sparen, kann man bei Blueprints von der
57 Konfigurierung absehen (siehe Beispiel). Dies sollte man allerdings
58 nicht bei Objekten machen, von denen keine Clones erzeugt werden
59 sollen (zB. bei Raeumen).
60
61 Man sollte bei Abbruch des create() in BP unbedingt
62 set_next_reset(-1); rufen, da sonst die (nicht konfigurierte) BP
63 resetten kann und dann buggt.
Zesstra953f9972017-02-18 15:37:36 +010064
65
66BEISPIELE
67=========
68
69 Ein Gegenstand wuerde wie folgt konfiguriert:
70
Zesstra6cadc1b2018-11-15 22:27:32 +010071 inherit "/std/thing";
Zesstra953f9972017-02-18 15:37:36 +010072
73 #include <properties.h>
74
Zesstra6cadc1b2018-11-15 22:27:32 +010075 protected void create()
Zesstra953f9972017-02-18 15:37:36 +010076 {
77 // Wenn wir die Blueprint sind: NICHT konfigurieren!
Zesstra6cadc1b2018-11-15 22:27:32 +010078 // Bei normalen Raeumen oder Transportern sind diese
Zesstra953f9972017-02-18 15:37:36 +010079 // Zeilen wegzulassen!!!
Zesstra6cadc1b2018-11-15 22:27:32 +010080 if (!clonep(this_object()))
81 {
82 set_next_reset(-1); // wichtig, damit die BP nicht resettet.
83 return;
MG Mud User88f12472016-06-24 23:31:02 +020084 }
85
Zesstra953f9972017-02-18 15:37:36 +010086 // Ansonsten die allgemeinen Eigenschaften von /std/thing
87 // konfigurieren...
88 ::create();
89
90 // ...und nun unsere speziellen Eigenschaften:
91 SetProp(P_NAME, "Muell");
92 SetProp(P_SHORT, "Muell");
93 SetProp(P_LONG, "Voellig unnuetzer Muell!\n");
94 SetProp(P_ARTICLE, 0);
95 SetProp(P_VALUE, 0);
96 SetProp(P_GENDER, MALE);
97 }
98
99
100SIEHE AUCH
101==========
102
Zesstra6cadc1b2018-11-15 22:27:32 +0100103 create(), reset(), create_super() set_next_reset()
Zesstra953f9972017-02-18 15:37:36 +0100104
Zesstra6cadc1b2018-11-15 22:27:32 +0100105Letzte Aenderung: 27.10.2018, Bugfix