Scripts/resources/[ps]/ps-adminmenu/server/misc.lua
2024-12-29 21:11:16 +01:00

331 lines
12 KiB
Lua

-- Ban Player
RegisterNetEvent('ps-adminmenu:server:BanPlayer', function(data, selectedData)
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then return end
local player = selectedData["Player"].value
local reason = selectedData["Reason"].value or ""
local time = selectedData["Duration"].value
local banTime = tonumber(os.time() + time)
local timeTable = os.date('*t', banTime)
MySQL.insert('INSERT INTO bans (name, license, discord, ip, reason, expire, bannedby) VALUES (?, ?, ?, ?, ?, ?, ?)',
{ GetPlayerName(player), QBCore.Functions.GetIdentifier(player, 'license'), QBCore.Functions.GetIdentifier(
player, 'discord'), 'ip:0.0.0.0', reason, banTime, GetPlayerName(source) })
if time == 2147483647 then
DropPlayer(player, locale("banned") .. '\n' .. locale("reason") .. reason .. locale("ban_perm"))
else
DropPlayer(player,
locale("banned") ..
'\n' ..
locale("reason") ..
reason ..
'\n' ..
locale("ban_expires") ..
timeTable['day'] ..
'/' .. timeTable['month'] .. '/' .. timeTable['year'] .. ' ' .. timeTable['hour'] .. ':' .. timeTable['min'])
end
QBCore.Functions.Notify(source, locale("playerbanned", player, banTime, reason), 'success', 7500)
end)
RegisterNetEvent('ps-adminmenu:server:ServerMessage' , function(data, selectedData)
local target = -1
local from = 'Staff'
local message = selectedData["Message"].value
local time = selectedData["Duration"].value or 10
if message == "" then
return
end
if selectedData["Player"] then
target = selectedData["Player"].value
from = GetPlayerName(source)
QBCore.Functions.Notify(source, 'Besked sendt til '..GetPlayerName(target).."!")
end
TriggerClientEvent('ox_lib:notify', -1, {
id = 'AdminNotification',
title = 'Info fra '..from,
description = message,
-- type = 'inform',
duration = (time * 1000),
position = 'top',
iconColor = '#ffffff',
iconAnimation = 'beatFade',
style = {
backgroundColor = '#3377ff',
color = '#ffffff',
['.description'] = {
color = '#ffffff'
}
},
})
TriggerClientEvent('InteractSound_CL:PlayOnAll', target, "announcement", 0.4)
end)
-- Warn Player
RegisterNetEvent('ps-adminmenu:server:WarnPlayer', function(data, selectedData)
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then return end
local targetId = selectedData["Player"].value
local target = QBCore.Functions.GetPlayer(targetId)
local reason = selectedData["Reason"].value
local sender = QBCore.Functions.GetPlayer(source)
local warnId = 'ADVAR-' .. math.random(1000, 9999)
if target ~= nil then
QBCore.Functions.Notify(target.PlayerData.source,
locale("warned") .. ", for: " .. locale("reason") .. ": " .. reason, 'info', 10000)
QBCore.Functions.Notify(source,
locale("warngiven") .. GetPlayerName(target.PlayerData.source) .. ", for: " .. reason)
MySQL.insert('INSERT INTO player_warns (senderIdentifier, targetIdentifier, reason, warnId) VALUES (?, ?, ?, ?)',
{
sender.PlayerData.license,
target.PlayerData.license,
reason,
warnId
})
else
TriggerClientEvent('QBCore:Notify', source, locale("not_online"), 'error')
end
end)
RegisterNetEvent('ps-adminmenu:server:KickPlayer', function(data, selectedData)
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then return end
local src = source
local target = QBCore.Functions.GetPlayer(selectedData["Player"].value)
local reason = selectedData["Reason"].value
if not target then
QBCore.Functions.Notify(src, locale("not_online"), 'error', 7500)
return
end
DropPlayer(target.PlayerData.source, locale("kicked") .. '\n' .. locale("reason") .. reason)
end)
-- Revive Player
RegisterNetEvent('ps-adminmenu:server:Revive', function(data, selectedData)
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then return end
local player = selectedData["Player"].value
TriggerClientEvent('hospital:client:Revive', player)
end)
-- Revive All
RegisterNetEvent('ps-adminmenu:server:ReviveAll', function(data)
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then return end
TriggerClientEvent('hospital:client:Revive', -1)
end)
-- Revive Radius
RegisterNetEvent('ps-adminmenu:server:ReviveRadius', function(data)
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then return end
local src = source
local ped = GetPlayerPed(src)
local pos = GetEntityCoords(ped)
local players = QBCore.Functions.GetPlayers()
for k, v in pairs(players) do
local target = GetPlayerPed(v)
local targetPos = GetEntityCoords(target)
local dist = #(pos - targetPos)
if dist < 15.0 then
TriggerClientEvent("hospital:client:Revive", v)
end
end
end)
-- Set RoutingBucket
RegisterNetEvent('ps-adminmenu:server:SetBucket', function(data, selectedData)
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then return end
local src = source
local player = selectedData["Player"].value
local bucket = selectedData["Bucket"].value
local currentBucket = GetPlayerRoutingBucket(player)
if bucket == currentBucket then
return QBCore.Functions.Notify(src, locale("target_same_bucket", player), 'error', 7500)
end
SetPlayerRoutingBucket(player, bucket)
QBCore.Functions.Notify(src, locale("bucket_set_for_target", player, bucket), 'success', 7500)
end)
-- Get RoutingBucket
RegisterNetEvent('ps-adminmenu:server:GetBucket', function(data, selectedData)
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then return end
local src = source
local player = selectedData["Player"].value
local currentBucket = GetPlayerRoutingBucket(player)
QBCore.Functions.Notify(src, locale("bucket_get", player, currentBucket), 'success', 7500)
end)
-- Give Money
RegisterNetEvent('ps-adminmenu:server:GiveMoney', function(data, selectedData)
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then return end
local src = source
local target, amount, moneyType = selectedData["Player"].value, selectedData["Amount"].value,
selectedData["Type"].value
local Player = QBCore.Functions.GetPlayer(tonumber(target))
if Player == nil then
return QBCore.Functions.Notify(src, locale("not_online"), 'error', 7500)
end
Player.Functions.AddMoney(tostring(moneyType), tonumber(amount))
QBCore.Functions.Notify(src,
locale((moneyType == "crypto" and "give_money_crypto" or "give_money"), tonumber(amount),
Player.PlayerData.charinfo.firstname .. " " .. Player.PlayerData.charinfo.lastname), "success")
end)
-- Give Money to all
RegisterNetEvent('ps-adminmenu:server:GiveMoneyAll', function(data, selectedData)
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then return end
local src = source
local amount, moneyType = selectedData["Amount"].value, selectedData["Type"].value
local players = QBCore.Functions.GetPlayers()
for _, v in pairs(players) do
local Player = QBCore.Functions.GetPlayer(tonumber(v))
Player.Functions.AddMoney(tostring(moneyType), tonumber(amount))
QBCore.Functions.Notify(src,
locale((moneyType == "crypto" and "give_money_all_crypto" or "give_money_all"), tonumber(amount)), "success")
end
end)
-- Take Money
RegisterNetEvent('ps-adminmenu:server:TakeMoney', function(data, selectedData)
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then return end
local src = source
local target, amount, moneyType = selectedData["Player"].value, selectedData["Amount"].value,
selectedData["Type"].value
local Player = QBCore.Functions.GetPlayer(tonumber(target))
if Player == nil then
return QBCore.Functions.Notify(src, locale("not_online"), 'error', 7500)
end
if Player.PlayerData.money[moneyType] >= tonumber(amount) then
Player.Functions.RemoveMoney(moneyType, tonumber(amount), "state-fees")
else
QBCore.Functions.Notify(src, locale("not_enough_money"), "primary")
end
QBCore.Functions.Notify(src,
locale((moneyType == "crypto" and "take_money_crypto" or "take_money"), tonumber(amount) .. ",-",
Player.PlayerData.charinfo.firstname .. " " .. Player.PlayerData.charinfo.lastname), "success")
end)
-- Blackout
local Blackout = false
RegisterNetEvent('ps-adminmenu:server:ToggleBlackout', function(data)
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then return end
Blackout = not Blackout
local src = source
if Blackout then
TriggerClientEvent('QBCore:Notify', src, locale("blackout", "enabled"), 'primary')
while Blackout do
Wait(0)
exports["qb-weathersync"]:setBlackout(true)
end
exports["qb-weathersync"]:setBlackout(false)
TriggerClientEvent('QBCore:Notify', src, locale("blackout", "disabled"), 'primary')
end
end)
-- Toggle Cuffs
RegisterNetEvent('ps-adminmenu:server:CuffPlayer', function(data, selectedData)
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then return end
local target = selectedData["Player"].value
TriggerClientEvent('ps-adminmenu:client:ToggleCuffs', target)
QBCore.Functions.Notify(source, locale("toggled_cuffs"), 'success')
end)
-- Give Clothing Menu
RegisterNetEvent('ps-adminmenu:server:ClothingMenu', function(data, selectedData)
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then return end
local src = source
local target = tonumber(selectedData["Player"].value)
if target == nil then
return QBCore.Functions.Notify(src, locale("not_online"), 'error', 7500)
end
if target == src then
TriggerClientEvent("ps-adminmenu:client:CloseUI", src)
end
TriggerClientEvent('qb-clothing:client:openMenu', target)
end)
-- Force to character setup
RegisterNetEvent('ps-adminmenu:server:CharacterCreation', function(data, selectedData)
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then return end
local src = source
local target = tonumber(selectedData["Player"].value)
if target == nil then
return QBCore.Functions.Notify(src, locale("not_online"), 'error', 7500)
end
if target == src then
TriggerClientEvent("ps-adminmenu:client:CloseUI", src)
end
TriggerClientEvent('hp_charcreator:openCreator', target, nil, true)
end)
-- Set Ped
RegisterNetEvent("ps-adminmenu:server:setPed", function(data, selectedData)
local src = source
local data = CheckDataFromKey(data)
if not data or not CheckPerms(data.perms) then
QBCore.Functions.Notify(src, locale("no_perms"), "error", 5000)
return
end
local ped = selectedData["Ped Models"].label
local tsrc = selectedData["Player"].value
local Player = QBCore.Functions.GetPlayer(tsrc)
if not Player then
QBCore.Functions.Notify(locale("not_online"), "error", 5000)
return
end
TriggerClientEvent("ps-adminmenu:client:setPed", Player.PlayerData.source, ped)
end)