Lpc Manpages

STANDARDOBJEKT FUER LAEDEN:
 
BENUTZUNG:
  inherit "std/laden";

  #include <laden.h>

BESCHREIBUNG:
  Basisklasse fuer alle Laeden.

  Properties:

    P_SPECIAL_SHOP
      Spezieller Laden. Enthaelt P_SPECIAL_SHOP ein leeres Mapping, kauft der
      Laden NICHTS mehr an.

                 
      Enthalet P_SPECIAL_SHOP ein Mapping, das wie folgt aufgebaut ist, dann
      kauft der Laden nur Objekte an, die sich mit den Eintraegen in diesem
      Mapping ansprechen lassen:

      ([
        SHOP_SPECIAL_X: ({wert1, wert 2, ...}),
      ])


      X steht hierbei fuer (definiert in /sys/laden.h):

      CLASS:   Objekt-Klassen
      IDS  :   Objekt-IDs
      PATHS:   Objekt-Paths
      PROPS:   Objekt-Properties
      TYPES:   Objekt-Types

    P_SHOP_STORE_ITEMS
      Enthaelt ein Array mit den Objekten, die der Laden verkaufen soll

      1. Eintrag: Das Objekt mit Pfadangabe. Z.B.: "/obj/fackel"
      2. Eintrag: Die Anzahl, die der Laden davon auf Vorrat haben soll.
      3. Eintrag: (Optional) Properties, die erst beim Klonen der Objekte 
                  gesetzt werden sollen.
      ({
        ({ "object_pfad",        Anzahl,  ([
                                            PROP:   WERT,
                                            ...
                                          ]) }),
      })
      
    P_SHOP_STORAGE_ROOM
      Nur lesebar! Wird automatisch vom STD-Laden gesetzt. Die Stores
      befinden sich alle in /p/stores/.
      Enthaelt den Pfad des Lagers des Ladens.

    P_SHOP_KEEPER
      ID des Laden-Besitzers. Ist dieser nicht anwesend, kann man im Laden
      weder etwas kaufen, verkaufen oder sich etwas zeigen lassen.

    P_SHOP_SELL_IN_FIGHT
      Wenn P_SHOP_KEEPER gesetzt. Legt fest, ob der SHOP_KEEPER im Kampf
      Waren zeigen oder verkaufen darf. Default: 0, er darf nicht.

    P_SHOP_MSGS
      Ein Mapping mit den diversen Meldungen des Ladens:
      ([
        0:     Meldung_1,
        1:     Meldung 2,
      ])

      Welche Meldungen fuer die Keys des Mappings stehen, laesst sich in 
      /std/laden.c nachlesen.

      Die Meldungen koennen veraendert werden, um den Laden besser zu
      Personalisieren.

      Die Meldungen koennen einen String enthalten oder eine Closure, die
      allerdings wieder einen String zurueck geben muss.

      Die Meldungen gehen durch MakeString(), so dass alle MakeString()
      Parameter benutzt werden koennen.

      Man muss nicht alle Meldungen aendern, einzelne gehen auch. Dabei
      wird der fehlende Rest mit den STD-Meldungen aufgefuellt.

    P_SHOP_TRASH_CAN
      1: Der Laden hat einen Muelleimer (Default).
      0: Der Laden hat keinen Muelleimer.
 
BEISPIELE:
      Ein Laden, der nur Lichtquellen oder Objekte aus /obj/ ankauft:

        SetProp(P_SPECIAL_SHOP,
        ([
          SHOP_SPECIAL_PATHS:  ({"/obj/"}),
          SHOP_SPECIAL_PROPS:  ({P_FUEL}),
        ]));

      Man kann z.B. Lichtquellen auch ueber den Objekt-Typ angeben. Diese
      sind in /sys/object_types.h definiert:

        SetProp(P_SPECIAL_SHOP,
        ([
          SHOP_SPECIAL_TYPE: ({OT_LIGHTSOURCE})
        ]));

      Ein Laden, der gar nichts ankauft:
        
        SetProp(P_SPECIAL_SHOP,
        ([
        ]));
      
      Ein Laden, der einen Verkaeufer besitzt, ohne den nichts mehr geht:
       
        SetProp(P_SHOP_KEEPER,"ladenbesitzer\n");

      Ein Laden, dessen Meldungen geaendert wurden:

        mapping msg;

        msg = QueryProp(P_SHOP_MSGS);

        // msg[7] waere normalerweise: 
        // "Ich bin vollkommen pleite. Tut mir leid!", nachzulesen in
        // /std/laden.c

        msg[7] = break_string("Ich habe leider ein kleines, finanzielles "
                 "Problem",0,"Der Haendler sagt: );
        
        // alternativ kann msg[7] auch eine Closure sein:

        msg[7] = #'Meine_Funktion;

        // Die geaenderte msg[7] bzw. die ganze Property P_SHOP_MSGS muss 
        // nicht zurueck geschrieben werden, sondern ist sofort wirksam,
        // da man bei Mappings nicht mit Kopien arbeitet, sondern immer nur
        // mit Referenzen, es sei denn, man kopiert ein Mapping mit
        // copy_mapping()
         
      Ein Laden, dessen Meldungen ueber eine Property geaendert wird:
        
       #include <laden.h>

       inherit "/std/laden";

       void create()
       {
         ::create();
          
         SetProp(P_SHOP_MSGS,
         ([
           0:    "Wir kaufen nix!",
 
           5:    "Ich bin pleite!",
         ]));
       }

       // Fehlende Werte in diesem Mapping (1 bis 4, 6 bis Rest) werden
       // durch STD-Meldungen aufgefuellt.

DOKUMENTIERT:
  03.04.2015 von It@AnderLand

SIEHE AUCH:
  MakeString(), P_CURRENCY