88 lines
2.9 KiB
Lua
88 lines
2.9 KiB
Lua
local globalState = GlobalState
|
|
local prisonBreakcfg = require 'configs.prisonbreak'
|
|
local prisonModules = require 'modules.server.prisonbreak'
|
|
|
|
local function setPrisonAlarms(setState)
|
|
if globalState.prisonAlarms == setState then return end
|
|
|
|
globalState.prisonAlarms = setState
|
|
|
|
if setState then
|
|
prisonModules.alarmCountdown()
|
|
end
|
|
|
|
return (globalState.prisonAlarms == setState)
|
|
end
|
|
|
|
-- Toggle Prison Alarms --
|
|
lib.callback.register('xt-prison:server:setPrisonAlarms', function(_, setState)
|
|
return setPrisonAlarms(setState)
|
|
end)
|
|
|
|
RegisterNetEvent('xt-prison:server:setPrisonAlarmsChance', function(success)
|
|
local alarmChance = success and prisonBreakcfg.AlarmChanceOnHack.success or prisonBreakcfg.AlarmChanceOnHack.fail
|
|
if math.random(100) <= alarmChance then return end
|
|
setPrisonAlarms(true)
|
|
end)
|
|
|
|
-- Prisonbreak Terminal States --
|
|
RegisterNetEvent('xt-prison:server:setTerminalHackedState', function(terminalID, setState)
|
|
local src = source
|
|
prisonModules.setTerminalHackedState(src, terminalID, setState)
|
|
end)
|
|
|
|
lib.callback.register('xt-prison:server:setTerminalBusyState', function(source, terminalID, setState)
|
|
return prisonModules.setTerminalBusyState(source, terminalID, setState)
|
|
end)
|
|
|
|
-- Remove Hacking Item(s) --
|
|
RegisterNetEvent('xt-prison:server:removePrisonbreakItems', function(success)
|
|
local src = source
|
|
|
|
local removeItemsChance = success and prisonBreakcfg.RemoveItemsChanceOnHack.success or prisonBreakcfg.RemoveItemsChanceOnHack.fail
|
|
if math.random(100) <= removeItemsChance then return end
|
|
|
|
local requiredItems = prisonBreakcfg.RequiredItems
|
|
local removedCount = 0
|
|
|
|
for requiredItem, requiredCount in pairs(requiredItems) do
|
|
if exports.ox_inventory:RemoveItem(src, requiredItem, (requiredCount or 1)) then
|
|
removedCount += 1
|
|
if removedCount == #requiredItems then
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
-- Breakout of Prison --
|
|
RegisterNetEvent('xt-prison:server:triggerBreakout', function()
|
|
local src = source
|
|
prisonModules.prisonBreakout(src)
|
|
end)
|
|
|
|
AddEventHandler('onResourceStop', function(resource)
|
|
if resource ~= GetCurrentResourceName() then return end
|
|
globalState.prisonAlarms = false
|
|
|
|
-- Reset Hack Zones & Doors --
|
|
for x = 1, #prisonBreakcfg.HackZones do
|
|
local door = exports.ox_doorlock:getDoorFromName(prisonBreakcfg.HackZones[x].gate)
|
|
if door then
|
|
TriggerEvent('ox_doorlock:setState', door.id, true)
|
|
end
|
|
|
|
globalState[('PrisonTerminal_%s'):format(x)] = nil
|
|
end
|
|
end)
|
|
|
|
-- Create Hacking Terminals --
|
|
AddEventHandler('onResourceStart', function(resource)
|
|
if resource ~= GetCurrentResourceName() then return end
|
|
for x = 1, #prisonBreakcfg.HackZones do
|
|
globalState[('PrisonTerminal_%s'):format(x)] = {
|
|
isHacked = false,
|
|
isBusy = false
|
|
}
|
|
end
|
|
end) |