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