MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | STANDARD KLASSE: |
| 2 | "/std/thing" |
| 3 | |
| 4 | BENUTZUNG: |
| 5 | inherit "/std/thing"; |
| 6 | |
| 7 | #include <thing.h> |
| 8 | #include <properties.h> |
| 9 | |
| 10 | PROPERTIES: |
| 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 | |
| 33 | MAKROS: |
| 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 | |
| 51 | FUNKTIONEN: |
| 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 | |
| 80 | ERLAEUTERUNG: |
| 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 | |
| 195 | VERERBUNGSBAUM: |
| 196 | thing |
| 197 | |-thing/commands |
| 198 | |-thing/description |
| 199 | |-thing/language |
| 200 | |-thing/moving |
| 201 | |-thing/properties |
| 202 | `-thing/restrictions |
| 203 | |
| 204 | SIEHE AUCH: |
| 205 | properties, closures |