125 lines
4.4 KiB
Lua
125 lines
4.4 KiB
Lua
|
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)
|