MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 1 | Query() |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 2 | ******* |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 3 | |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 4 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 5 | FUNKTION |
| 6 | ======== |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 7 | |
Zesstra | e959e72 | 2025-07-09 22:11:16 +0200 | [diff] [blame^] | 8 | public mixed Query(string name, int Type = F_VALUE); |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 9 | |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 10 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 11 | DEFINIERT IN |
| 12 | ============ |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 13 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 14 | /std/thing/properties.c |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 15 | |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 16 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 17 | ARGUMENTE |
| 18 | ========= |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 19 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 20 | string name - Property, deren Wert(e) ausgelesen werden |
| 21 | int type - Art der gewuenschten Information. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 22 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 23 | |
| 24 | BESCHREIBUNG |
| 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 | |
| 54 | RUeCKGABEWERT |
| 55 | ============= |
| 56 | |
| 57 | Die gewuenschte Eigenschaft, abhaengig von 'Type'. |
| 58 | |
| 59 | |
| 60 | BEMERKUNGEN |
| 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 | |
| 75 | BEISPIELE |
| 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 | |
| 99 | SIEHE 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 User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 106 | |
| 107 | 28.03.2008, Zesstra |