Morgengrauner Dokumentation
Dateipfad: /home/mud/mudlib/doc//std/unitUnits
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
zurück zur Übersicht