Siedzę od kilku godzin nad funkcją, która ma uniemożliwić otwieranie skrzyń (lub drzwi) bez posiadanej umiejętności (tak, modduje G1).
func void LockChestOrDoor()
{
var oCNpc her;
her = Hlp_GetNpc (hero);
var oCMobLockable lock; lock = MEM_PtrToInst(her.interactMob);
if (lock.bitfield & oCMobLockable_bitfield_locked)
{
if (Npc_GetTalentSkill (hero,NPC_TALENT_PICKLOCK) == FALSE)
{
G_PrintScreen(_STR_MESSAGE_PICKLOCK_NOSKILL);
AI_PlayAni (hero,"T_DONTKNOW");
B_Say (hero, NULL , "$NOPICKLOCKTALENT");
lock._oCMobInter_conditionFunc = "TRUE";
};
};
};
Wygląda to tak, że hero podchodzi do skrzyni, próbuje ją otworzyć po czym wstaje, w kółko powtarza frazę "NOPICKLOCKTALENT" i wzrusza ramionami. Domyślam się, że problem tkwi w zmiennej interactMob, jednak w zbiorze oCNpc nie udało mi się znaleźć takiej, która by pasowała tutaj lepiej. Druga opcja to FrameFunctions przez które wywołuję ją w startupie, ale tu chyba wszystko jest tak jak powinno
FF_ApplyOnce(LockChestOrDoor);