| |
| 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 |