MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 1 | SetTimedAttrModifier() |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 2 | ********************** |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 3 | |
| 4 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 5 | FUNKTION |
| 6 | ======== |
| 7 | |
| 8 | int SetTimedAttrModifier(string key, mapping modifier, |
| 9 | int outdated, object dependent, mixed notify) |
| 10 | |
| 11 | |
| 12 | DEFINIERT IN |
| 13 | ============ |
| 14 | |
| 15 | /std/living/attributes.c |
| 16 | |
| 17 | |
| 18 | ARGUMENTE |
| 19 | ========= |
| 20 | |
| 21 | key - in P_TIMED_ATTR_MOD vorzunehmender oder zu |
| 22 | aendernder Eintrag |
| 23 | modifier - Mapping mit den Attributveraenderungen |
| 24 | outdated - Zeitpunkt zu dem die Attributveraenderungen |
| 25 | ablaufen sollen in Sekunden seit dem |
| 26 | 1. Jan 1970, 0.0:0 GMT oder 0 |
| 27 | dependent - Objekt dessen Existenz eine Bedingung fuer die |
| 28 | Attributveraenderung sein soll oder 0 |
| 29 | notify - Objekt oder File das mittels |
| 30 | NotifyTimedAttrModExpired ueber |
| 31 | den Attributablauf informiert werden soll |
| 32 | |
| 33 | |
| 34 | BESCHREIBUNG |
| 35 | ============ |
| 36 | |
| 37 | Der zu key gehoerende Eintrag wird in P_TIMED_ATTR_MOD angelegt oder |
| 38 | modifiziert und update_max_sp_and_hp aufgerufen. |
| 39 | Es empfiehlt sich auf die Eindeutigkeit des string-Parameters key |
| 40 | besonderes Augenmerk zu legen. |
| 41 | |
| 42 | Unter dem Key key wird in P_TIMED_ATTR_MOD ein Eintrag vorgenommen, |
| 43 | welcher die Attribute des Livings um die in modifier stehenden Offsets |
| 44 | veraendert. |
| 45 | |
| 46 | Diese Veraenderung ist solange aktiv bis entweder die in outdated |
| 47 | stehende Zeit ueberschritten ist oder das in dependent uebergebene |
| 48 | Objekt nicht mehr existiert. |
| 49 | Sind beide Argumente 0 so laeuft die Attributveraenderung nicht ab |
| 50 | und kann durch DeleteTimedAttrModifier geloescht werden. |
| 51 | Laeuft die Attributveraenderung ab, so wird der in notify angegebene |
| 52 | Empfaenger mittels Aufruf NotifyTimedAttrModExpired davon |
| 53 | benachrichtigt. |
| 54 | Der Funktion NotifyTimedAttrModExpired wird als Argument der key |
| 55 | der abgelaufenen Attributveraenderung uebergeben. |
| 56 | |
| 57 | |
| 58 | BEISPIELE |
| 59 | ========= |
| 60 | |
| 61 | Ein NPC kann einen Spieler auf die folgende Weise solange die |
| 62 | Attribute um eins herabsetzen bis entweder eine Stunde verstrichen |
| 63 | ist oder der NPC nicht mehr existiert zum Beispiel weil er getoetet |
| 64 | wurde. |
| 65 | |
| 66 | player->SetTimedAttrModifier( player->query_real_name(), |
| 67 | ([A_STR:-1,A_INT:-1,A_DEX:-1,A_CON:-1]), |
| 68 | time()+3600, |
| 69 | this_object(), |
| 70 | this_object() |
| 71 | ); |
| 72 | |
| 73 | Will der NPC nun noch darauf reagieren, dass die Attributmodifikation |
| 74 | durch Timeout abgelaufen ist, so koennte dies folgendermassen geschehen. |
| 75 | |
| 76 | void NotifyTimedAttrModExpired(string str) |
| 77 | { |
| 78 | // Die Funktion wird aus dem Lebewesen gerufen, in welchem der Mod |
| 79 | // gerade abgelaufen ist. Also Meldungsausgabe an |
| 80 | // previous_object(). |
| 81 | tell_object(previous_object() |
| 82 | ,"Da hast Du aber nochmal Glueck gehabt.\n"); |
| 83 | } |
| 84 | |
| 85 | |
| 86 | RUeCKGABEWERT |
| 87 | ============= |
| 88 | |
| 89 | TATTR_INVALID_ARGS - Im Falle eines fehlenden key-Arguments, |
| 90 | eines fehlenden modifier-Arguments oder |
| 91 | eines bereits abgelaufenen |
| 92 | outdatet-Arguments |
| 93 | TATTR_OK - Im Erfolgsfall |
| 94 | |
| 95 | Die Rueckgabewerte sind in /sys/living/attributes.h definiert. |
| 96 | |
| 97 | |
| 98 | SIEHE AUCH |
| 99 | ========== |
| 100 | |
| 101 | Attribute: QueryAttribute(), SetAttribute() |
| 102 | SetRealAttribute(), QueryRealAttribute(), |
| 103 | QueryAttributeOffset(), |
| 104 | UpdateAttributes() |
| 105 | Methoden: QueryTimedAttrModifier(), DeleteTimedAttrModifier() |
| 106 | Callback: NotifyTimedAttrModExpired() |
| 107 | Properties: P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS |
| 108 | P_X_ATTR_MOD, P_M_ATTR_MOD |
| 109 | P_TIMED_ATTR_MOD |
| 110 | Sonstiges: /std/living/attributes.c |
| 111 | |
| 112 | LETZTE Aenderung: 15.02.2009, Zesstra |