
QueryAttributeOffset()
**********************


FUNKTION
========

   int QueryAttributeOffset(string attr)


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

   /std/living/attributes.c


ARGUMENTE
=========

   attr       -       gesuchter AttributOffset


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

   Die Offsets des Attributs (inklusive Modifier) werden zurueckgegeben.


BEISPIELE
=========

   if(this_player()->QueryAttributeOffset(A_STR)<0)
    write("Du bist geschwaecht.\n");


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
