Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/g drugselling #1

Merged
merged 17 commits into from
Feb 19, 2023
Prev Previous commit
Next Next commit
Implement selling
  • Loading branch information
Giana committed Feb 17, 2023
commit 91bae9e952c3f2b15a974e32b9da1eddb3b48c09
15 changes: 3 additions & 12 deletions locales/en.lua
Original file line number Diff line number Diff line change
@@ -1,18 +1,9 @@
local Translations = {
error = {

},
success = {

},
menu = {

},
button = {

not_enough = 'You do not have enough of: %{itemLabel}'
},
other = {

info = {
police_alert = 'Drug sale in progress'
}
}

Expand Down
49 changes: 49 additions & 0 deletions server/main.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
local QBCore = exports['qb-core']:GetCoreObject()

-- Events --

RegisterNetEvent('g-drugselling:server:sell', function(sellLocation)
local src = source
local player = QBCore.Functions.GetPlayer(src)
for k, v in pairs(sellLocation.sellable_items) do
local hasItem = player.Functions.GetItemByName(k)
if hasItem then
if hasItem.amount >= v.sell_quantity then
local bundlesToSell = math.floor(hasItem.amount / v.sell_quantity)
local quantityToSell = bundlesToSell * v.sell_quantity
if player.Functions.RemoveItem(k, quantityToSell) then
for k2, v2 in pairs(v.rewards) do
local isMoneyType = false
for k3, v3 in pairs(QBConfig.Money.MoneyTypes) do
if tostring(k3) == k2 then
isMoneyType = true
end
end
if isMoneyType then
if not player.Functions.AddMoney(k2, v2) then
player.Functions.AddItem(k, quantityToSell)
return
end
else
if not player.Functions.AddItem(k2, v2) then
player.Functions.AddItem(k, quantityToSell)
return
end
if sellLocation.itemNotificationsEnabled then
TriggerClientEvent('inventory:client:ItemBox', src, QBCore.Shared.Items[k2], 'add', v2)
end
end
end
local notifyPoliceRoll = math.random(1, 100)
if notifyPoliceRoll <= sellLocation.policeAlertChance then
TriggerServerEvent('police:server:policeAlert', Lang:t('info.police_alert'))
end
end
else
if sellLocation.notificationsEnabled then
TriggerClientEvent('QBCore:Notify', src, Lang:t('error.not_enough', { itemLabel = QBCore.Shared.Items[k]['label'] }), 'error')
end
end
end
end
end)