You could do something like this
local lootPool = {
{item = "water", probability = 0.5},
{item = "bread", probability = 0.3},
{item = "crypto_stick", probability = 0.1},
{item = "gold_watch", probability = 0.1}
}
local function getRandomItem()
local randomValue = math.random()
local cumulativeProbability = 0
for _, loot in ipairs(lootPool) do
cumulativeProbability = cumulativeProbability + loot.probability
if randomValue <= cumulativeProbability then
return loot.item
end
end
end
RegisterNetEvent('qb-customjob:server:CompleteTask')
AddEventHandler('qb-customjob:server:CompleteTask', function()
local src = source
local Player = QBCore.Functions.GetPlayer(src)
-- Normal payment logic
Player.Functions.AddMoney('cash', 100, "Completed job task")
-- Random item reward logic
local randomItem = getRandomItem()
if randomItem then
Player.Functions.AddItem(randomItem, 1)
TriggerClientEvent('inventory:client:ItemBox', src, QBCore.Shared.Items[randomItem], 'add')
end
end)