| Units |
| |
| DEFINIERT IN: |
| /std/unit.c |
| |
| BESCHREIBUNG: |
| Das Unit-Objekt kann dazu verwendet werden, um groessere Mengen |
| eines Objektes - wie Muenzen - zu erzeugen. |
| |
| Das grundlegende Konzept ist, das Unit-Objekte nicht mehr nur |
| ueber ihre Namen, sondern auch ueber ihre Menge angesprochen |
| werden kann. |
| |
| So wird das id() der Muenzen nicht nur 'muenzen' sondern auch |
| '3 muenzen' verstehen und auswerten koennen. |
| |
| move() kann Teile des ganzen Unit-Objekts bewegen, ein neuer |
| Clone wird erzeugt und diesem der verbleibende Rest der Menge |
| zugewiesen. Nach erfolgreichem move() schaut das Unit-Objekt am |
| Zielort, ob dort evtl. bereits Units des gleichen Typs vorhanden |
| sind und vereinigt sich ggf. mit ihnen, in dem das alte Unit- |
| Objekt zerstoert wird. |
| |
| Unit-Objekte werden in einigen Dinger anders programmiert, dazu |
| gehoert folgendes: |
| |
| P_SHORT ES WIRD KEINE P_SHORT GESETZT! |
| |
| P_AMOUNT Die Menge des Unit-Objekts 'von Haus aus', |
| also beim Clonen (daher meistens 1) |
| |
| P_NAME Bei Unit-Objekten kann hier ein String-Array |
| in der Form ({ SINGULAR_NAME,PLURAL_NAME }) |
| angegeben werden |
| |
| SetCoinsPerUnits Wieviel ist eine bestimmte Menge wert |
| NICHT P_VALUE |
| |
| SetGramsPerUnits Wieviel wiegt eine bestimmte Menge |
| NICHT P_WEIGHT |
| |
| AddSingularId String-Array mit den Singular-IDs |
| AddPluralId String-Array mit den Plural-IDs |
| |
| zusaetzlich koennen natuerlich IDs per AddId vergeben werden |
| |
| Weiterhin verfuegen Unit-Objekte ueber die Moeglichkeit eines |
| automatischen Zerfalls. Dieser ist steuerbar ueber die Props |
| P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_QUOTA, P_UNIT_DECAY_FLAGS, |
| P_UNIT_DECAY_MIN. Hierbei wird der Zerfall von der Blueprint des |
| Unit-Objektes gesteuert, was als Zerfallsmaster fungiert, weil Clones |
| nicht unbedingt immer nen Reset haben muessen. Die entsprechenden |
| Props sollten daher in der Blueprint konfiguriert werden. (s. Manpages |
| und Beispiel) |
| |
| BEISPIELE: |
| Wir basteln uns ein ganz einfaches Unit-Objekt: |
| |
| inherit "/std/unit"; |
| |
| protected void create() |
| { |
| if(!clonep(this_object())) { |
| set_next_reset(-1); |
| return; |
| } |
| ::create(); |
| SetProp(P_LONG,"Das ist die kleine Leiche einer Ameise.\n"); |
| SetProp(P_NAME,({ "Ameisenleiche","Ameisenleichen" })); |
| SetProp(P_AMOUNT,1); // es handelt sich um 1 einziges Objekt |
| SetCoinsPerUnits(20,10); // 10 Objekte sind 20 Muenzen wert |
| SetGramsPerUnits(1,10); // 10 Objekte wiegen 1 Gramm |
| |
| AddSingularId( ({ "leiche","ameisenleiche" }) ); |
| AddPluralId( ({ "leichen","ameisenleichen" }) ); |
| |
| AddId("\n-MeineAmeisenleiche"); |
| } |
| |
| Wir basteln nun ein Unitobjekt, was zerfallen soll: |
| inherit "/std/unit"; |
| protected void create() { |
| // Konfig s.o. ... |
| if (!clonep()) { |
| // Zerfall alle 3h |
| SetProp(P_UNIT_DECAY_INTERVAL, 3*3600); |
| // es zerfallen jeweils 10% |
| SetProp(P_UNIT_DECAY_QUOTA, 1000); |
| // es sollen min. 10 Einheiten jeweils uebrigbleiben |
| SetProp(P_UNIT_DECAY_MIN, 10); |
| } |
| } |
| |
| SIEHE AUCH: |
| P_AMOUNT, P_NAME, P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_QUOTA, |
| P_UNIT_DECAY_MIN, P_UNIT_DECAY_FLAGS |
| DoDecay(), doDecayMessage(), SetGramsPerUnits(), SetCoinsPerUnits(), |
| AddSingularId(), AddPluralId(), QueryCoinsPerUnits(), |
| QueryGramsPerUnits() |
| /std/unit.c, AddAmount() |
| |
| Letzte Aenderung: 23.02.2017, Bugfix |