blob: 2b399984ccc90c904923285aea0bfdcbf1e6fbb7 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001Query()
2FUNKTION:
3 public varargs mixed Query(string name, int Type);
4
5DEFINIERT IN:
6 /std/thing/properties.c
7
8ARGUMENTE:
9 string name - Property, deren Wert(e) ausgelesen werden
10 int type - Art der gewuenschten Information.
11
12BESCHREIBUNG:
13 Der Wert einer der inneren Eigenschaften der Property 'name' wird
14 zurueckgegeben. 'Type' ist dabei einer der in /sys/thing/properties.h
15 und folgend aufgelisteten F_XXX-Werte:
16
17 F_VALUE (==0, Default)
18 Unter Umgehung einer eventuell vorhandenen Abfragemethode oder
19 _query_'name'() wird der Datenwert der Property 'name'
20 zurueckgegeben.
21 F_MODE
22 Die internen Flags der Property werden zurueckgegeben.Dies koennen
23 (logisch mit & verknuepft) sein:
24 SAVE - Property soll bei save_object() gespeichert werden
25 PROTECTED - Objekt selbst/EM/Root kann Property manipulieren
26 SECURED - wie PROTECTED, das Flag kann aber nicht
27 zurueckgesetzt werden (immer SECURED)
28 NOSETMETHOD - niemand kann Property manipulieren
29 (auch kein F_SET_METHOD oder _set_'name'())
30 F_SET_METHOD
31 Ein eventuell fuer die Property eingetragene F_SET_METHOD wird
32 zurueckgegeben.
33 (_set_'name'()-Methoden werden so nicht aufgefuehrt!)
34 F_QUERY_METHOD
35 Ein eventuell fuer die Property eingetragene F_QUERY_METHOD wird
36 zurueckgegeben.
37 (_query_'name'()-Methoden werden so nicht aufgefuehrt!)
38
39RUeCKGABEWERT:
40 Die gewuenschte Eigenschaft, abhaengig von 'Type'.
41
42BEMERKUNGEN:
43 - Query() sollte nicht zum regulaeren Auslesen des Inhalt einer
44 Property verwendet werden, da sowohl F_QUERY_METHOD als auch
45 libinterne _query_'name'()-Methoden umgangen werden und das Ergebnis
46 fuer so veraenderte Propertys undefiniert ist
47 - _set_'name'() und _query_'name'() sind alte Propertymethoden und
48 sollten nicht in normalen Objekten benutzt werden ->
49 F_SET_METHOD/F_QUERY_METHOD (ggf. mit PROTECTED) nutzen
50 - F_SET/F_QUERY_METHODs koennen 'protected' (empfohlen) oder 'static'
51 sein. _set_/_query_ duerfen momentan _nicht_ 'protected' sein, fuer
52 diese geht nur 'static' (in diesem Fall empfohlen).
53
54BEISPIELE:
55 // Auslesen des Wertes unter Umgehung einer Abfragemethode
56 Query(P_XYZ, F_VALUE);
57
58 // Auslesen der Flags erfaehrt man mit:
59 Query(P_XYZ, F_MODE);
60
61 // sauberes Programmieren, wir wollen eine F_QUERY_METHOD setzen,
62 // pruefen vorher auf Existenz:
63 if(this_player()->Query(P_FROG, F_QUERY_METHOD) {
64 write(break_string(
65 "Ich kann dich nicht weiter vor Froschsein schuetzen!",
66 "Der Magier winkt ab: ", 78));
67 say(break_string(
68 "Ich kann dich nicht weiter vor Froschsein schuetzen!",
69 "Der Magier sagt zu "+this_player()->name(WEM)+": ", 78));
70 } else {
71 this_player()->Set(P_FROG, #'query_protect_frog, F_QUERY_METHOD);
72 ...
73 }
74
75SIEHE AUCH:
76 Aehnliches: SetProp(L), QueryProp(L), Set(L)
77 Generell: SetProperties(L), QueryProperties(L)
78 Konzept: properties, /std/thing/properties.c
79 Sonstiges: P_AUTOLOADOBJ
80
8128.03.2008, Zesstra