MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | Query() |
| 2 | FUNKTION: |
| 3 | public varargs mixed Query(string name, int Type); |
| 4 | |
| 5 | DEFINIERT IN: |
| 6 | /std/thing/properties.c |
| 7 | |
| 8 | ARGUMENTE: |
| 9 | string name - Property, deren Wert(e) ausgelesen werden |
| 10 | int type - Art der gewuenschten Information. |
| 11 | |
| 12 | BESCHREIBUNG: |
| 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 | |
| 39 | RUeCKGABEWERT: |
| 40 | Die gewuenschte Eigenschaft, abhaengig von 'Type'. |
| 41 | |
| 42 | BEMERKUNGEN: |
| 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 | |
| 54 | BEISPIELE: |
| 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 | |
| 75 | SIEHE 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 | |
| 81 | 28.03.2008, Zesstra |