Scripts/resources/[qb]/[qb_crimes]/qb-houserobbery/server/main.lua

125 lines
4.4 KiB
Lua
Raw Normal View History

2024-12-29 20:03:28 +00:00
local QBCore = exports['qb-core']:GetCoreObject()
-- Functions
local function ResetHouseStateTimer(house)
local num = math.random(3333333, 11111111)
local time = tonumber(num)
SetTimeout(time, function()
Config.Houses[house]["opened"] = false
for _, v in pairs(Config.Houses[house]["furniture"]) do
v["searched"] = false
end
TriggerClientEvent('qb-houserobbery:client:ResetHouseState', -1, house)
end)
end
-- Callbacks
QBCore.Functions.CreateCallback('qb-houserobbery:server:GetHouseConfig', function(_, cb)
cb(Config.Houses)
end)
-- Events
RegisterNetEvent('qb-houserobbery:server:SetBusyState', function(cabin, house, bool)
Config.Houses[house]["furniture"][cabin]["isBusy"] = bool
TriggerClientEvent('qb-houserobbery:client:SetBusyState', -1, cabin, house, bool)
end)
RegisterNetEvent('qb-houserobbery:server:enterHouse', function(house)
local src = source
if not Config.Houses[house]["opened"] then
ResetHouseStateTimer(house)
TriggerClientEvent('qb-houserobbery:client:setHouseState', -1, house, true)
end
TriggerClientEvent('qb-houserobbery:client:enterHouse', src, house)
Config.Houses[house]["opened"] = true
end)
RegisterNetEvent('qb-houserobbery:server:searchCabin', function(cabin, house)
local src = source
local Player = QBCore.Functions.GetPlayer(src)
local luck = math.random(1, 10)
local itemFound = math.random(1, 4)
local itemCount = 1
local Tier = 1
if Config.Houses[house]["tier"] == 1 then
Tier = 1
elseif Config.Houses[house]["tier"] == 2 then
Tier = 2
elseif Config.Houses[house]["tier"] == 3 then
Tier = 3
end
if itemFound < 4 then
if luck == 10 then
itemCount = 3
elseif luck >= 6 and luck <= 8 then
itemCount = 2
end
for _ = 1, itemCount, 1 do
local randomItem = Config.Rewards.Tiers[Tier][Config.Houses[house]["furniture"][cabin]["type"]][math.random(1, #Config.Rewards.Tiers[Tier][Config.Houses[house]["furniture"][cabin]["type"]])]
local itemInfo = QBCore.Shared.Items[randomItem]
if math.random(1, 100) == 69 then
randomItem = "painkillers"
itemInfo = QBCore.Shared.Items[randomItem]
Player.Functions.AddItem(randomItem, 2)
TriggerClientEvent('inventory:client:ItemBox', src, itemInfo, "add")
elseif math.random(1, 100) == 35 then
randomItem = "weed_og-kush_seed"
itemInfo = QBCore.Shared.Items[randomItem]
Player.Functions.AddItem(randomItem, 1)
TriggerClientEvent('inventory:client:ItemBox', src, itemInfo, "add")
else
if not itemInfo["unique"] then
local itemAmount = math.random(1, 3)
if randomItem == "plastic" then
itemAmount = math.random(15, 30)
elseif randomItem == "goldchain" then
itemAmount = math.random(1, 4)
elseif randomItem == "pistol_ammo" then
itemAmount = math.random(1, 3)
elseif randomItem == "weed_skunk" then
itemAmount = math.random(1, 6)
elseif randomItem == "cryptostick" then
itemAmount = math.random(1, 2)
end
Player.Functions.AddItem(randomItem, itemAmount)
else
Player.Functions.AddItem(randomItem, 1)
end
TriggerClientEvent('inventory:client:ItemBox', src, itemInfo, "add")
end
Wait(500)
-- local weaponChance = math.random(1, 100)
end
else
TriggerClientEvent('QBCore:Notify', src, Lang:t("error.emty_box"), 'error')
end
Config.Houses[house]["furniture"][cabin]["searched"] = true
TriggerClientEvent('qb-houserobbery:client:setCabinState', -1, house, cabin, true)
end)
RegisterNetEvent('qb-houserobbery:server:removeAdvancedLockpick', function()
local Player = QBCore.Functions.GetPlayer(source)
if not Player then return end
Player.Functions.RemoveItem('advancedlockpick', 1)
end)
RegisterNetEvent('qb-houserobbery:server:removeLockpick', function()
local Player = QBCore.Functions.GetPlayer(source)
if not Player then return end
Player.Functions.RemoveItem('lockpick', 1)
end)