В max.lua поменяй первую строчку на local STORE_ITEM = MT_IGSItem
.
Если в коде сервера еще где-то используется
FindMetaTable("IGSItem")
, то замени по тому самому принципу.
Ломающее обновление: Release Фиксы debug.getregistry · GM-DONATE/IGS · GitHub
Вот полный пример файла:
local STORE_ITEM = MT_IGSItem
-- Возволяет настроить максимальное количество ПОКУПОК одного предмета
-- Работает только для одного сервера, независимо от того, указан ли bGlobal
function STORE_ITEM:SetMaxPurchases(iLimit)
return self:SetMeta("purchasesLimit", iLimit)
end
if CLIENT then return end
local function bibKey(pl,ITEM)
return "igs:purchases:" .. pl:UniqueID() .. ":" .. ITEM:UID()
end
hook.Add("IGS.CanPlayerBuyItem", "purchasesLimit", function(pl, ITEM) -- bGlobal
local limit = ITEM:GetMeta("purchasesLimit")
if limit and bib.getNum(bibKey(pl, ITEM),0) >= limit then
return false, "Этот предмет можно купить только " .. limit .. " раз(а)"
end
end)
hook.Add("IGS.PlayerPurchasedItem", "purchasesLimit", function(pl, ITEM) -- bGlobal, iID
local limit = ITEM:GetMeta("purchasesLimit")
if limit then
local key = bibKey(pl, ITEM)
bib.setNum(key, bib.getNum(key,0) + 1)
IGS.Notify(pl, "Вы купили " .. ITEM:Name() .. " " .. bib.getNum(key,0) .. " раз из " .. limit)
end
end)
P.S. В идеале отказаться от этого файла. Он плоховато написан, да и название метода не совсем коректно отражает суть. Короче лично мне не нравится этот модуль. Не помню где я это публиковал, но если найдешь – дай знать, хоть рефакторинг небольшой сделаю