Ten sposób działa, ale gdy wpisywałem dwa przedmioty. Teraz skrypt wygląda tak:
var int amountweapon;
var int amountarmor;
var int amountmagic;
var int amountartifacts;
var int amountfood;
var int amountpotions;
var int amountwritten;
var int amountmisc;
func void B_ClearTradeInv (var C_NPC ctrd)
{
amountweapon = Npc_GetInvItemBySlot (ctrd, 1, 0);
amountarmor = Npc_GetInvItemBySlot (ctrd, 2, 0);
amountmagic = Npc_GetInvItemBySlot (ctrd, 3, 0);
amountartifacts = Npc_GetInvItemBySlot (ctrd, 4, 0);
amountfood = Npc_GetInvItemBySlot (ctrd, 5, 0);
amountpotions = Npc_GetInvItemBySlot (ctrd, 6, 0);
amountwritten = Npc_GetInvItemBySlot (ctrd, 7, 0);
amountmisc = Npc_GetInvItemBySlot (ctrd, 8, 0);
if (amountweapon >= 1)
{
NPC_RemoveInvItems (ctrd, Hlp_GetInstanceID (ItMw_1H_Sword_Broad_03), 1);
NPC_RemoveInvItems (ctrd, Hlp_GetInstanceID (ItMw_2H_Sword_01), 1);
B_ClearTradeInv(ctrd);
};
if (amountarmor >= 1)
{
NPC_RemoveInvItems (ctrd, Hlp_GetInstanceID (Vlk_Armor_L), 1);
B_ClearTradeInv(ctrd);
};
if (amountmagic >= 1)
{
NPC_RemoveInvItems (ctrd, Hlp_GetInstanceID (ItArScrollLight), 1);
B_ClearTradeInv(ctrd);
};
if (amountartifacts >= 1)
{
NPC_RemoveInvItems (ctrd, Hlp_GetInstanceID (Amulett_der_Macht), 1);
NPC_RemoveInvItems (ctrd, Hlp_GetInstanceID (Ring_der_Erleuchtung), 1);
B_ClearTradeInv(ctrd);
};
if (amountfood >= 1)
{
NPC_RemoveInvItems (ctrd, Hlp_GetInstanceID (ItFo_Plants_mountainmoos_01), 1);
NPC_RemoveInvItems (ctrd, Hlp_GetInstanceID (ItFo_Plants_Berrys_01), 1);
NPC_RemoveInvItems (ctrd, Hlp_GetInstanceID (ItFo_Plants_Flameberry_01), 1);
NPC_RemoveInvItems (ctrd, Hlp_GetInstanceID (ItFoRice), 1);
NPC_RemoveInvItems (ctrd, Hlp_GetInstanceID (ItFoBooze), 1);
B_ClearTradeInv(ctrd);
};
if (amountpotions >= 1)
{
NPC_RemoveInvItems (ctrd, Hlp_GetInstanceID (ItFo_Potion_Health_02), 1);
B_ClearTradeInv(ctrd);
};
if (amountwritten >= 1)
{
NPC_RemoveInvItems (ctrd, Hlp_GetInstanceID (Die_Gruft), 1);
B_ClearTradeInv(ctrd);
};
if (amountmisc >= 1)
{
NPC_RemoveInvItems (ctrd, Hlp_GetInstanceID (ItMiNugget), 1);
NPC_RemoveInvItems (ctrd, Hlp_GetInstanceID (ItKeLockpick), 1);
B_ClearTradeInv(ctrd);
};
};
Napisałem kilka zmiennych na górze, bo tego chyba wymagała ta funkcja, a te wszystkie przedmioty znajdują się w inwentarzu npc gdy on umiera.
Gra wywala do pulpitu, i nie wyświetla żadnych komunikatów podczas śmierci npc, więc chyba silnik nie wyrobił z czymś takim. No i tak na uboczu zmieniłem npc na ctrd, bo w innym skrypcie mam trd, ale to nie jest istotne.