Czołem, chcę dodać możliwość garbowania skór do gry i chciałbym, żeby to się odbywało na jakimś obiekcie w grze (to się chyba nazywa Mob) - tak jak np. wykuwanie mieczy robimy na kowadle. Dodałem w Spacerze do świata gry obiekt oCMobIntern, jako visual dałem mu BARBQ_SCAV.MDS (ognisko ze ścierwojadem - na razie wziąłem coś pierwsze lepsze tylko przykładowo), a w onstatefunction wpisałem SKINTAN (wzorowałem się przy tym na kowadle - tam jest SMITHWEAPON). W skryptach zrobiłem nowy plik, w którym przekopiowałem wszystko z kowadła, tylko podmieniłem wytwarzanie mieczy na skóry oraz wszystkie nazwy robiłem według tego samego schematu, tylko wszędzie zamiast SmithWeapon dawałem SkinTan, no i zwłaszcza linijki:
FUNC INT PC_SmithWeapon_End_Condition ()
{
if (PLAYER_MOBSI_PRODUCTION == MOBSI_SMITHWEAPON)
{
return TRUE;
};
};
Zmieniłem na:
FUNC INT PC_SkinTan_End_Condition ()
{
if (PLAYER_MOBSI_PRODUCTION == MOBSI_SKINTAN)
{
return TRUE;
};
};
MOBSI_SKINTAN dodałem w AI_Constants.
Rzecz w tym, że to nie działa. Tzn. bezi podchodzi do ogniska, jak klikam to zaczyna obracać tego ścierwojada (

), ale nie wyświetlają się żadne opcje dialogowe dotyczące wytwarzania przedmiotów. Dodam, że skrypt sam w sobie działa, bo gdy NIE zmieniam linijki
if (PLAYER_MOBSI_PRODUCTION == MOBSI_SMITHWEAPON)
na
if (PLAYER_MOBSI_PRODUCTION == MOBSI_SKINTAN)
to mogę wytwarzać te skóry, tyle że na kowadle.
W Spacerze do tej pory się nie bawiłem, więc może tam coś źle robię. Albo jeszcze w jakimś pliku coś dodać. W sumie nie wiem do czego odwołuje się to onstatefunction w Spacerze - do nazwy pliku, do nazwy jakiejś funkcji w skryptach czy jeszcze czegoś innego?
EDIT:
No dobra, po prostu za mało patrzyłem w skrypty. Trzeba jeszcze dodać funkcję (np. w nowym pliku SkinTan.d) na wzór tej ze SmithWeapons:
func void SkinTan_S1()
{
var C_Npc her;
her = Hlp_GetNpc(Pc_Hero);
if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(her))
{
self.aivar[AIV_INVINCIBLE] = TRUE;
Player_Mobsi_Production = Mobsi_SkinTan;
AI_ProcessInfos(her);
};
};
Dzięki,
@Czudak