blob: 066ee554c0516fc48a64f5bb71e9011fc0952a8e [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
MG Mud User88f12472016-06-24 23:31:02 +02002create()
Zesstra953f9972017-02-18 15:37:36 +01003********
MG Mud User88f12472016-06-24 23:31:02 +02004
MG Mud User88f12472016-06-24 23:31:02 +02005
Zesstra953f9972017-02-18 15:37:36 +01006FUNKTION
7========
MG Mud User88f12472016-06-24 23:31:02 +02008
Zesstra953f9972017-02-18 15:37:36 +01009 protected void create();
MG Mud User88f12472016-06-24 23:31:02 +020010
MG Mud User88f12472016-06-24 23:31:02 +020011
Zesstra953f9972017-02-18 15:37:36 +010012DEFINIERT IN
13============
MG Mud User88f12472016-06-24 23:31:02 +020014
Zesstra953f9972017-02-18 15:37:36 +010015 allen Standardobjekten
MG Mud User88f12472016-06-24 23:31:02 +020016
MG Mud User88f12472016-06-24 23:31:02 +020017
Zesstra953f9972017-02-18 15:37:36 +010018ARGUMENTE
19=========
MG Mud User88f12472016-06-24 23:31:02 +020020
Zesstra953f9972017-02-18 15:37:36 +010021 keine
MG Mud User88f12472016-06-24 23:31:02 +020022
MG Mud User88f12472016-06-24 23:31:02 +020023
Zesstra953f9972017-02-18 15:37:36 +010024BESCHREIBUNG
25============
MG Mud User88f12472016-06-24 23:31:02 +020026
Zesstra6cadc1b2018-11-15 22:27:32 +010027 Diese Funktion wird aufgerufen, wenn ein Objekt geladen oder
28 geclont wird. In dieser Funktion wird das Objekt initialisiert und
29 konfiguriert. Waehrend des create() kann es einen
30 this_player()/this_interactive() geben, muss aber nicht! Im
31 create() hat das Objekt noch kein environment(). create() wird nur
32 gerufen, wenn das Objekte geclont oder explizit geladen wird. Wenn
33 es aufgrund eines inherit in einem anderen Objekt vom Driver
34 geladen wird, wird das create() nicht ausgefuehrt (s.
35 create_super()).
MG Mud User88f12472016-06-24 23:31:02 +020036
MG Mud User88f12472016-06-24 23:31:02 +020037
Zesstra953f9972017-02-18 15:37:36 +010038RUeCKGABEWERT
39=============
40
41 keiner
42
43
44BEMERKUNGEN
45===========
46
Zesstra6cadc1b2018-11-15 22:27:32 +010047 Erbt man von anderen Objekten, so besteht die erste Aktion
48 innerhalb von create() normalerweise darin, in diesen Objekten
49 create() aufzurufen.
Zesstra953f9972017-02-18 15:37:36 +010050
Zesstra6cadc1b2018-11-15 22:27:32 +010051 In altem Code wird create() haeufig ohne Sichtbarkeitsmodifikator
52 verwendet, es sollte aber immer protected gewaehlt werden, es gibt
53 keinen guten Grund create() mehr als einmal zu rufen, im Gegenteil,
54 wird das geerbte create() mehrfach gerufen kann das zu schwer zu
55 findenden Bugs fuehren.
Zesstra953f9972017-02-18 15:37:36 +010056
Zesstra6cadc1b2018-11-15 22:27:32 +010057 Um Speicher zu sparen, kann man bei Blueprints von der
58 Konfigurierung absehen (siehe Beispiel). Dies sollte man allerdings
59 nicht bei Objekten machen, von denen keine Clones erzeugt werden
60 sollen (zB. bei Raeumen).
61
62 Man sollte bei Abbruch des create() in BP unbedingt
63 set_next_reset(-1); rufen, da sonst die (nicht konfigurierte) BP
64 resetten kann und dann buggt.
Zesstra953f9972017-02-18 15:37:36 +010065
66
67BEISPIELE
68=========
69
70 Ein Gegenstand wuerde wie folgt konfiguriert:
71
Zesstra6cadc1b2018-11-15 22:27:32 +010072 inherit "/std/thing";
Zesstra953f9972017-02-18 15:37:36 +010073
74 #include <properties.h>
75
Zesstra6cadc1b2018-11-15 22:27:32 +010076 protected void create()
Zesstra953f9972017-02-18 15:37:36 +010077 {
78 // Wenn wir die Blueprint sind: NICHT konfigurieren!
Zesstra6cadc1b2018-11-15 22:27:32 +010079 // Bei normalen Raeumen oder Transportern sind diese
Zesstra953f9972017-02-18 15:37:36 +010080 // Zeilen wegzulassen!!!
Zesstra6cadc1b2018-11-15 22:27:32 +010081 if (!clonep(this_object()))
82 {
83 set_next_reset(-1); // wichtig, damit die BP nicht resettet.
84 return;
MG Mud User88f12472016-06-24 23:31:02 +020085 }
86
Zesstra953f9972017-02-18 15:37:36 +010087 // Ansonsten die allgemeinen Eigenschaften von /std/thing
88 // konfigurieren...
89 ::create();
90
91 // ...und nun unsere speziellen Eigenschaften:
92 SetProp(P_NAME, "Muell");
93 SetProp(P_SHORT, "Muell");
94 SetProp(P_LONG, "Voellig unnuetzer Muell!\n");
95 SetProp(P_ARTICLE, 0);
96 SetProp(P_VALUE, 0);
97 SetProp(P_GENDER, MALE);
98 }
99
100
101SIEHE AUCH
102==========
103
Zesstra6cadc1b2018-11-15 22:27:32 +0100104 create(), reset(), create_super() set_next_reset()
Zesstra953f9972017-02-18 15:37:36 +0100105
Zesstra6cadc1b2018-11-15 22:27:32 +0100106Letzte Aenderung: 27.10.2018, Bugfix