Files
community_bridge/modules/shops/_default/client.lua
T
2025-03-09 06:14:38 -04:00

91 lines
3.8 KiB
Lua

Shops = Shops or {}
RegisterNetEvent('community_bridge:openShop', function(_type, _title, shopData)
if source ~= 65535 then return end
if not _title and not _title and not shopData then return end
if _type ~= 'shop' then return end
Shops.OpenShop(_title, shopData.inventory)
end)
Shops.FinalizeCheckOut = function(shopName, item, itemLabel, price)
if not shopName and not item and not itemLabel and not price then return end
local generatedID = Ids.CreateUniqueId()
local buildMenu = {
{
title = locale('Shops.PayByCash')..tostring(price),
description = locale('Shops.AreYouSure') .. itemLabel,
icon = "fa-solid fa-money-bill-wave",
onSelect = function(_, __, ___)
TriggerServerEvent('community_bridge:completeCheckout', shopName, item, "cash")
end
},
{
title = locale('Shops.PayByCard')..tostring(price),
description = locale('Shops.AreYouSure') .. itemLabel,
icon = "fa-solid fa-building-column",
onSelect = function(_, __, ___)
TriggerServerEvent('community_bridge:completeCheckout', shopName, item, "bank")
end
}
}
Bridge.Menu.Open({ id = generatedID, title = locale("Shops.Confirm"), options = buildMenu }, false)
end
Shops.FinalizeCheckOut = function(shopName, item, itemLabel, price, amount)
if not shopName and not item and not itemLabel and not price then return end
local mathStuff = tonumber(price) * tonumber(amount)
local generatedID = Ids.CreateUniqueId()
local buildMenu = {
{
title = locale('Shops.PayByCash').." "..tostring(mathStuff),
description = locale('Shops.AreYouSure') .. itemLabel,
icon = "fa-solid fa-money-bill-wave",
onSelect = function(_, __, ___)
TriggerServerEvent('community_bridge:completeCheckout', shopName, item, amount, "money")
end
},
{
title = locale('Shops.PayByCard').." "..tostring(mathStuff),
description = locale('Shops.AreYouSure') .. itemLabel,
icon = "fa-solid fa-building-column",
onSelect = function(_, __, ___)
TriggerServerEvent('community_bridge:completeCheckout', shopName, item, amount, "bank")
end
}
}
Menu.Open({ id = generatedID, title = locale("Shops.Input"), options = buildMenu }, false)
end
Shops.AmountSelect = function(shopName, item, itemLabel, price)
if not shopName and not item and not itemLabel and not price then return end
local numberOptions = {}
for i = 1, 100 do
table.insert(numberOptions, {label = tostring(i), value = i})
end
local _input = Input.Open(shopName, {
{type = 'select', label = locale("Shops.PurchaseAmount"), options = numberOptions},
})
if _input and _input[1] then
Shops.FinalizeCheckOut(shopName, item, itemLabel, price, tostring(_input[1]))
end
end
Shops.OpenShop = function(title, shopData)
if not title and not shopData and not title then return print("No Title Passed") end
local generatedID = Ids.CreateUniqueId()
local buildMenu = {}
for _, v in pairs(shopData) do
local getItemName = Inventory.GetItemInfo(v.name).label
table.insert(buildMenu, {
title = getItemName,
description = locale('Shops.CurrencySymbol')..tostring(v.price),
icon = "fa-solid fa-basket-shopping",
onSelect = function(selected, secondary, args)
Shops.AmountSelect(title, v.name, getItemName, v.price)
--Shops.FinalizeCheckOut(title, v.name, getItemName, v.price)
end
})
end
Menu.Open({ id = generatedID, title = title, options = buildMenu }, false)
end