Start Info Community Spielen
 
 

Morgengrauner Dokumentation

Dateipfad: /home/mud/mudlib/doc/lfun/SetTimedAttrModifier

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


zurück zur Übersicht

YOUTUBE | FACEBOOK | TWITTER | DISCORD | FEEDBACK | IMPRESSUM | DATENSCHUTZ 1992–2023 © MorgenGrauen.