P_ATTRIBUTES_MODIFIER ===================== NAME ---- :: P_ATTRIBUTES_MODIFIER "attributes_modifier" DEFINIERT IN ------------ :: /sys/living/attributes.h BESCHREIBUNG ------------ :: In dieser Property werden Attribut-Modifikatoren gespeichert, die laengere Zeit wirksam sein sollen, tlw. auch ueber einen Reboot hinweg. Intern werden die Modifikatoren in einem Mapping der Form ([ Setzer-Key : ([ A_xy : Wert, ... ]) , ... ]) gespeichert. Das Setzen folg hingegen in der Form spieler->SetProp(P_ATTRIBUTES_MODIFIER, ([ A_xy : Wert, ... ])); oder spieler->SetProp(P_ATTRIBUTES_MODIFIER, ({ Setzer-Key, ([ ... ]) })); Bei der ersten Variante wird hierbei der Filename des setzenden Objektes als Setzer-Key genommen. Es koennen also durchaus von mehreren Objekten Modifier gesetzt werden. Bekannte Modifier sind: #death Attribut-Abzug durch Todesfolgen (Mudlib) #drain Statabzug durch NPCs (Paracelsus) #frosch Staerken-Abzug bei Froeschen (Mudlib) BEMERKUNGEN ----------- :: Keine echte Property, _query_attributes_modifier() und _set_attributes_modifier() sind in /std/living/attributes.c implementiert - SetProp/QueryProp nutzen! - Wenn ein Modifier nicht mehr gebracht wird, nicht die Attributswerte auf 0 setzen, sondern den ganzen Eintrag! also: SetProp(P_ATTRIBUTES_MODIFIER, ([]) ); oder: SetProp(P_ATTRIBUTES_MODIFIER, 0 ); aber nicht: SetProp(P_ATTRIBUTES_MODIFIER, ([A_STR:0])); BEISPIELE --------- :: // ein Bonus ... 'ende'-fest (muss also per uid gesichert werden) player->SetProp(P_ATTRIBUTES_MODIFIER, ({"g_klerus_segen", ([A_CON:5, A_INT:5])})); ... player->SetProp(P_ATTRIBUTES_MODIFIER, ({"g_klerus_segen", 0})); SIEHE AUCH ---------- :: QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(), SetAttribute(), SetRealAttribute(), UpdateAttributes(), SetTimedAttrModifier(), QueryTimedAttrModifier(), DeleteTimedAttrModifier(), P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_TIMED_ATTR_MOD, P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c Last modified: Tue Jul 27 20:00:20 2004 by Muadib