-- Toggles Invincibility local visible = true RegisterNetEvent('ps-adminmenu:client:ToggleInvisible', function(data) local data = CheckDataFromKey(data) if not data or not CheckPerms(data.perms) then return end visible = not visible SetEntityVisible(cache.ped, visible, 0) end) -- God Mode local godmode = false RegisterNetEvent('ps-adminmenu:client:ToggleGodmode', function(data) local data = CheckDataFromKey(data) if not data or not CheckPerms(data.perms) then return end godmode = not godmode if godmode then QBCore.Functions.Notify(locale("godmode", "enabled"), 'primary') exports['qb-ambulancejob']:ResetAll() while godmode do Wait(0) SetPlayerInvincible(cache.playerId, true) end SetPlayerInvincible(cache.playerId, false) QBCore.Functions.Notify(locale("godmode", "disabled"), 'primary') end end) -- Cuff/Uncuff RegisterNetEvent('ps-adminmenu:client:ToggleCuffs', function(player) local target = GetPlayerServerId(player) TriggerEvent("police:client:GetCuffed", target) end) -- Copy Coordinates local function CopyCoords(data) local coords = GetEntityCoords(cache.ped) local heading = GetEntityHeading(cache.ped) local formats = { vector2 = "%.2f, %.2f", vector3 = "%.2f, %.2f, %.2f", vector4 = "%.2f, %.2f, %.2f, %.2f", heading = "%.2f" } local format = formats[data] local clipboardText = "" if data == "vector2" then clipboardText = string.format(format, coords.x, coords.y) elseif data == "vector3" then clipboardText = string.format(format, coords.x, coords.y, coords.z) elseif data == "vector4" then clipboardText = string.format(format, coords.x, coords.y, coords.z, heading) elseif data == "heading" then clipboardText = string.format(format, heading) end lib.setClipboard(clipboardText) end RegisterCommand("vector2", function() if not CheckPerms('mod') then return end CopyCoords("vector2") end, false) RegisterCommand("vector3", function() if not CheckPerms('mod') then return end CopyCoords("vector3") end, false) RegisterCommand("vector4", function() if not CheckPerms('mod') then return end CopyCoords("vector4") end, false) RegisterCommand("heading", function() if not CheckPerms('mod') then return end CopyCoords("heading") end, false) -- Infinite Ammo local InfiniteAmmo = false RegisterNetEvent('ps-adminmenu:client:setInfiniteAmmo', function(data) local data = CheckDataFromKey(data) if not data or not CheckPerms(data.perms) then return end InfiniteAmmo = not InfiniteAmmo if GetAmmoInPedWeapon(cache.ped, cache.weapon) < 6 then SetAmmoInClip(cache.ped, cache.weapon, 10) Wait(50) end while InfiniteAmmo do SetPedInfiniteAmmo(cache.ped, true, cache.weapon) RefillAmmoInstantly(cache.ped) Wait(250) end SetPedInfiniteAmmo(cache.ped, false, cache.weapon) end) -- Toggle coords local showCoords = false local function showCoordsMenu() while showCoords do Wait(50) local coords = GetEntityCoords(PlayerPedId()) local heading = GetEntityHeading(PlayerPedId()) SendNUIMessage({ action = "showCoordsMenu", data = { show = showCoords, x = QBCore.Shared.Round(coords.x, 2), y = QBCore.Shared.Round(coords.y, 2), z = QBCore.Shared.Round(coords.z, 2), heading = QBCore.Shared.Round(heading, 2) } }) end end RegisterNetEvent('ps-adminmenu:client:ToggleCoords', function(data) local data = CheckDataFromKey(data) if not data or not CheckPerms(data.perms) then return end showCoords = not showCoords if showCoords then CreateThread(showCoordsMenu) end end) -- Set Ammo RegisterNetEvent('ps-adminmenu:client:SetAmmo', function(data, selectedData) local data = CheckDataFromKey(data) if not data or not CheckPerms(data.perms) then return end local ammo = selectedData["Ammo Ammount"].value local weapon = GetSelectedPedWeapon(cache.ped) if weapon ~= nil then SetPedAmmo(cache.ped, weapon, ammo) QBCore.Functions.Notify(locale("set_wepaon_ammo", tostring(ammo)), 'success') else QBCore.Functions.Notify(locale("no_weapon"), 'error') end end) RegisterCommand("setammo", function(source) if not CheckPerms('mod') then return end local weapon = GetSelectedPedWeapon(cache.ped) local ammo = 999 if weapon ~= nil then SetPedAmmo(cache.ped, weapon, ammo) QBCore.Functions.Notify(locale("set_wepaon_ammo", tostring(ammo)), 'success') else QBCore.Functions.Notify(locale("no_weapon"), 'error') end end, false) --Toggle Dev local ToggleDev = false RegisterNetEvent('ps-adminmenu:client:ToggleDev', function(dataKey) local data = CheckDataFromKey(dataKey) if not data or not CheckPerms(data.perms) then return end ToggleDev = not ToggleDev SetPlayerInvincible(PlayerId(), ToggleDev) -- toggle dev mode (ps-hud/qb-hud) TriggerEvent('ps-adminmenu:client:ToggleCoords', dataKey) -- toggle Coords TriggerEvent('ps-adminmenu:client:ToggleGodmode', dataKey) -- Godmode QBCore.Functions.Notify(locale("toggle_dev"), 'success') end) -- Key Bindings local toogleAdmin = lib.addKeybind({ name = 'toogleAdmin', description = locale("command_admin_desc"), defaultKey = Config.AdminKey, onPressed = function(self) ExecuteCommand('admin') end }) --noclip RegisterCommand('nc', function() TriggerEvent(Config.Actions["noclip"].event) end, false) RegisterCommand('debug', function() TriggerEvent(Config.Actions["debug"].event) end, false) RegisterCommand('dev', function() TriggerEvent(Config.OtherActions["toggleDevmode"].event) TriggerEvent(Config.Actions["debug"].event) end, false) local toogleNoclip = lib.addKeybind({ name = 'toogleNoclip', description = locale("command_noclip_desc"), defaultKey = Config.NoclipKey, onPressed = function(self) ExecuteCommand('nc') end }) if Config.Keybindings then toogleAdmin:disable(false) toogleNoclip:disable(false) else toogleAdmin:disable(true) toogleNoclip:disable(true) end -- Set Ped RegisterNetEvent("ps-adminmenu:client:setPed", function(pedModels) lib.requestModel(pedModels, 1500) SetPlayerModel(cache.playerId, pedModels) SetPedDefaultComponentVariation(cache.ped) SetModelAsNoLongerNeeded(pedModels) end)