Generalnie jak w tytule. Próbuję napisać funkcję sprawdzającą, czy bohater walczy, tzn. wyprowadza ciosy lub je blokuje. Zacząłem od sprawdzenia sposobu, w jaki rozwiązali to twórcy w przypadku magicznego golema (plik B_MM_AssessDamage.d). Skopiowałem całość, pod młot magiczny podstawiłem dowolny oręż dzierżony przez postać.
Z bliżej nieokreślonej przyczyny nie chciało działać, przekopałem się trochę przez forum, ostatecznie znalazłem coś, co zwało się Npc_IsInFightMode. Nie bardzo rozumiejąc, jak to działa, zaimplementowałem do prostego if'a.
if(Npc_IsInFightMode(self,FMODE_MELEE))
{
x = x+1;
};
który umieściłem w funkcji sprawdzanej 10 razy na sekundę (FF_ApplyOnceExt). Jakoś działa, ale nie potrafię załapać jej sensu. Kiedy postać jest atakowana lub sama atakuje, czasem x się zwiększa, czasem nie, czasem dosyć mocno podskakuje,o kilka wartości jednocześnie (strzelam, że zależy to od przypadku, czy funkcja jest wywołana akurat w momencie tego zdarzenia). Do tego takie wywoływanie funkcji tak często jest ekstremalnie nieefektywne i obciążające silnik. Stąd pytanie: jak zrobić to lepiej i mądrzej? Przy pisaniu odpowiedzi, weźcie proszę pod uwagę, że słabo jeszcze ogarniam ten język skryptowy, użyty w grze. Jeśli dacie odpowiedź nie wprost, to chociaż z podpowiedzią, gdzie tego szukać, żebym nie musiał tracić godzin na przekopywanie się przez wszystkie pliki skryptów.