W G2NK jest dostępna funkcja Npc_ClearInventory. Nie ma jej w G1. Można jednak zrealizować ją przy pomocy Npc_GetInvItemBySlot, NPC_RemoveInvItems i rekurencji. Dodając wywołanie innej, odpowiedniej funkcji pod NPC_RemoveInvItems, można także te itemy dodawać w innym miejscu (np u innego npc / w skrzyni), w praktyce je tam przenosząc. Żeby uniknąć pytań: zmienna item jest ustawiana przez silnik na znaleziony c_item w momencie wywołania funkcji Npc_GetInvItemBySlot. Działa to analogicznie do np zmiennej self, którą każdy powinien znać. Jej też nie trzeba samemu przydzielać zawartości, silnik robi to za nas.
func void Npc_ClearInventoryLoop (var c_npc npc, var int category)
{
print(ConcatStrings("Czyszczenie eq: ", npc.name);
var int amount;
amount = Npc_GetInvItemBySlot (npc, category, 0);
print(ConcatStrings(item.name, IntToString(amount));
if (amount>0)
{
NPC_RemoveInvItems (npc, Hlp_GetInstanceID (item), amount);
Npc_ClearInventoryLoop(npc, category);
}
else if (category < INV_CAT_MAX-1)
{
print(ConcatStrings("Zmiana kategorii na: ", IntToString(category+1));
Npc_ClearInventoryLoop(npc, category+1);
};
};
func void Npc_ClearInventory (var c_npc npc)
{
Npc_ClearInventoryLoop(npc, 0);
};
Być może pętla po wszystkich kategoriach eq nie jest potrzebna i wystarczy sama zerowa. Użytkownik dla którego ją napisałem nie potrafi jej poprawnie przetestować, najpierw stwierdził że z samym zero nie działa, ale okazuje się że wersji z pełnym przeczesaniem też nie potrafi nawet wywołać. Jak komuś się uda, proszę żeby dał znać. Lehona potwierdził że funkcja działa w g2nk (a użyte tu eksternale prawie na pewno się nie zmieniły między wersjami gry).