221 lines
6.5 KiB
Lua
221 lines
6.5 KiB
Lua
-- 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) |