
QueryProp()
***********


FUNKTION
========

   mixed QueryProp(string name);


DEFINIERT IN
============

   /std/thing/properties.c


ARGUMENTE
=========

   string name        - abzufragende Property


BESCHREIBUNG
============

   Der Datenwert der Property 'name' wird zurueckgegeben.

   Existiert eine F_QUERY_METHOD oder eine _query_'name'()-Methode fuer
   diese Property, so wird diese aufgerufen und ihr 'Value' uebergeben.
   Eine F_QUERY_METHOD hat dabei Vorrang vor _query_'name'(), d.h.
   _query_'name'() wird nach erfolgreicher F_QUERY_METHOD nicht mehr
   gerufen.

   (Diese Methoden nutzen dann Set(), um auf den Datenwert der Property
    'name' zurueckzugreifen. Teilweise werden aber auch interne Variablen
    so oeffentlich gemacht und sind nicht in der ueber Set/Query
    verfuegbaren Property 'name' abgelegt.)


RUeCKGABEWERT
=============

   Der Datenwert der Property.
   0, falls diese nicht existiert.


BEISPIELE
=========

   // wie hoch sind die aktuelle LP des Spielers?
   hp = this_player()->QueryProp(P_HP);


SIEHE AUCH
==========

   Aehnliches:        SetProp(L), Set(L), Query(L)
   Generell:          SetProperties(L), QueryProperties(L)
   Konzept:           properties, /std/thing/properties.c
   Sonstiges:         P_AUTOLOADOBJ

15.Dez 2004 Gloinson
