Merge pull request #358 from Mitroxs/main

Introduction to Routingbuckets
This commit is contained in:
Kakarot
2021-12-19 20:04:34 -06:00
committed by GitHub
2 changed files with 73 additions and 0 deletions
+1
View File
@@ -6,6 +6,7 @@ AddEventHandler('playerDropped', function()
local Player = QBCore.Players[src]
TriggerEvent('qb-log:server:CreateLog', 'joinleave', 'Dropped', 'red', '**' .. GetPlayerName(src) .. '** (' .. Player.PlayerData.license .. ') left..')
Player.Functions.Save()
_G.QBCore.Player_Buckets[Player.PlayerData.license] = nil
QBCore.Players[src] = nil
end
end)
+72
View File
@@ -107,6 +107,78 @@ function QBCore.Functions.GetDutyCount(job)
return count
end
--- Routingbucket stuff (Only touch if you know what you are doing)
_G.Player_Buckets = {} -- Bucket array containing all players that have been set to a different bucket
_G.Entity_Buckets = {} -- Bucket array containing all entities that have been set to a different bucket
--- Returns the objects related to buckets, first returned value is the player buckets , second one is entity buckets
function QBCore.Functions.GetBucketObjects()
return _G.Player_Buckets, _G.Entity_Buckets
end
--- Will set the provided player id / source into the provided bucket id
function QBCore.Functions.SetPlayerBucket(player_source --[[int]],bucket --[[int]])
if player_source and bucket then
local plicense = QBCore.Functions.GetIdentifier(player_source, 'license')
SetPlayerRoutingBucket(player_source, bucket)
_G.Player_Buckets[plicense] = {player_id = player_source, player_bucket = bucket}
return true
else
return false
end
end
--- Will set any entity into the provided bucket, for example peds / vehicles / props / etc...
function QBCore.Functions.SetEntityBucket(entity --[[int]],bucket --[[int]])
if entity and bucket then
SetEntityRoutingBucket(entity, bucket)
_G.Entity_Buckets[entity] = {entity_id = entity, entity_bucket = bucket}
return true
else
return false
end
end
-- Will return an array of all the player ids inside the current bucket
function QBCore.Functions.GetPlayersInBucket(bucket --[[int]])
local curr_bucket_pool = {}
if _G.Player_Buckets ~= nil then
for k, v in pairs(_G.Player_Buckets) do
if k['player_bucket'] == bucket then
curr_bucket_pool[#curr_bucket_pool + 1] = k['player_id']
end
end
return curr_bucket_pool
else
return false
end
end
--- Will return an array of all the entities inside the current bucket (Not player entities , use GetPlayersInBucket for that)
function QBCore.Functions.GetEntitiesInBucket(bucket --[[int]])
local curr_bucket_pool = {}
if _G.Entity_Buckets ~= nil then
for k, v in pairs(_G.Entity_Buckets) do
if k['entity_bucket'] == bucket then
curr_bucket_pool[#curr_bucket_pool + 1] = k['entity_id']
end
end
return curr_bucket_pool
else
return false
end
end
--- Will return true / false wheter the mentioned player id is present in the bucket provided
function QBCore.Functions.IsPlayerInBucket(player_source --[[int]] ,bucket --[[int]])
local curr_player_bucket = GetPlayerRoutingBucket(player_source)
return curr_player_bucket == bucket
end
-- Paychecks (standalone - don't touch)
function PaycheckLoop()