Dokumentation zu: thing(STD)

HR Image


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_PLURAL	-- Name der Mehrzahl
		P_NAME_ADJ	-- Namensadjektiv
		P_DESCR		-- Zusaetzliche Beschreibung
		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
	
MAKROS:
	<thing/properties>
		F_VALUE		-- Propertywert
		F_MODE		-- Propertymodus
		  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 	-- Zeiten
	
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);
	"/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();

ERLAEUTERUNG:
	"/std/thing" ist eine generelle Klasse fuer Objekte aller Art.
	Es bietet generelle Funktionalitaet 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.

	** "/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.

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

SIEHE AUCH:
	properties, closures 


Start » Magierhandbuch » Docu » Std » Thing Letzte Generierung: 01.05.2021, 16:59
Valid HTML 4.01!