blob: 3c7505945375e3b5835c04e83c1a6174f3b8d255 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001Units
2
3DEFINIERT IN:
4 /std/unit.c
5
6BESCHREIBUNG:
7 Das Unit-Objekt kann dazu verwendet werden, um groessere Mengen
8 eines Objektes - wie Muenzen - zu erzeugen.
9
10 Das grundlegende Konzept ist, das Unit-Objekte nicht mehr nur
11 ueber ihre Namen, sondern auch ueber ihre Menge angesprochen
12 werden kann.
13
14 So wird das id() der Muenzen nicht nur 'muenzen' sondern auch
15 '3 muenzen' verstehen und auswerten koennen.
16
17 move() kann Teile des ganzen Unit-Objekts bewegen, ein neuer
18 Clone wird erzeugt und diesem der verbleibende Rest der Menge
19 zugewiesen. Nach erfolgreichem move() schaut das Unit-Objekt am
20 Zielort, ob dort evtl. bereits Units des gleichen Typs vorhanden
21 sind und vereinigt sich ggf. mit ihnen, in dem das alte Unit-
22 Objekt zerstoert wird.
23
24 Unit-Objekte werden in einigen Dinger anders programmiert, dazu
25 gehoert folgendes:
26
27 P_SHORT ES WIRD KEINE P_SHORT GESETZT!
28
29 P_AMOUNT Die Menge des Unit-Objekts 'von Haus aus',
30 also beim Clonen (daher meistens 1)
31
32 P_NAME Bei Unit-Objekten kann hier ein String-Array
33 in der Form ({ SINGULAR_NAME,PLURAL_NAME })
34 angegeben werden
35
36 SetCoinsPerUnits Wieviel ist eine bestimmte Menge wert
37 NICHT P_VALUE
38
39 SetGramsPerUnits Wieviel wiegt eine bestimmte Menge
40 NICHT P_WEIGHT
41
42 AddSingularId String-Array mit den Singular-IDs
43 AddPluralId String-Array mit den Plural-IDs
44
45 zusaetzlich koennen natuerlich IDs per AddId vergeben werden
46
47 Weiterhin verfuegen Unit-Objekte ueber die Moeglichkeit eines
48 automatischen Zerfalls. Dieser ist steuerbar ueber die Props
49 P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_QUOTA, P_UNIT_DECAY_FLAGS,
50 P_UNIT_DECAY_MIN. Hierbei wird der Zerfall von der Blueprint des
51 Unit-Objektes gesteuert, was als Zerfallsmaster fungiert, weil Clones
52 nicht unbedingt immer nen Reset haben muessen. Die entsprechenden
53 Props sollten daher in der Blueprint konfiguriert werden. (s. Manpages
54 und Beispiel)
55
56BEISPIELE:
57 Wir basteln uns ein ganz einfaches Unit-Objekt:
58
59 inherit "/std/unit";
60
61 protected void create()
62 {
63 if(!clonep(this_object())) {
64 set_next_reset(-1);
65 return;
66 }
67 ::create();
68 SetProp(P_LONG,"Das ist die kleine Leiche einer Ameise.\n");
69 SetProp(P_NAME,({ "Ameisenleiche","Ameisenleichen" }));
70 SetProp(P_AMOUNT,1); // es handelt sich um 1 einziges Objekt
71 SetCoinsPerUnits(20,10); // 10 Objekte sind 20 Muenzen wert
72 SetGramsPerUnits(1,10); // 10 Objekte wiegen 1 Gramm
73
74 AddSingularId( ({ "leiche","ameisenleiche" }) );
75 AddPluralId( ({ "leichen","ameisenleichen" }) );
76
77 AddId("\n-MeineAmeisenleiche");
78 }
79
80 Wir basteln nun ein Unitobjekt, was zerfallen soll:
81 inherit "/std/unit";
82 protected void create() {
83 // Konfig s.o. ...
84 if (!clonep()) {
85 // Zerfall alle 3h
86 SetProp(P_UNIT_DECAY_INTERVAL, 3*3600);
87 // es zerfallen jeweils 10%
88 SetProp(P_UNIT_DECAY_QUOTA, 1000);
89 // es sollen min. 10 Einheiten jeweils uebrigbleiben
90 SetProp(P_UNIT_DECAY_MIN, 10);
91 }
92 }
93
94SIEHE AUCH:
95 P_AMOUNT, P_NAME, P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_QUOTA,
96 P_UNIT_DECAY_MIN, P_UNIT_DECAY_FLAGS
97 DoDecay(), doDecayMessage(), SetGramsPerUnits(), SetCoinsPerUnits(),
98 AddSingularId(), AddPluralId(), QueryCoinsPerUnits(),
99 QueryGramsPerUnits()
100 /std/unit.c
101
10214.10.2007, Zesstra