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