--[[ Main Server File]] server = { framework = shared.GetFrameworkObject(), load = false, } local HackedAtms = {} -- Loads module.bridge manage server-side functionality. require 'modules.bridge.server' local Utils = require 'modules.utils.server' local Inventory = require 'modules.inventory.server' --[[ functions ]] function server.IsAtmHacked(model, coords) for _, value in pairs(HackedAtms) do if value.model == model and #(coords - value.coords) <= 0.1 then return true end end return false end function server.SetAtmHacked(model, coords, hacker) if server.IsAtmHacked(model, coords) then return end table.insert(HackedAtms, { model = model, coords = coords, hacker = hacker, time = os.time() }) end --[[ events ]] lib.callback.register(_e('server:IsAtmHacked'), function(source, model, coords) print(model, coords, server.IsAtmHacked(model, coords)) return server.IsAtmHacked(model, coords) end) lib.callback.register(_e('server:HasItem'), function(source, itemName) return Inventory.HasItem(source, itemName, 1) end) RegisterNetEvent(_e('server:RemoveItem'), function(itemName) local source = source Inventory.RemoveItem(source, itemName, 1) end) RegisterNetEvent(_e('server:GiveItem'), function(itemName, itemCount) local source = source Inventory.GiveItem(source, itemName, itemCount) end) --[[ threads ]] Citizen.CreateThread(function() while true do local wait = 60000 local newHackedAtms = {} for key, value in pairs(HackedAtms) do local hackTime = value.time local remainingTime = os.time() - hackTime if remainingTime < Config.AtmCooldown then table.insert(newHackedAtms, value) end end HackedAtms = newHackedAtms Citizen.Wait(wait) end end)