SetTimedAttrModifier()

FUNKTION

int SetTimedAttrModifier(string key, mapping modifier,
                         int outdated, object dependent, mixed notify)

DEFINIERT IN

/std/living/attributes.c

ARGUMENTE

key        -       in P_TIMED_ATTR_MOD vorzunehmender oder zu
                   aendernder Eintrag
modifier   -       Mapping mit den Attributveraenderungen
outdated   -       Zeitpunkt zu dem die Attributveraenderungen
                   ablaufen sollen in Sekunden seit dem
                   1. Jan 1970, 0.0:0 GMT oder 0
dependent  -       Objekt dessen Existenz eine Bedingung fuer die
                   Attributveraenderung sein soll oder 0
notify     -       Objekt oder File das mittels
                   NotifyTimedAttrModExpired ueber
                   den Attributablauf informiert werden soll

BESCHREIBUNG

Der zu key gehoerende Eintrag wird in P_TIMED_ATTR_MOD angelegt oder
modifiziert und update_max_sp_and_hp aufgerufen.
Es empfiehlt sich auf die Eindeutigkeit des string-Parameters key
besonderes Augenmerk zu legen.

Unter dem Key key wird in P_TIMED_ATTR_MOD ein Eintrag vorgenommen,
welcher die Attribute des Livings um die in modifier stehenden Offsets
veraendert.

Diese Veraenderung ist solange aktiv bis entweder die in outdated
stehende Zeit ueberschritten ist oder das in dependent uebergebene
Objekt nicht mehr existiert.
Sind beide Argumente 0 so laeuft die Attributveraenderung nicht ab
und kann durch DeleteTimedAttrModifier geloescht werden.
Laeuft die Attributveraenderung ab, so wird der in notify angegebene
Empfaenger mittels Aufruf NotifyTimedAttrModExpired davon
benachrichtigt.
Der Funktion NotifyTimedAttrModExpired wird als Argument der key
der abgelaufenen Attributveraenderung uebergeben.

BEISPIELE

Ein NPC kann einen Spieler auf die folgende Weise solange die
Attribute um eins herabsetzen bis entweder eine Stunde verstrichen
ist oder der NPC nicht mehr existiert zum Beispiel weil er getoetet
wurde.

  player->SetTimedAttrModifier( player->query_real_name(),
                                ([A_STR:-1,A_INT:-1,A_DEX:-1,A_CON:-1]),
                                time()+3600,
                                this_object(),
                                this_object()
                              );

Will der NPC nun noch darauf reagieren, dass die Attributmodifikation
durch Timeout abgelaufen ist, so koennte dies folgendermassen geschehen.

  void NotifyTimedAttrModExpired(string str)
  {
      // Die Funktion wird aus dem Lebewesen gerufen, in welchem der Mod
      // gerade abgelaufen ist. Also Meldungsausgabe an
      // previous_object().
      tell_object(previous_object()
          ,"Da hast Du aber nochmal Glueck gehabt.\n");
  }

RUeCKGABEWERT

TATTR_INVALID_ARGS      -     Im Falle eines fehlenden key-Arguments,
                              eines fehlenden modifier-Arguments oder
                              eines bereits abgelaufenen
                              outdatet-Arguments
TATTR_OK                -     Im Erfolgsfall

Die Rueckgabewerte sind in /sys/living/attributes.h definiert.

SIEHE AUCH

Attribute:  QueryAttribute(), SetAttribute()
            SetRealAttribute(), QueryRealAttribute(),
            QueryAttributeOffset(),
            UpdateAttributes()
Methoden:   QueryTimedAttrModifier(), DeleteTimedAttrModifier()
Callback:   NotifyTimedAttrModExpired()
Properties: P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS
            P_X_ATTR_MOD, P_M_ATTR_MOD
            P_TIMED_ATTR_MOD
Sonstiges:  /std/living/attributes.c

LETZTE Aenderung: 15.02.2009, Zesstra