Судя по всему, в инвентарь поинтшопа можно добавлять только итемы из самого поинтшопа. Накидал код, обязательно проверь, работает ли и сообщи, а то я не тестировал и окажется, что вообще время зря потратил
local STORE_ITEM = FindMetaTable("IGSItem")
local function giveItem(pl, sItemName, amount)
KInventory.Inventory.findByOwnerId( pl.kPlayerId ):Then(function( inv )
if not inv then
IGS.Notify(pl, "У вас невалидный PS2 инвентарь. Сделайте скриншот и сообщите администрации")
return
end
local itemClass = KInventory.Items[sItemName]
local itemsGiven = 0
local item = itemClass:new()
local promise = inv:addItem( item ):Then(function()
itemsGiven = itemsGiven + 1
end)
for _ = 2, amount do
local item = itemClass:new()
promise = promise:Then(function()
inv:addItem( item )
end):Then(function()
itemsGiven = itemsGiven + 1
end)
end
promise:Then(function()
IGS.Notify(pl, "Вы получили " .. amount .. " " .. sItemName)
end, function(errid, err)
if errid > 0 then
IGS.Notify(pl, "Ошибка выдачи: " .. err ..", было выдано " .. itemsGiven .. " предметов")
else
IGS.Notify("Внутренняя ошибка выдачи предметов: " .. errid .. ". Запомните точное время и сообщите администрации")
error("IGS: Ошибка выдачи PS2 предметов: " .. errid .. ", " .. err )
end
end)
end)
end
--[[---------------------------------------------------------------
При покупке, игрок получит в PointShop2 инвентарь sItemName
-----------------------------------------------------------------]]
function STORE_ITEM:SetPS2Item(sItemName, iAmountToGive)
return self:SetInstaller(function(pl)
giveItem(pl, sItemName, iAmountToGive or 1)
end):SetCanActivate(function(pl)
local itemClass = KInventory.Items[sItemName]
if not itemClass then
return "Предмета " .. sItemName .. " не существует. Обратитесь к администрации"
end
end)
end
Код помести в файл addons/igs-modification/lua/igs/extensions/ps2inventory.lua
Затем создай предмет. Пример:
IGS("Поинтшоп итем", "ps2_item", 10)
:SetPS2Item("item_uid", 5)
:SetDescription("Выдаст в инвентарь PS2 5шт item_uid")
:SetStackable()