43 lines
1.7 KiB
Lua
43 lines
1.7 KiB
Lua
|
local spectating = {}
|
||
|
|
||
|
RegisterNetEvent('ps-adminmenu:server:SpectateTarget', function(data, selectedData)
|
||
|
local data = CheckDataFromKey(data)
|
||
|
if not data or not CheckPerms(data.perms) then return end
|
||
|
local player = selectedData["Player"].value
|
||
|
|
||
|
local type = "1"
|
||
|
if player == source then return QBCore.Functions.Notify(source, locale("cant_spectate_yourself"), 'error', 7500) end
|
||
|
if spectating[source] then type = "0" end
|
||
|
TriggerEvent('ps-adminmenu:spectate', player, type == "1", source, data.perms)
|
||
|
CheckRoutingbucket(source, player)
|
||
|
end)
|
||
|
|
||
|
AddEventHandler('ps-adminmenu:spectate', function(target, on, source, perms)
|
||
|
local tPed = GetPlayerPed(target)
|
||
|
local data = {}
|
||
|
data.perms = perms
|
||
|
if DoesEntityExist(tPed) then
|
||
|
if not on then
|
||
|
TriggerClientEvent('ps-adminmenu:cancelSpectate', source)
|
||
|
spectating[source] = false
|
||
|
FreezeEntityPosition(GetPlayerPed(source), false)
|
||
|
TriggerClientEvent('ps-adminmenu:client:toggleNames', source, data)
|
||
|
elseif on then
|
||
|
TriggerClientEvent('ps-adminmenu:requestSpectate', source, NetworkGetNetworkIdFromEntity(tPed), target,
|
||
|
GetPlayerName(target))
|
||
|
spectating[source] = true
|
||
|
TriggerClientEvent('ps-adminmenu:client:toggleNames', source, data)
|
||
|
end
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
RegisterNetEvent('ps-adminmenu:spectate:teleport', function(target)
|
||
|
local source = source
|
||
|
local ped = GetPlayerPed(target)
|
||
|
if DoesEntityExist(ped) then
|
||
|
local targetCoords = GetEntityCoords(ped)
|
||
|
SetEntityCoords(GetPlayerPed(source), targetCoords.x, targetCoords.y, targetCoords.z - 10)
|
||
|
FreezeEntityPosition(GetPlayerPed(source), true)
|
||
|
end
|
||
|
end)
|