A nie wystarczy przypadkiem other.aivar[trucizna]?
ja mam za ciebie sprawdzić to? dostałes podpowiedzi, czego jeszcze oczekujesz.
Wydaje mi się, czy pomyliłeś FOgidela ze mną?
@Siemekk @PS - pewnie, funkcję random i wszystko już mam przemyślane, tylko cały czas borykam się z problemem wywołania trucizny.
@pawbuj Popatrzyłem jak to robi BudzisSkryptMod. W ZS_MM_Master.d jest wywoływana funkcja:
func int ZS_MM_Attack_Loop ()
{
zatrucie();
.
.
.
};
Z kolei funkcja zatrucie wygląda następująco:
Spoiler
//
func void zatrucie(){
if (other.guild == GIL_BLOODFLY)
{
zatruty = 1;
};
if (other.guild == GIL_WOLF)
{
chory = 1;
};
if (other.guild == GIL_ORCDOG)
{
chory = 1;
};
};
i później jak zmienna jest taka a taka to TickTock odejmuje HP.
Ale gdzie jest zdefiniowane kim jest other?
Gdy w swoim modzie (G2) robię podobnie:
Spoiler
func void TruciznaFunction ()
{
if (other.aivar[AIV_Trucizna] == 1)
{
WillZatruty = 1;
PrintScreen ("zatruty przez wilka", -1,-1, "font_old_20_white.tga",3);
};
PrintScreen ("zatruty jest", -1,-1, "font_old_20_white.tga",3);
};
to działa funkcja (bo wyświetla się "ZATRUTY JEST"), ale nie działa warunek z other, mimo że wilk ma aivara.
Jak zdefiniować kim jest other? Dodam, że funkcję wywołuję w: ZS_MM_Attack tutaj:
Spoiler
func int ZS_MM_Attack_Loop ()
{
TruciznaFunction ();
Npc_GetTarget (self); // other = target
// ------ Regeneration ------
if (self.guild == GIL_DRAGON)
{
self.aivar[AIV_TAPOSITION] += 1;
if (self.attribute[ATR_HITPOINTS] < self.attribute[ATR_HITPOINTS_MAX])
&& (self.aivar[AIV_TAPOSITION] >= 2)
{
self.attribute[ATR_HITPOINTS] += 1;
self.aivar[AIV_TAPOSITION] = 0;
};
};
.
.
.
};
Ogółem to rozwiązanie nie wydaje mi się najlepsze, bo wywoływanie funkcji w ZS_Attack Loop sprawia, że funkcja wywołuje się niekoniecznie, gdy wilk mnie zranił. I tak musiałbym skorzystać z C_BodyStateContains(xxx,BS_HIT)
@Cruc Mógłbyś jaśniej? Troszkę nie rozumiem zaproponowanej idei.