48 lines
1.5 KiB
Lua
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)
|