blob: 445b462b33a214414190c21833011a1c09703c46 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001STANDARD KLASSE:
2 "/std/thing"
3
4BENUTZUNG:
5 inherit "/std/thing";
6
7 #include <thing.h>
8 #include <properties.h>
9
10PROPERTIES:
11 <thing/commands>
12 P_COMMANDS -- Befehle assoziiert mit dem Objekt
13 <thing/description>
14 P_NAME -- Name
15 P_NAME_ADJ -- Namensadjektiv
16 P_SHORT -- Kurzbeschreibung
17 P_LONG -- Langbeschreibung
18 P_IDS -- Identifikatoren (Feld von Zeichenketten)
19 P_ADJECTIVES -- Adjektive zur Beschreibung
20 <thing/language>
21 P_ARTICLE -- Artikel des Objekts
22 P_GENDER -- Geschlecht des Objekts
23 <thing/moving>
24 P_NODROP -- Kann nicht fallengelassen werden
25 P_NOGET -- Kann nicht genommen werden
26 <thing/properties>
27 P_UID -- User ID
28 P_EUID -- Effektive User ID
29 <thing/restrictions>
30 P_WEIGHT -- Gewicht des Objekts
31 P_TOTAL_WEIGHT -- Gewicht inklusive des Inhalts
32
33MAKROS:
34 <thing/properties>
35 F_VALUE -- Propertywert
36 F_MODE -- Propertymodus umschalten
37 F_MODE_AS -- Propertymodus setzen
38 F_MODE_AD -- Propertymodus loeschen
39 SAVE -- Property wird gespeichert
40 PROTECTED -- Property is geschuetzt
41 SECURED -- Property kann nie mehr geaendert werden
42 NOSETMETHOD -- Property besitzt keine Setzfunktion
43 F_SET_METHOD -- Funktion zum setzen der Property
44 F_QUERY_METHOD -- Funktion zum lesen der Property
45 <thing/language>
46 MALE, FEMALE, NEUTER -- Geschlechter
47 WER, WESSEN, WEM, WEN -- Fall
48 RAW -- fuer Namen ohne Artikel
49 SINGULAR, PLURAL -- Zeiten
50
51FUNKTIONEN:
52 "/std/thing/commands":
53 varargs void AddCmd(mixed cmd, mixed func, int flag);
54 varargs void RemoveCmd(mixed cmd);
55 "/std/thing/description":
56 varargs int id(string str, int lvl);
57 void AddId(mixed str);
58 void AddAdjective(mixed str);
59 string name(int casus,int demon);
60 "/std/thing/language":
61 varargs string QueryArticle(int casus, int dem, int force);
62 varargs int SuggestArticle(string id);
63 varargs string QueryPossPronoun(mixed what, int casus,
64 int number);
65 string QueryPronoun(int casus);
66 varargs string QueryDu(int casus,int gender, int zahl);
67 string QueryGenderString();
68 varargs string DeclAdj(string adj, int casus, int demon);
69 "/std/thing/properties":
70 varargs mixed Set(string name, mixed Value, int Type);
71 varargs mixed Query(string name, int Type);
72 mixed SetProp(string name, mixed Value);
73 mixed QueryProp(string name);
74 void SetProperties(mapping props);
75 mapping QueryProperties();
76 "/std/thing/moving":
77 int move(mixed dest,int method);
78 varargs int remove();
79
80ERLAEUTERUNG:
81 "/std/thing" ist eine generelle Klasse fuer Objekte aller Art.
82 Es bietet generelle Funktionalitaet zur Erstellung von neuen
83 Klassen und Objekten. Sie kann mittels der zur Verfuegung
84 stehenden Funktionen konfiguriert werden:
85
86 ** "/std/thing/commands":
87 varargs void AddCmd(mixed cmd, mixed func, int flag);
88 Um dem Objekt die Moeglichkeit zu geben, auf Befehle zu reagieren,
89 kann mit AddCmd() Kommandos definiert werden, die eine bestimmte
90 Funktion (func) aufrufen. flag entscheidet darueber, ob das Kommando
91 (cmd) abgekuerzt werden kann (flag = 1) oder nicht (flag = 0).
92
93 varargs void RemoveCmd(mixed cmd);
94 Man kann die Kommandos jederzeit wieder mit der Funktion RemoveCmd()
95 entfernen.
96
97 ** "/std/thing/description":
98 varargs int id(string str, int lvl);
99 Die Funktion id() behandelt die Identifikatoren eines Objektes,
100 welche in der Property P_IDS gespeichert sind. Jedesmal, wenn ein
101 Objekt durch Kommandos wie "nimm", "lass fallen" etc referenziert
102 werden soll, wird id() mit dem Namen des Objektes aufgerufen. Dabei
103 werden dann die Elemente von P_IDS mit str verglichen und das Ergeb-
104 nis (WAHR/FALSCH == 1/0) zurueckgegeben. lvl ist fuer die Behandlung
105 von Lebewesen notwendig, siehe living.
106
107 void AddId(mixed str);
108 Mittels dieser Funktion kann ein oder mehrere neue Identifikatoren
109 der Liste der bestehenden, Standard ist "ding", hinzugefuegt werden.
110
111 void AddAdjective(mixed str);
112 Um den Objekten die Moeglichkeit zu geben, sich besser zu beschreiben
113 oder zur besseren Identifizierung, kann man mit AddAdjective() dem
114 Objekt naeher beschreibende Adjektive hinzufuegen. Diese sind in
115 P_ADJECTIVES gespeichert.
116
117 string name(int casus,int demon);
118 Diese Funktion liefert den Namen des Objektes mit allen zusaetzlichen
119 Attributen im gewuenschten Fall (casus), demonstrativ (demon = 1)
120 oder nicht demonstrativ (demon = 0).
121
122 ** "/std/thing/language":
123 varargs string QueryArticle(int casus, int dem, int force);
124 Artikel im passenden Fall sowie demonst. bzw undemonst. zurueck-
125 geben. force ueberschreibt das SetArticle-Flag.
126
127 varargs int SuggestArticle(string id);
128 Empfehle einen Artikel fuer das Objekt, getestet wird, ob ausser
129 diesem Objekt sich ein anderes Objekt mit der id im selben
130 Raum befindet.
131
132 varargs string QueryPossPronoun(mixed what, int casus, int number);
133 Gib ein Pronomen zurueck, das ausdrueckt, das ein Objekt diesem
134 Objekt gehoert. Dabei ist what das Geschlecht des Objektes.
135
136 string QueryPronoun( casus );
137 Er/Sie/Es u.ae. zurueckgeben.
138
139 varargs string QueryDu(int casus,int gender, int zahl);
140 Du im passenden Fall zurueckgeben (siehe QueryArticle()).
141
142 string QueryGenderString();
143 Gibt das Geschlecht in Worten zurueck.
144
145 varargs string DeclAdj(string adj, int casus, int demon);
146 Dekliniere Adjektive adj mit Casus casus.
147
148 ** "/std/thing/properties":
149 varargs mixed Set(string name, mixed Value, int Type);
150 Setze einen Wert einer Property direkt, wobei der Typ des Wertes
151 (Value) durch F_VALUE, F_MODE, F_SET_METHOD, F_QUERY_METHOD (Type)
152 angegeben wird.
153 F_VALUE -- darf ein beliebiger Wert sein
154 F_MODE -- muss eine Zahl sein (SAVE, PROTECTED, SECURED,
155 NOSETMETHOD)
156 F_SET_METHOD, F_QUERY_METHOD -- 0 oder eine Closure
157
158 varargs mixed Query(string name, int Type);
159 Lies den Wert einer Property aus. Dabei gibt Type an, welchen Wert
160 (F_VALUE, F_MODE, F_SET_METHOD, F_QUERY_METHOD) man auslesen will.
161
162 mixed SetProp(string name, mixed Value);
163 Setze den Wert einer Property. Dabei wird, falls vorhanden, der Wert
164 noch durch die F_SET_METHOD behandelt (z.B. Typueberpruefung).
165 Dies sollte die Standardmethode zum Setzen einer Property sein!
166
167 mixed QueryProp(string name);
168 Lies den Wert einer Property, wobei der eigentliche Wert durch die,
169 falls vorhanden, F_QUERY_METHOD behandelt wird. Als Beispiel dient
170 hier die Behandlung des Gesamtgewichts, welches durch Abfragen von
171 P_TOTAL_WEIGHT ausgelesen werden kann; hierbei errechnet die
172 F_QUERY_METHOD von P+_TOTAL_WEIGHT erst das totale Gewicht.
173 Dies sollte die Standardmethode sein um eine Property auszulesen!
174
175 void SetProperties(mapping props);
176 Diese Funktion kann die in props gespeicherten Properties im Objekt
177 unterbringen. Dabei werden schon vorher als PROTECTED oder SECURED
178 gekennzeichnete Properties NICHT ueberschrieben.
179
180 mapping QueryProperties();
181 Liefert ein mapping, welches von SetProperties() behandelt werden
182 kann.
183
184 ** "/std/thing/moving":
185 int move(mixed dest,int method);
186 Jedesmal, wenn ein Objekt bewegt werden soll, wird die Funktion
187 move() aufgerufen, welche dann das eigentliche Bewegen ausfuehrt.
188 Dazu muss der Funktion ein Ziel (dest) als Zeichenkette oder als
189 Objekt und eine Methode der Bewegung uebergeben werden.
190
191 varargs int remove();
192 Wird ein Objekt zerstoert, wird die Funktion remove() aufgerufen.
193 Rueckgabewert 1 bedeutet Erfolg und 0 Misserfolg der Zerstoerung.
194
195VERERBUNGSBAUM:
196 thing
197 |-thing/commands
198 |-thing/description
199 |-thing/language
200 |-thing/moving
201 |-thing/properties
202 `-thing/restrictions
203
204SIEHE AUCH:
205 properties, closures