blob: 17b2d9fb48efecc9ecc68411e0fcfe0832d3fc87 [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001SetTimedAttrModifier()
2======================
3
4FUNKTION
5--------
6::
7
8 int SetTimedAttrModifier(string key, mapping modifier,
9 int outdated, object dependent, mixed notify)
10
11DEFINIERT IN
12------------
13::
14
15 /std/living/attributes.c
16
17ARGUMENTE
18---------
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
33BESCHREIBUNG
34------------
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
57BEISPIELE
58---------
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
85RUeCKGABEWERT
86-------------
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
97SIEHE AUCH
98----------
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
112LETZTE Aenderung:
11315.02.2009, Zesstra
114