Lpc Manpages

STANDARD KLASSE:
	"/std/thing" 

BENUTZUNG:
	inherit "/std/thing";

	#include <thing.h>
	#include <properties.h>

PROPERTIES:
	<thing/commands>
		P_COMMANDS	-- Befehle assoziiert mit dem Objekt
	<thing/description>
		P_NAME		-- Name
		P_NAME_ADJ	-- Namensadjektiv
		P_SHORT		-- Kurzbeschreibung
		P_LONG		-- Langbeschreibung
		P_IDS		-- Identifikatoren (Feld von Zeichenketten)
		P_ADJECTIVES	-- Adjektive zur Beschreibung
	<thing/language>
		P_ARTICLE	-- Artikel des Objekts
		P_GENDER	-- Geschlecht des Objekts
	<thing/moving>
		P_NODROP	-- Kann nicht fallengelassen werden
		P_NOGET		-- Kann nicht genommen werden
	<thing/properties>
		P_UID		-- User ID
		P_EUID		-- Effektive User ID
	<thing/restrictions>
		P_WEIGHT	-- Gewicht des Objekts
		P_TOTAL_WEIGHT	-- Gewicht inklusive des Inhalts
	<thing/material>
		P_MATERIAL	-- Material aus dem ein Gegenstand besteht
			
MAKROS:
	<thing/properties>
		F_VALUE		-- Propertywert
                F_MODE          -- Propertymodus umschalten
                F_MODE_AS       -- Propertymodus setzen
                F_MODE_AD       -- Propertymodus loeschen
		  SAVE		  -- Property wird gespeichert
		  PROTECTED	  -- Property is geschuetzt
		  SECURED	  -- Property kann nie mehr geaendert werden
		  NOSETMETHOD	  -- Property besitzt keine Setzfunktion
		F_SET_METHOD	-- Funktion zum setzen der Property
		F_QUERY_METHOD	-- Funktion zum lesen der Property
	<thing/language>
		MALE, FEMALE, NEUTER 	-- Geschlechter
		WER, WESSEN, WEM, WEN 	-- Fall
		RAW 			-- fuer Namen ohne Artikel
		SINGULAR, PLURAL 	-- Anzahl (Einzahl/Mehrzahl)
	<thing/material>
		MAT_MISC	-- Default fuer alle Objekte
		MAT_WOOD	-- Holz (pflanzliches Material)
		MAT_HORN	-- Horn (tierisches Material)
		MAT_LEATHER	-- Leder
		MAT_CLOTH	-- (Kleidungs-)Stoff
		MAT_STONE	-- Stein
		MAT_GLASS	-- Glas
		MAT_CERAMIC	-- Keramik
		MAT_METAL	-- Metall, unspezifiziert
		MAT_ICE		-- Eis
		MAT_MAGIC	-- 'magisch', z.B. eine Keule aus Wasser
		MAT_IRON	-- Eisen und Stahl
		MAT_SILVER	-- Silber
		MAT_GOLD	-- Gold
		PREDEFINED_MATERIALS	-- Array aller Materialien
	
FUNKTIONEN:
	"/std/thing/commands":
		varargs void AddCmd(mixed cmd, mixed func, int flag);
		varargs void RemoveCmd(mixed cmd);
	"/std/thing/description":
		varargs int id(string str, int lvl);
		void AddId(mixed str);
		void AddAdjective(mixed str);
		string name(int casus,int demon);
	"/std/thing/language":
		varargs string QueryArticle(int casus, int dem, int force);
		varargs int SuggestArticle(string id);
		varargs string QueryPossPronoun(mixed what, int casus, 
		                                int number);
		string QueryPronoun(int casus);
		varargs string QueryDu( int casus, int gender, int zahl);
		string QueryGenderString();
		varargs string DeclAdj( string adj, int casus, int demon);
                varargs string MakeString( string str,
                                           object obj1, object obj2,
                                           object obj3, object obj4);
	"/std/thing/properties":
		varargs mixed Set( string name, mixed Value, int Type); 
		varargs mixed Query( string name, int Type);
		mixed SetProp( string name, mixed value);
		mixed QueryProp( string name);
		void SetProperties( mapping props);
		mapping QueryProperties();
	"/std/thing/moving":
		int move( mixed dest, int method);
		varargs int remove();
	"/std/thing/material":
		varargs string mat2string( string mat, int casus);
		string MatList( int casus);

ERLAEUTERUNG:
	"/std/thing" ist eine allgemeine Klasse fuer Objekte aller Art.
	Sie bietet Funktionalitaeten zur Erstellung von neuen Klassen und
        Objekten. Sie kann mittels der zur Verfuegung stehenden Funktionen
        konfiguriert werden:

     ** "/std/thing/commands":
	varargs void AddCmd(mixed cmd, mixed func, int flag);
	  Um dem Objekt die Moeglichkeit zu geben, auf Befehle zu reagieren,
	  kann mit AddCmd() Kommandos definiert werden, die eine bestimmte
	  Funktion (func) aufrufen. flag entscheidet darueber, ob das Kommando
	  (cmd) abgekuerzt werden kann (flag = 1) oder nicht (flag = 0).

	varargs void RemoveCmd(mixed cmd);
	  Man kann die Kommandos jederzeit wieder mit der Funktion RemoveCmd()
	  entfernen.

     ** "/std/thing/description":
	varargs int id(string str, int lvl);
	  Die Funktion id() behandelt die Identifikatoren eines Objektes, 
	  welche in der Property P_IDS gespeichert sind. Jedesmal, wenn ein
	  Objekt durch Kommandos wie "nimm", "lass fallen" etc referenziert
	  werden soll, wird id() mit dem Namen des Objektes aufgerufen. Dabei
	  werden dann die Elemente von P_IDS mit str verglichen und das Ergeb-
	  nis (WAHR/FALSCH == 1/0) zurueckgegeben. lvl ist fuer die Behandlung
	  von Lebewesen notwendig, siehe living.
	
	void AddId(mixed str);
	  Mittels dieser Funktion kann ein oder mehrere neue Identifikatoren
	  der Liste der bestehenden, Standard ist "ding", hinzugefuegt werden.

	void AddAdjective(mixed str);
	  Um den Objekten die Moeglichkeit zu geben, sich besser zu beschreiben
	  oder zur besseren Identifizierung, kann man mit AddAdjective() dem
	  Objekt naeher beschreibende Adjektive hinzufuegen. Diese sind in
	  P_ADJECTIVES gespeichert.

	string name(int casus,int demon);
	  Diese Funktion liefert den Namen des Objektes mit allen zusaetzlichen
	  Attributen im gewuenschten Fall (casus), demonstrativ (demon = 1) 
	  oder nicht demonstrativ (demon = 0).

     ** "/std/thing/language":
	varargs string QueryArticle(int casus, int dem, int force);
	  Artikel im passenden Fall sowie demonst. bzw undemonst. zurueck-
	  geben. force ueberschreibt das SetArticle-Flag.

	varargs int SuggestArticle(string id);
	  Empfehle einen Artikel fuer das Objekt, getestet wird, ob ausser
	  diesem Objekt sich ein anderes Objekt mit der id im selben
	  Raum befindet.

	varargs string QueryPossPronoun(mixed what, int casus, int number);
	  Gib ein Pronomen zurueck, das ausdrueckt, das ein Objekt diesem
	  Objekt gehoert. Dabei ist what das Geschlecht des Objektes.

	string QueryPronoun( casus );
	  Er/Sie/Es u.ae. zurueckgeben.

	varargs string QueryDu(int casus,int gender, int zahl);
	  Du im passenden Fall zurueckgeben (siehe QueryArticle()).

	string QueryGenderString();
	  Gibt das Geschlecht in Worten zurueck.

	varargs string DeclAdj(string adj, int casus, int demon); 
	  Dekliniere Adjektive adj mit Casus casus.

        varargs string MakeString( string str, object obj1, object obj2,
                                               object obj3, object obj4);
          Eine allgemeine Ersetzungsfunktion fuer due Textausgabe. Sie kann
          entsprechende Platzhalter durch Namen, Pronomen. Possessivpronomen
          und Artikel fuer bis zu fuenf verschiedene Objekte in einem String
          ersetzen.

     ** "/std/thing/properties":
	varargs mixed Set(string name, mixed Value, int Type); 
	  Setze einen Wert einer Property direkt, wobei der Typ des Wertes
	  (Value) durch F_VALUE, F_MODE, F_SET_METHOD, F_QUERY_METHOD (Type)
	  angegeben wird. 
	  F_VALUE -- darf ein beliebiger Wert sein
	  F_MODE  -- muss eine Zahl sein (SAVE, PROTECTED, SECURED, 
	             NOSETMETHOD)
	  F_SET_METHOD, F_QUERY_METHOD -- 0 oder eine Closure

	varargs mixed Query(string name, int Type);
	  Lies den Wert einer Property aus. Dabei gibt Type an, welchen Wert
	  (F_VALUE, F_MODE, F_SET_METHOD, F_QUERY_METHOD) man auslesen will.

	mixed SetProp(string name, mixed Value);
	  Setze den Wert einer Property. Dabei wird, falls vorhanden, der Wert
	  noch durch die F_SET_METHOD behandelt (z.B. Typueberpruefung).
	  Dies sollte die Standardmethode zum Setzen einer Property sein!
  
	mixed QueryProp(string name);
	  Lies den Wert einer Property, wobei der eigentliche Wert durch die,
	  falls vorhanden, F_QUERY_METHOD behandelt wird. Als Beispiel dient
	  hier die Behandlung des Gesamtgewichts, welches durch Abfragen von
	  P_TOTAL_WEIGHT ausgelesen werden kann; hierbei errechnet die 
	  F_QUERY_METHOD von P+_TOTAL_WEIGHT erst das totale Gewicht.
	  Dies sollte die Standardmethode sein um eine Property auszulesen!

	void SetProperties(mapping props);
	  Diese Funktion kann die in props gespeicherten Properties im Objekt
	  unterbringen. Dabei werden schon vorher als PROTECTED oder SECURED
	  gekennzeichnete Properties NICHT ueberschrieben.

	mapping QueryProperties();
	  Liefert ein mapping, welches von SetProperties() behandelt werden
	  kann.

     ** "/std/thing/moving":
	int move(mixed dest,int method);
	  Jedesmal, wenn ein Objekt bewegt werden soll, wird die Funktion
	  move() aufgerufen, welche dann das eigentliche Bewegen ausfuehrt.
	  Dazu muss der Funktion ein Ziel (dest) als Zeichenkette oder als
	  Objekt und eine Methode der Bewegung uebergeben werden.
	
	varargs int remove();
	  Wird ein Objekt zerstoert, wird die Funktion remove() aufgerufen.
	  Rueckgabewert 1 bedeutet Erfolg und 0 Misserfolg der Zerstoerung.

     ** "/std/thing/material":
	varargs string mat2string(string mat, int casus);
	  Wandelt eine Materialkonstante in einen lesbaren String, wobei
	  'casus' beachtet wird. So ergibt z.B. mat2string(MAT_WOOD, WESSEN)
	  den String "Holzes". Die Konstante PREDEFINED_MATERIALS enthaelt
	  ein Array aller vordefinierten Materialkonstanten, nuetzlich,
	  wenn man 'mat2string' ueberschreiben will, um selbstdefinierte
	  Materialkonstanten auszugeben.

	string MatList(int casus);
	  Gibt eine Liste aller Materialien aus, aus denen das Objekt besteht.

VERERBUNGSBAUM:
	thing
	  |-thing/commands
	  |-thing/description
	  |-thing/language
	  |-thing/moving
	  |-thing/properties
	  |-thing/restrictions
	  `-thing/material

SIEHE AUCH:
	properties, closures

DOKUMENTIERT
        Erstellungsadtum und Autor unbekannt.
        09.10.1999  Tyron  MakeString() ergaenzt, kleinere Fehlerkorrekturen