forked from Simnation/Main
70 lines
2.7 KiB
Lua
70 lines
2.7 KiB
Lua
function getPriceItemForSelling(name)
|
|
for k, v in pairs(Config.SellItems) do
|
|
for s, x in pairs(v.items) do
|
|
if x.name == name then
|
|
return x.price, v.blip.account
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
RegisterNetEvent(Config.InventoryPrefix .. ':server:RemoveItem', function(itemName, count)
|
|
local src = source
|
|
RemoveItem(src, itemName, count)
|
|
end)
|
|
|
|
function SetupSellingItems(shop, shopItems)
|
|
local items = {}
|
|
if shopItems ~= nil and next(shopItems) ~= nil then
|
|
for k, item in pairs(shopItems) do
|
|
local itemInfo = ItemInfo(item)
|
|
if not itemInfo then return Error('There is an item that does not exist in this selling store!') end
|
|
itemInfo.price = item.price
|
|
items[item.slot] = itemInfo
|
|
end
|
|
end
|
|
return items
|
|
end
|
|
|
|
---@param src number
|
|
---@param fromInventory string
|
|
---@param fromSlot number
|
|
---@param fromAmount number
|
|
---@param toInventory string
|
|
---@param toSlot number
|
|
---@return boolean
|
|
function SellItemToSelling(src, fromInventory, fromSlot, fromAmount, toInventory, toSlot)
|
|
if fromInventory ~= 'player' and fromInventory ~= 'hotbar' then
|
|
Debug('You can not sell items from this inventory', fromInventory)
|
|
return false
|
|
end
|
|
local fromItemData = GetItemBySlot(src, fromSlot)
|
|
fromAmount = tonumber(fromAmount) and tonumber(fromAmount) or fromItemData.amount
|
|
if fromAmount == 0 then
|
|
Notification(src, Lang('INVENTORY_NOTIFICATION_SELLING_AMOUNT'), 'error')
|
|
return false
|
|
end
|
|
if not fromItemData or fromItemData.amount < fromAmount then
|
|
Debug('You do not have this item or not enough amount', fromItemData, fromAmount)
|
|
Notification(src, Lang('INVENTORY_NOTIFICATION_SELLING_BAD_ITEM'), 'error')
|
|
return false
|
|
end
|
|
local sell_id = SplitStr(toInventory, '-')[2]
|
|
local toItemData = SellItems[sell_id].items[toSlot]
|
|
if not toItemData or toItemData.name ~= fromItemData.name then
|
|
Debug('You can not sell this item to this slot', toItemData, fromItemData)
|
|
Notification(src, Lang('INVENTORY_NOTIFICATION_SELLING_BAD_ITEM'), 'error')
|
|
return false
|
|
end
|
|
RemoveItem(src, fromItemData.name, fromAmount, fromSlot)
|
|
local price, account = getPriceItemForSelling(fromItemData.name)
|
|
if not price then
|
|
return false
|
|
end
|
|
AddAccountMoney(src, account, price * fromAmount)
|
|
Notification(src, price * fromAmount .. ' ' .. Lang('INVENTORY_NOTIFICATION_SELLING_SUCCESS'), 'success')
|
|
SendWebhook(Webhooks.sell, 'Item Sale', 7393279, '**' .. GetPlayerName(src) .. '(id: ' .. src .. ') sold an item!**\n**Name:** ' .. fromItemData.name .. '\n**Price:** ' .. price * fromAmount .. '\n**Amount:** ' .. fromAmount)
|
|
Debug('Player is selling an item', src, fromItemData.name, fromAmount, price)
|
|
return true
|
|
end
|