
SetAttribute()
**************


FUNKTION
========

   int SetAttribute(string attr, int val)


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

   /std/living/attributes.c


ARGUMENTE
=========

   attr       - zu setzendes Attribut
   val        - Wert


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

   Nimm val als Gesamtwert des Attributes, d.h. zieht etwaige Offsets vor
   Setzen ab. (QueryAttribute gibt dann also val zurueck)


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

   Den durch SetAttr gefilterten gesetzten Wert.
   Bitte nicht auf Spieler anwenden!


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
