ModifySkillAttributeOld() ========================= FUNKTION -------- :: varargs int ModifySkillAttributeOld(object caster, string atrname, int value, int duration, mixed fun) DEFINIERT IN ------------ :: /std/living/skill_attributes.c ARGUMENTE --------- :: IGNORIERT frueher Objekt, das die Modifikation vornimmt, heute ist dieses Argument ohne Bedeutung und wird ignoriert. STRING Name des zu veraendernden Attributes (Definiert in /sys/living/skill_attributes.h) INT Neuer Wert des Attributs (Standard: 100) INT Dauer in Sekunden NICHT MEHR UNTERSTUETZT - ModifySkillAttribute() nutzen!! BESCHREIBUNG ------------ :: Diese Funktion existiert nur aus Kompatibilitaetsgruenden. Bitte in neuen Objekten NICHT mehr verwenden und in alten nach Moeglichkeit ausbauen! Aendert ein Skill-Attribut eines Living. Fuer ist folgendes zu beachten: Frueher handelte es sich um einen multiplikativen Faktor. 100 hatte die Bedeutung von 1 und veraenderte nichts. Heute sind die Modifikatoren additiv. Diese Funktion macht eine einfache Umrechnung, indem sie vom hier uebergeben Wert 100 abzieht. (In der Annahme, dass frueher meist eh nur ein Modifikator zur gleichen Zeit aktiv war.) Gibt man hier also hier eine 100 an, wird ein Modifikator von 0 einge- tragen, der nichts aendert, bei 200 wird ein Modifikator von 100 einge- tragen, bei 50 einer von -50, welcher das Skillattribute folglich reduziert. Es sind momentan max. 5 gleichzeitige Skillattribute-Modifikatoren pro SA zulaessig. RUECKGABEWERT ------------- :: 0 wenn der Wert ungueltig ist oder aus sonstigem Grunde nicht gesetzt werden konnte (fuer bessere Diagnostik -> ModifySkillAttribute()). >0 wenn alles okay war BEMERKUNGEN ----------- :: Frueher musste ein setzendes Objekt ein groesseres P_LEVEL haben als das Objekt, welches einen vorherigen Modifikator gesetzt hat, um diesen zu ueberschreiben. Dies ist inzwischen ohne Bedeutung. BEISPIELE --------- :: Ein NPC: void create() { . . . AddSpell(1, 1, "Der fuerchterliche NPC haut Dir auf den Kopf.\n", "Der fuerchterliche NPC haut @WEN auf den Kopf.\n", DT_MAGIC, "schwaechen"); . . } schwaechen(object enemy, int damage, mixed *dam_type) { int ergebnis; ergebnis = enemy->ModifySkillAttributeOld(this_object(), SA_QUALITY, 50, 5); if (ergebnis > 0) tell_object(enenmy, "Du fuehlst Dich ganz schwach.\n"); } Der NPC schwaecht seinen Gegner erheblich! Alles wird fuer 5 Sekunden um 50, d.h. 0.5 Skillattribute reduziert (50 - 100 => -50 als Modifikator). SIEHE AUCH ---------- :: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS, ModifySkillAttribute, QuerySkillAttribute(), RemoveSkillAttributeModifer(), QuerySkillAttributeModifier() 07.08.2008 Zesstra