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

48 lines
1.5 KiB
Lua

local oldPos = nil
local spectateInfo = {
toggled = false,
target = 0,
targetPed = 0
}
RegisterNetEvent('ps-adminmenu:requestSpectate', function(targetPed, target, name)
oldPos = GetEntityCoords(cache.ped)
spectateInfo = {
toggled = true,
target = target,
targetPed = targetPed
}
end)
RegisterNetEvent('ps-adminmenu:cancelSpectate', function()
if NetworkIsInSpectatorMode() then
NetworkSetInSpectatorMode(false, spectateInfo['targetPed'])
end
SetEntityVisible(cache.ped, true, 0)
spectateInfo = { toggled = false, target = 0, targetPed = 0 }
RequestCollisionAtCoord(oldPos)
SetEntityCoords(cache.ped, oldPos)
oldPos = nil;
end)
CreateThread(function()
while true do
Wait(0)
if spectateInfo['toggled'] then
local targetPed = NetworkGetEntityFromNetworkId(spectateInfo.targetPed)
if DoesEntityExist(targetPed) then
SetEntityVisible(cache.ped, false, 0)
if not NetworkIsInSpectatorMode() then
RequestCollisionAtCoord(GetEntityCoords(targetPed))
NetworkSetInSpectatorMode(true, targetPed)
end
else
TriggerServerEvent('ps-adminmenu:spectate:teleport', spectateInfo['target'])
while not DoesEntityExist(NetworkGetEntityFromNetworkId(spectateInfo.targetPed)) do Wait(100) end
end
else
Wait(500)
end
end
end)