blob: 7b52478744b81a26858490e0d2cf7911235f9e65 [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001create()
2========
3
4FUNKTION
5--------
Zesstra18626972017-01-31 10:38:27 +01006
Bugfix95b19bc2018-10-27 23:22:21 +02007 protected void create();
Zesstra18626972017-01-31 10:38:27 +01008
9DEFINIERT IN
10------------
Zesstra18626972017-01-31 10:38:27 +010011
Bugfix95b19bc2018-10-27 23:22:21 +020012 allen Standardobjekten
Zesstra18626972017-01-31 10:38:27 +010013
14ARGUMENTE
15---------
Zesstra18626972017-01-31 10:38:27 +010016
Bugfix95b19bc2018-10-27 23:22:21 +020017 keine
Zesstra18626972017-01-31 10:38:27 +010018
19BESCHREIBUNG
20------------
Zesstra18626972017-01-31 10:38:27 +010021
Bugfix95b19bc2018-10-27 23:22:21 +020022 Diese Funktion wird aufgerufen, wenn ein Objekt geladen oder geclont
23 wird.
24 In dieser Funktion wird das Objekt initialisiert und konfiguriert.
25 Waehrend des create() kann es einen this_player()/this_interactive()
26 geben, muss aber nicht!
27 Im create() hat das Objekt noch kein environment().
28 create() wird nur gerufen, wenn das Objekte geclont oder explizit geladen
29 wird. Wenn es aufgrund eines inherit in einem anderen Objekt vom Driver
30 geladen wird, wird das create() nicht ausgefuehrt (s. create_super()).
Zesstra18626972017-01-31 10:38:27 +010031
32RUeCKGABEWERT
33-------------
Zesstra18626972017-01-31 10:38:27 +010034
Bugfix95b19bc2018-10-27 23:22:21 +020035 keiner
Zesstra18626972017-01-31 10:38:27 +010036
37BEMERKUNGEN
38-----------
Zesstra18626972017-01-31 10:38:27 +010039
Bugfix95b19bc2018-10-27 23:22:21 +020040 Erbt man von anderen Objekten, so besteht die erste Aktion innerhalb
41 von create() normalerweise darin, in diesen Objekten create()
42 aufzurufen.
Bugfixe8cc3cb2018-10-27 23:29:04 +020043
44 In altem Code wird create() haeufig ohne Sichtbarkeitsmodifikator
45 verwendet, es sollte aber immer protected gewaehlt werden, es gibt keinen
46 guten Grund create() mehr als einmal zu rufen, im Gegenteil, wird das
47 geerbte create() mehrfach gerufen kann das zu schwer zu findenden Bugs
48 fuehren.
Zesstra18626972017-01-31 10:38:27 +010049
Bugfix95b19bc2018-10-27 23:22:21 +020050 Um Speicher zu sparen, kann man bei Blueprints von der Konfigurierung
51 absehen (siehe Beispiel). Dies sollte man allerdings nicht bei Objekten
52 machen, von denen keine Clones erzeugt werden sollen (zB. bei Raeumen).
Zesstra18626972017-01-31 10:38:27 +010053
Bugfix95b19bc2018-10-27 23:22:21 +020054 Man sollte bei Abbruch des create() in BP unbedingt set_next_reset(-1);
55 rufen, da sonst die (nicht konfigurierte) BP resetten kann und dann
56 buggt.
Zesstra18626972017-01-31 10:38:27 +010057
58BEISPIELE
59---------
Zesstra18626972017-01-31 10:38:27 +010060
Bugfix95b19bc2018-10-27 23:22:21 +020061 Ein Gegenstand wuerde wie folgt konfiguriert:
Zesstra18626972017-01-31 10:38:27 +010062
Bugfix95b19bc2018-10-27 23:22:21 +020063.. code-block:: pike
Zesstra18626972017-01-31 10:38:27 +010064
Bugfixe8cc3cb2018-10-27 23:29:04 +020065 inherit "/std/thing";
Zesstra18626972017-01-31 10:38:27 +010066
Bugfix95b19bc2018-10-27 23:22:21 +020067 #include <properties.h>
Zesstra18626972017-01-31 10:38:27 +010068
Bugfixe8cc3cb2018-10-27 23:29:04 +020069 protected void create()
Bugfix95b19bc2018-10-27 23:22:21 +020070 {
71 // Wenn wir die Blueprint sind: NICHT konfigurieren!
Bugfixe8cc3cb2018-10-27 23:29:04 +020072 // Bei normalen Raeumen oder Transportern sind diese
Bugfix95b19bc2018-10-27 23:22:21 +020073 // Zeilen wegzulassen!!!
Bugfixe8cc3cb2018-10-27 23:29:04 +020074 if (!clonep(this_object()))
75 {
Bugfix95b19bc2018-10-27 23:22:21 +020076 set_next_reset(-1); // wichtig, damit die BP nicht resettet.
77 return;
78 }
Zesstra18626972017-01-31 10:38:27 +010079
Bugfix95b19bc2018-10-27 23:22:21 +020080 // Ansonsten die allgemeinen Eigenschaften von /std/thing
81 // konfigurieren...
82 ::create();
83
84 // ...und nun unsere speziellen Eigenschaften:
85 SetProp(P_NAME, "Muell");
86 SetProp(P_SHORT, "Muell");
87 SetProp(P_LONG, "Voellig unnuetzer Muell!\n");
88 SetProp(P_ARTICLE, 0);
89 SetProp(P_VALUE, 0);
90 SetProp(P_GENDER, MALE);
91 }
Zesstra18626972017-01-31 10:38:27 +010092
93SIEHE AUCH
94----------
Zesstra18626972017-01-31 10:38:27 +010095
Bugfixe8cc3cb2018-10-27 23:29:04 +020096 :doc:`create`, :doc:`reset`, :doc:`create_super`
97 set_next_reset()
Zesstra18626972017-01-31 10:38:27 +010098
Bugfixe8cc3cb2018-10-27 23:29:04 +020099Letzte Aenderung: 27.10.2018, Bugfix