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