forked from Simnation/Main
77 lines
No EOL
2.4 KiB
Lua
77 lines
No EOL
2.4 KiB
Lua
--
|
|
-- Shops
|
|
--
|
|
|
|
RegisterNetEvent("jg-mechanic:server:buy-item", function(shopIndex, itemIndex, qty, mechanicId)
|
|
local src = source
|
|
|
|
local mechanicConfig = Config.MechanicLocations[mechanicId]
|
|
if not mechanicConfig then return end
|
|
|
|
local convertedMechanicId = mechanicConfig and mechanicConfig.job or nil
|
|
if not convertedMechanicId then
|
|
Framework.Server.Notify(src, Locale.shopNameError, "error")
|
|
return
|
|
end
|
|
|
|
local item = mechanicConfig.shops?[shopIndex]?.items?[itemIndex]
|
|
if not item then
|
|
Framework.Server.Notify(src, Locale.failedGiveItem, "error")
|
|
return
|
|
end
|
|
|
|
local itemName = item.name;
|
|
local totalCost = item.price * qty
|
|
|
|
if Config.UseSocietyFund then
|
|
local success = removeFromSocietyFund(src, mechanicId, totalCost)
|
|
if not success then return end
|
|
else
|
|
local playerBalance = Framework.Server.GetPlayerBalance(src, Config.PlayerBalance or "bank")
|
|
if playerBalance < totalCost then
|
|
Framework.Server.Notify(src, Locale.notEnoughMoney, "error")
|
|
return
|
|
end
|
|
|
|
Framework.Server.PlayerRemoveMoney(src, totalCost, Config.PlayerBalance or "bank")
|
|
end
|
|
|
|
local itemGiven = Framework.Server.GiveItem(src, itemName, qty)
|
|
if not itemGiven then
|
|
Framework.Server.Notify(src, Locale.failedGiveItem, "error")
|
|
return
|
|
end
|
|
|
|
Framework.Server.Notify(src, Locale.purchaseSuccess:format(qty, itemName), "success")
|
|
end)
|
|
|
|
--
|
|
-- Stashes
|
|
--
|
|
|
|
CreateThread(function()
|
|
if (Config.Inventory == "auto" and GetResourceState("ox_inventory") == "started") or Config.Inventory == "ox_inventory" then
|
|
for name, shopData in pairs(Config.MechanicLocations) do
|
|
if shopData.stashes then
|
|
for index, stashData in ipairs(shopData.stashes) do
|
|
local stashId = name .. "_" .. stashData.name:gsub(" ", "_"):lower() .. "_" .. index
|
|
local label = stashData.name
|
|
local slots = stashData.slots or 50
|
|
local maxWeight = stashData.weight or 50000
|
|
local coords = stashData.coords
|
|
|
|
if stashId and coords then
|
|
exports.ox_inventory:RegisterStash(stashId, label, slots, maxWeight, nil, nil, coords)
|
|
debugPrint(("[ox_inventory] Registered stash: ID=%s, Label=%s, Slots=%d, Weight=%d, Coords=%s"):format(
|
|
stashId,
|
|
label,
|
|
slots,
|
|
maxWeight,
|
|
coords
|
|
), "debug")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end) |