blob: 7de3019a18317f075bb785aee0c2c68261ce2fca [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();
8 void create();
Zesstra18626972017-01-31 10:38:27 +01009
10DEFINIERT IN
11------------
Zesstra18626972017-01-31 10:38:27 +010012
Bugfix95b19bc2018-10-27 23:22:21 +020013 allen Standardobjekten
Zesstra18626972017-01-31 10:38:27 +010014
15ARGUMENTE
16---------
Zesstra18626972017-01-31 10:38:27 +010017
Bugfix95b19bc2018-10-27 23:22:21 +020018 keine
Zesstra18626972017-01-31 10:38:27 +010019
20BESCHREIBUNG
21------------
Zesstra18626972017-01-31 10:38:27 +010022
Bugfix95b19bc2018-10-27 23:22:21 +020023 Diese Funktion wird aufgerufen, wenn ein Objekt geladen oder geclont
24 wird.
25 In dieser Funktion wird das Objekt initialisiert und konfiguriert.
26 Waehrend des create() kann es einen this_player()/this_interactive()
27 geben, muss aber nicht!
28 Im create() hat das Objekt noch kein environment().
29 create() wird nur gerufen, wenn das Objekte geclont oder explizit geladen
30 wird. Wenn es aufgrund eines inherit in einem anderen Objekt vom Driver
31 geladen wird, wird das create() nicht ausgefuehrt (s. create_super()).
Zesstra18626972017-01-31 10:38:27 +010032
33RUeCKGABEWERT
34-------------
Zesstra18626972017-01-31 10:38:27 +010035
Bugfix95b19bc2018-10-27 23:22:21 +020036 keiner
Zesstra18626972017-01-31 10:38:27 +010037
38BEMERKUNGEN
39-----------
Zesstra18626972017-01-31 10:38:27 +010040
Bugfix95b19bc2018-10-27 23:22:21 +020041 Erbt man von anderen Objekten, so besteht die erste Aktion innerhalb
42 von create() normalerweise darin, in diesen Objekten create()
43 aufzurufen.
44 Die Funktion kann protected oder static sein (aber nicht private). Es
45 duerfte fuer die meisten Objekte sinnvoll sein, create() protected zu
46 deklarieren.
Zesstra18626972017-01-31 10:38:27 +010047
Bugfix95b19bc2018-10-27 23:22:21 +020048 Um Speicher zu sparen, kann man bei Blueprints von der Konfigurierung
49 absehen (siehe Beispiel). Dies sollte man allerdings nicht bei Objekten
50 machen, von denen keine Clones erzeugt werden sollen (zB. bei Raeumen).
Zesstra18626972017-01-31 10:38:27 +010051
Bugfix95b19bc2018-10-27 23:22:21 +020052 Man sollte bei Abbruch des create() in BP unbedingt set_next_reset(-1);
53 rufen, da sonst die (nicht konfigurierte) BP resetten kann und dann
54 buggt.
Zesstra18626972017-01-31 10:38:27 +010055
56BEISPIELE
57---------
Zesstra18626972017-01-31 10:38:27 +010058
Bugfix95b19bc2018-10-27 23:22:21 +020059 Ein Gegenstand wuerde wie folgt konfiguriert:
Zesstra18626972017-01-31 10:38:27 +010060
Bugfix95b19bc2018-10-27 23:22:21 +020061.. code-block:: pike
Zesstra18626972017-01-31 10:38:27 +010062
Bugfix95b19bc2018-10-27 23:22:21 +020063 inherit "std/thing";
Zesstra18626972017-01-31 10:38:27 +010064
Bugfix95b19bc2018-10-27 23:22:21 +020065 #include <properties.h>
Zesstra18626972017-01-31 10:38:27 +010066
Bugfix95b19bc2018-10-27 23:22:21 +020067 create()
68 {
69 // Wenn wir die Blueprint sind: NICHT konfigurieren!
70 // Bei normalen Raeumen oder Transportern sind diese beiden
71 // Zeilen wegzulassen!!!
72 if (!clonep(this_object())) {
73 set_next_reset(-1); // wichtig, damit die BP nicht resettet.
74 return;
75 }
Zesstra18626972017-01-31 10:38:27 +010076
Bugfix95b19bc2018-10-27 23:22:21 +020077 // Ansonsten die allgemeinen Eigenschaften von /std/thing
78 // konfigurieren...
79 ::create();
80
81 // ...und nun unsere speziellen Eigenschaften:
82 SetProp(P_NAME, "Muell");
83 SetProp(P_SHORT, "Muell");
84 SetProp(P_LONG, "Voellig unnuetzer Muell!\n");
85 SetProp(P_ARTICLE, 0);
86 SetProp(P_VALUE, 0);
87 SetProp(P_GENDER, MALE);
88 }
Zesstra18626972017-01-31 10:38:27 +010089
90SIEHE AUCH
91----------
Zesstra18626972017-01-31 10:38:27 +010092
Bugfix95b19bc2018-10-27 23:22:21 +020093 :doc:`create`, :doc:`reset`
94 hook(C), create(H), create_ob(H), create_super(H, reset(H)
95 create(A), reset(A)
Zesstra18626972017-01-31 10:38:27 +010096
9722.10.2007, Zesstra
98