From 1dde82348635b5ef6eb23c93d9642642086a6042 Mon Sep 17 00:00:00 2001 From: Spudgun Date: Tue, 23 Aug 2022 19:53:06 +1200 Subject: [PATCH 1/8] feat: first character of word to uppercase function --- shared/main.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/shared/main.lua b/shared/main.lua index 3eb8f61..6b09b12 100644 --- a/shared/main.lua +++ b/shared/main.lua @@ -35,6 +35,11 @@ function QBShared.Trim(value) return (string.gsub(value, '^%s*(.-)%s*$', '%1')) end +function QBShared.FirstToUpper(value) + if not value then return nil end + return (value:gsub("^%l", string.upper)) +end + function QBShared.Round(value, numDecimalPlaces) if not numDecimalPlaces then return math.floor(value + 0.5) end local power = 10 ^ numDecimalPlaces From c61d0b204e88e13c7413a3e53f48584742f0480c Mon Sep 17 00:00:00 2001 From: Spudgun Date: Wed, 24 Aug 2022 18:57:53 +1200 Subject: [PATCH 2/8] tweak: HasPermissions accept both string and table Enables single and multiple permission checks --- server/functions.lua | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/server/functions.lua b/server/functions.lua index 045e6fc..08aa696 100644 --- a/server/functions.lua +++ b/server/functions.lua @@ -357,7 +357,14 @@ end function QBCore.Functions.HasPermission(source, permission) local src = source - if IsPlayerAceAllowed(src, permission) then return true end + if type(permission) == "string" then + if IsPlayerAceAllowed(src, permission) then return true end + elseif type(permission) == "table" then + for _, permLevel in pairs(permission) do + if IsPlayerAceAllowed(src, permLevel) then return true end + end + end + return false end From 59ae47fa92380b520399b0fecea7d3e0e5264afc Mon Sep 17 00:00:00 2001 From: BerkieBb <82737367+BerkieBb@users.noreply.github.com> Date: Wed, 24 Aug 2022 15:05:12 +0200 Subject: [PATCH 3/8] feat(server/player): hud update on SetMoney --- server/player.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/server/player.lua b/server/player.lua index becc47e..7044df6 100644 --- a/server/player.lua +++ b/server/player.lua @@ -351,6 +351,7 @@ function QBCore.Player.CreatePlayer(PlayerData, Offline) if not self.Offline then self.Functions.UpdatePlayerData() TriggerEvent('qb-log:server:CreateLog', 'playermoney', 'SetMoney', 'green', '**' .. GetPlayerName(self.PlayerData.source) .. ' (citizenid: ' .. self.PlayerData.citizenid .. ' | id: ' .. self.PlayerData.source .. ')** $' .. amount .. ' (' .. moneytype .. ') set, new ' .. moneytype .. ' balance: ' .. self.PlayerData.money[moneytype] .. ' reason: ' .. reason) + TriggerClientEvent('hud:client:OnMoneyChange', self.PlayerData.source, moneytype, math.abs(difference), difference < 0) TriggerClientEvent('QBCore:Client:OnMoneyChange', self.PlayerData.source, moneytype, amount, "set") TriggerEvent('QBCore:Server:OnMoneyChange', self.PlayerData.source, moneytype, amount, "set") end From d563a898915808b1677c998ae38c8d0187e04f28 Mon Sep 17 00:00:00 2001 From: BerkieBb <82737367+BerkieBb@users.noreply.github.com> Date: Wed, 24 Aug 2022 15:06:40 +0200 Subject: [PATCH 4/8] fix(server/player): add forgotten variable for setmoney --- server/player.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/server/player.lua b/server/player.lua index 7044df6..823f647 100644 --- a/server/player.lua +++ b/server/player.lua @@ -346,6 +346,7 @@ function QBCore.Player.CreatePlayer(PlayerData, Offline) amount = tonumber(amount) if amount < 0 then return false end if not self.PlayerData.money[moneytype] then return false end + local difference = amount - self.PlayerData.money[moneytype] self.PlayerData.money[moneytype] = amount if not self.Offline then From 7e52fbe9376c1510579586f8eae67f2786cb6d65 Mon Sep 17 00:00:00 2001 From: BerkieBb <82737367+BerkieBb@users.noreply.github.com> Date: Thu, 25 Aug 2022 17:42:20 +0200 Subject: [PATCH 5/8] chore(server/main): move QBCore.UseableItems --- server/main.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/server/main.lua b/server/main.lua index 09b0474..368dc05 100644 --- a/server/main.lua +++ b/server/main.lua @@ -3,7 +3,6 @@ QBCore.Config = QBConfig QBCore.Shared = QBShared QBCore.ClientCallbacks = {} QBCore.ServerCallbacks = {} -QBCore.UseableItems = {} exports('GetCoreObject', function() return QBCore From 8557e599f0b6adfbd461fec7f46bac7893db3d04 Mon Sep 17 00:00:00 2001 From: BerkieBb <82737367+BerkieBb@users.noreply.github.com> Date: Thu, 25 Aug 2022 17:42:55 +0200 Subject: [PATCH 6/8] tweak(server/functions): usableitems are back in the core --- server/functions.lua | 29 ++++------------------------- 1 file changed, 4 insertions(+), 25 deletions(-) diff --git a/server/functions.lua b/server/functions.lua index 08aa696..f586e1e 100644 --- a/server/functions.lua +++ b/server/functions.lua @@ -1,6 +1,7 @@ QBCore.Functions = {} QBCore.Player_Buckets = {} QBCore.Entity_Buckets = {} +QBCore.UsableItems = {} -- Getters -- Get your player first and then trigger a function on them @@ -251,24 +252,12 @@ end -- Items -function QBCore.Functions.CreateUseableItem(item, cb) - if GetResourceState('qb-inventory') == 'missing' then return end - - if GetResourceState('qb-inventory') ~= 'started' then - CreateThread(function() - repeat - Wait(1000) - until GetResourceState('qb-inventory') == 'started' - exports['qb-inventory']:CreateUsableItem(item, cb) - end) - else - exports['qb-inventory']:CreateUsableItem(item, cb) - end +function QBCore.Functions.CreateUseableItem(item, data) + QBCore.UsableItems[item] = data end function QBCore.Functions.CanUseItem(item) - if GetResourceState('qb-inventory') == 'missing' then return end - return exports['qb-inventory']:GetUsableItem(item) + return QBCore.UsableItems[item] end function QBCore.Functions.UseItem(source, item) @@ -276,16 +265,6 @@ function QBCore.Functions.UseItem(source, item) exports['qb-inventory']:UseItem(source, item) end -exports('SetUseableItems', function(val) - QBCore.UseableItems = val -end) - -exports('SetUseableItem', function(item, cb) - QBCore.UseableItems[item] = cb -end) - -exports('GetUseableItems', function() return QBCore.UseableItems end) - -- Kick Player function QBCore.Functions.Kick(source, reason, setKickReason, deferrals) From 156182dd937e5dd690218ec9608ef62f6a641f5a Mon Sep 17 00:00:00 2001 From: Kakarot <57848836+GhzGarage@users.noreply.github.com> Date: Fri, 26 Aug 2022 08:49:22 -0500 Subject: [PATCH 7/8] Update events.lua --- server/events.lua | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/server/events.lua b/server/events.lua index 9fedad9..a9ccbbc 100644 --- a/server/events.lua +++ b/server/events.lua @@ -237,3 +237,39 @@ QBCore.Functions.CreateCallback('QBCore:Server:CreateVehicle', function(source, if warp then TaskWarpPedIntoVehicle(GetPlayerPed(source), veh, -1) end cb(NetworkGetNetworkIdFromEntity(veh)) end) + +-- Callback (maintain backwards compatibility) + +QBCore.Functions.CreateCallback('QBCore:HasItem', function(source, cb, items, amount) + local retval = false + local Player = QBCore.Functions.GetPlayer(source) + if not Player then return cb(false) end + local isTable = type(items) == 'table' + local isArray = isTable and table.type(items) == 'array' or false + local totalItems = #items + local count = 0 + local kvIndex = 2 + if isTable and not isArray then + totalItems = 0 + for _ in pairs(items) do totalItems += 1 end + kvIndex = 1 + end + if isTable then + for k, v in pairs(items) do + local itemKV = {k, v} + local item = Player.Functions.GetItemByName(itemKV[kvIndex]) + if item and ((amount and item.amount >= amount) or (not amount and not isArray and item.amount >= v) or (not amount and isArray)) then + count += 1 + end + end + if count == totalItems then + retval = true + end + else -- Single item as string + local item = Player.Functions.GetItemByName(items) + if item and not amount or (amount and item.amount >= amount) then + retval = true + end + end + cb(retval) +end) From a734211478e3cb106e349e8295ea1a16e3cf01a9 Mon Sep 17 00:00:00 2001 From: Kakarot <57848836+GhzGarage@users.noreply.github.com> Date: Fri, 26 Aug 2022 09:23:41 -0500 Subject: [PATCH 8/8] Update events.lua --- server/events.lua | 38 +++----------------------------------- 1 file changed, 3 insertions(+), 35 deletions(-) diff --git a/server/events.lua b/server/events.lua index a9ccbbc..06876ce 100644 --- a/server/events.lua +++ b/server/events.lua @@ -238,38 +238,6 @@ QBCore.Functions.CreateCallback('QBCore:Server:CreateVehicle', function(source, cb(NetworkGetNetworkIdFromEntity(veh)) end) --- Callback (maintain backwards compatibility) - -QBCore.Functions.CreateCallback('QBCore:HasItem', function(source, cb, items, amount) - local retval = false - local Player = QBCore.Functions.GetPlayer(source) - if not Player then return cb(false) end - local isTable = type(items) == 'table' - local isArray = isTable and table.type(items) == 'array' or false - local totalItems = #items - local count = 0 - local kvIndex = 2 - if isTable and not isArray then - totalItems = 0 - for _ in pairs(items) do totalItems += 1 end - kvIndex = 1 - end - if isTable then - for k, v in pairs(items) do - local itemKV = {k, v} - local item = Player.Functions.GetItemByName(itemKV[kvIndex]) - if item and ((amount and item.amount >= amount) or (not amount and not isArray and item.amount >= v) or (not amount and isArray)) then - count += 1 - end - end - if count == totalItems then - retval = true - end - else -- Single item as string - local item = Player.Functions.GetItemByName(items) - if item and not amount or (amount and item.amount >= amount) then - retval = true - end - end - cb(retval) -end) +--QBCore.Functions.CreateCallback('QBCore:HasItem', function(source, cb, items, amount) +-- https://github.com/qbcore-framework/qb-inventory/blob/e4ef156d93dd1727234d388c3f25110c350b3bcf/server/main.lua#L2066 +--end)