Start Info Community Spielen
 
 

Morgengrauner Dokumentation

Dateipfad: /home/mud/mudlib/doc//std/unit

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


zurück zur Übersicht

FEEDBACK | IMPRESSUM | DATENSCHUTZ 1992–2019 © MorgenGrauen. Alle Rechte vorbehalten.