local GUI = {} local hasAlreadyEnteredMarker = false GUI.MenuIsShowed = false ESX = nil Citizen.CreateThread(function() while ESX == nil do TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) Citizen.Wait(0) end end) TriggerEvent('es:setDefaultSettings', { nativeMoneySystem = false, }) RegisterNetEvent('esx_atm:closeATM') AddEventHandler('esx_atm:closeATM', function() SetNuiFocus(false) GUI.MenuIsShowed = false SendNUIMessage({ hideAll = true }) end) RegisterNUICallback('escape', function(data, cb) TriggerEvent('esx_atm:closeATM') cb('ok') end) RegisterNUICallback('deposit', function(data, cb) TriggerServerEvent('esx_atm:deposit', data.amount) cb('ok') end) RegisterNUICallback('withdraw', function(data, cb) TriggerServerEvent('esx_atm:withdraw', data.amount) cb('ok') end) -- Create blips Citizen.CreateThread(function() for i=1, #Config.ATMS, 1 do local blip = AddBlipForCoord(Config.ATMS[i].x, Config.ATMS[i].y, Config.ATMS[i].z - Config.ZDiff) SetBlipSprite (blip, Config.BlipSprite) SetBlipDisplay(blip, 4) SetBlipScale (blip, 0.9) SetBlipColour (blip, 2) SetBlipAsShortRange(blip, true) BeginTextCommandSetBlipName("STRING") AddTextComponentString("ATM") EndTextCommandSetBlipName(blip) end end) -- Render markers Citizen.CreateThread(function() while true do Wait(0) local coords = GetEntityCoords(GetPlayerPed(-1)) for i=1, #Config.ATMS, 1 do if(GetDistanceBetweenCoords(coords, Config.ATMS[i].x, Config.ATMS[i].y, Config.ATMS[i].z, true) < Config.DrawDistance) then DrawMarker(Config.MarkerType, Config.ATMS[i].x, Config.ATMS[i].y, Config.ATMS[i].z - Config.ZDiff, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.ZoneSize.x, Config.ZoneSize.y, Config.ZoneSize.z, Config.MarkerColor.r, Config.MarkerColor.g, Config.MarkerColor.b, 100, false, true, 2, false, false, false, false) end end end end) -- Activate menu when player is inside marker Citizen.CreateThread(function() while true do Wait(0) local coords = GetEntityCoords(GetPlayerPed(-1)) local isInMarker = false for i=1, #Config.ATMS, 1 do if(GetDistanceBetweenCoords(coords, Config.ATMS[i].x, Config.ATMS[i].y, Config.ATMS[i].z, true) < Config.ZoneSize.x / 2) then isInMarker = true SetTextComponentFormat('STRING') AddTextComponentString('Appuyez sur ~INPUT_PICKUP~ pour déposer ou retirer du ~g~cash~s~.') DisplayHelpTextFromStringLabel(0, 0, 1, -1) end end if isInMarker and not hasAlreadyEnteredMarker then hasAlreadyEnteredMarker = true --TriggerEvent('esx_atm:hasEnteredMarker') end if not isInMarker and hasAlreadyEnteredMarker then hasAlreadyEnteredMarker = false SetNuiFocus(false) GUI.MenuIsShowed = false SendNUIMessage({ hideAll = true }) end end end) -- Menu interactions Citizen.CreateThread(function() while true do Wait(0) if GUI.MenuIsShowed then DisableControlAction(0, 1, true) -- LookLeftRight DisableControlAction(0, 2, true) -- LookUpDown DisableControlAction(0, 142, true) -- MeleeAttackAlternate DisableControlAction(0, 106, true) -- VehicleMouseControlOverride if IsDisabledControlJustReleased(0, 142) then -- MeleeAttackAlternate SendNUIMessage({ click = true }) end else if IsControlJustReleased(0, 38) then GUI.MenuIsShowed = true ESX.TriggerServerCallback('esx:getPlayerData', function(data) SendNUIMessage({ showMenu = true, player = { money = data.money, accounts = data.accounts } }) end) SetNuiFocus(true) end end end end)