
QueryAttribute()
****************


FUNKTION
========

   int QueryAttribute(string attr)


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

   /std/living/attributes.c


ARGUMENTE
=========

   attr       - interessierendes Gesamtattribut


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

   Das Attribut samt seiner Offsets (Modifier) wird zurueckgegeben.


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

   Wert des Attributes, bei Spielern nicht groesser als 30.


BEISPIELE
=========

   if (this_player()->QueryAttribute(A_CON) > 20)
     write("Du schaffst es den Berg hoch. Aber nur muehsam.\n");


BENERKUNGEN
===========

   Wenn es um Attributabfragen geht, bitte diese Methode verwenden!


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

   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
   SetAttribute(), SetRealAttribute(), UpdateAttributes(),
   SetTimedAttrModifier(), QueryTimedAttrModifier(),
   DeleteTimedAttrModifier(),
   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD,
   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c

Last modified: Tue Jul 27 20:00:20 2004 by Muadib
