Odświeżam temat. Kombinuję jak zrobić wyświetlanie wartości tej piątej obrony bez używania Lego i Ikarusa. Skrypter ze mnie żaden, ale po przestudiowaniu kilku tematów na forum, udało mi się podpiąć tą obronę pod umiejętność Regeneracji.
Działa to tak, że do każdej zbroi lub pasa trzeba dopisać funkcję on equip i unequip zmieniającą wartość dodanej zmiennej dla umiejętności Regeneracji (jeśli ktoś zna prostszy sposób byłoby miło, gdyby się podzielił:p )
func void Equip_ITAR_OREARMOR_EDGE()
{
if(Npc_IsPlayer(self))
{
ATR_REGENERATE = ATR_REGENERATE + 110;
Npc_SetTalentSkill(self,NPC_TALENT_REGENERATE,ATR_REGENERATE);
};
};
func void UnEquip_ITAR_OREARMOR_EDGE()
{
if(Npc_IsPlayer(self))
{
ATR_REGENERATE = ATR_REGENERATE - 110;
Npc_SetTalentSkill(self,NPC_TALENT_REGENERATE,ATR_REGENERATE);
};
};
Spróbowałem z jednym itemkiem i ucieszyłem się bo zadziałało. Problem w tym, że po wczytaniu save wyświetlana wartość na karcie statystyk resetuje się do 1 i trzeba znów ściągnąć i założyć item by wyświetlała się poprawnie. Jak to obejść?
Post połączony: 2014-11-29, 17:32
Hmm, wygląda na to że się udało ominąć ten problem. Dodałem:
Npc_SetTalentSkill(self,NPC_TALENT_REGENERATE,ATR_REGENERATE);
do func void INIT_GLOBAL() w Startupie i przy wczytywaniu save obrona wyświetla się poprawnie!

Edit. Lekki update. Zamiast wpisywać ręcznie przy każdej zbroi jej wartość kodem:
ATR_REGENERATE = ATR_REGENERATE + X;
Npc_SetTalentSkill(self,NPC_TALENT_REGENERATE,ATR_REGENERATE);
(gdzie X to obrona przed ostrzami, dodatkowo trzeba jeszcze stworzyć analogiczną, tylko odejmującą funkcję)
Lepiej po prostu dać:
ATR_REGENERATE = self.protection[PROT_EDGE];
Npc_SetTalentSkill(self,NPC_TALENT_REGENERATE,ATR_REGENERATE);
Tym sposobem minimalizujemy ryzyko błędnego wyświetlania rzeczonej obrony, gdyż nie musimy już jej sami liczyć. No i oszczędzamy sobie zachodu oraz problemów przy dodatkowej obronie działającej tylko w określonych zestawach itemów (np. pasy z bonusami do zbroi, pierścienie i amulet wojownika z Jarkendaru). Minus jest taki, że wciąż trzeba dopisać do każdego itemku funkcje onequip i unequip, plus taki, że do większości itemów wystarczy jedna funkcja, którą potem tylko wywołujemy. Natomiast przy itemach, które standardowo miały już swoje funkcje onequip i unequip, wystarczy dopisać w każdej z nich ręcznie na końcu wyżej wymieniony kod i gitara. Zastanawiam się jeszcze czy da się to zrobić bardziej elegancko, ale poza tick tockiem nie widzę na razie alternatywy.