Query() ======= FUNKTION -------- :: public varargs mixed Query(string name, int Type); DEFINIERT IN ------------ :: /std/thing/properties.c ARGUMENTE --------- :: string name - Property, deren Wert(e) ausgelesen werden int type - Art der gewuenschten Information. BESCHREIBUNG ------------ :: Der Wert einer der inneren Eigenschaften der Property 'name' wird zurueckgegeben. 'Type' ist dabei einer der in /sys/thing/properties.h und folgend aufgelisteten F_XXX-Werte: F_VALUE (==0, Default) Unter Umgehung einer eventuell vorhandenen Abfragemethode oder _query_'name'() wird der Datenwert der Property 'name' zurueckgegeben. F_MODE Die internen Flags der Property werden zurueckgegeben.Dies koennen (logisch mit & verknuepft) sein: SAVE - Property soll bei save_object() gespeichert werden PROTECTED - Objekt selbst/EM/Root kann Property manipulieren SECURED - wie PROTECTED, das Flag kann aber nicht zurueckgesetzt werden (immer SECURED) NOSETMETHOD - niemand kann Property manipulieren (auch kein F_SET_METHOD oder _set_'name'()) F_SET_METHOD Ein eventuell fuer die Property eingetragene F_SET_METHOD wird zurueckgegeben. (_set_'name'()-Methoden werden so nicht aufgefuehrt!) F_QUERY_METHOD Ein eventuell fuer die Property eingetragene F_QUERY_METHOD wird zurueckgegeben. (_query_'name'()-Methoden werden so nicht aufgefuehrt!) RUeCKGABEWERT ------------- :: Die gewuenschte Eigenschaft, abhaengig von 'Type'. BEMERKUNGEN ----------- :: - Query() sollte nicht zum regulaeren Auslesen des Inhalt einer Property verwendet werden, da sowohl F_QUERY_METHOD als auch libinterne _query_'name'()-Methoden umgangen werden und das Ergebnis fuer so veraenderte Propertys undefiniert ist - _set_'name'() und _query_'name'() sind alte Propertymethoden und sollten nicht in normalen Objekten benutzt werden -> F_SET_METHOD/F_QUERY_METHOD (ggf. mit PROTECTED) nutzen - F_SET/F_QUERY_METHODs koennen 'protected' (empfohlen) oder 'static' sein. _set_/_query_ duerfen momentan _nicht_ 'protected' sein, fuer diese geht nur 'static' (in diesem Fall empfohlen). BEISPIELE --------- :: // Auslesen des Wertes unter Umgehung einer Abfragemethode Query(P_XYZ, F_VALUE); // Auslesen der Flags erfaehrt man mit: Query(P_XYZ, F_MODE); // sauberes Programmieren, wir wollen eine F_QUERY_METHOD setzen, // pruefen vorher auf Existenz: if(this_player()->Query(P_FROG, F_QUERY_METHOD) { write(break_string( "Ich kann dich nicht weiter vor Froschsein schuetzen!", "Der Magier winkt ab: ", 78)); say(break_string( "Ich kann dich nicht weiter vor Froschsein schuetzen!", "Der Magier sagt zu "+this_player()->name(WEM)+": ", 78)); } else { this_player()->Set(P_FROG, #'query_protect_frog, F_QUERY_METHOD); ... } SIEHE AUCH ---------- :: Aehnliches: SetProp(L), QueryProp(L), Set(L) Generell: SetProperties(L), QueryProperties(L) Konzept: properties, /std/thing/properties.c Sonstiges: P_AUTOLOADOBJ 28.03.2008, Zesstra