1
0
Fork 0
forked from Simnation/Main
Main/resources/[standalone]/rpemotes-reborn/client/Binoculars.lua
2025-06-12 03:36:12 +02:00

168 lines
6.5 KiB
Lua

IsUsingBinoculars = false
if Config.BinocularsEnabled then
RegisterCommand("binoculars", function()
UseBinocular()
end, false)
TriggerEvent('chat:addSuggestion', '/binoculars', 'Use binoculars', {})
local fov = 40.0
local index = 0
local cam
local prop_binoc
local instructions = true
local scaleform_bin
local scaleform_instructions
local function CleanupBinoculars()
ClearPedTasks(PlayerPedId())
ClearTimecycleModifier()
RenderScriptCams(false, false, 0, true, false)
SetScaleformMovieAsNoLongerNeeded(scaleform_bin)
SetScaleformMovieAsNoLongerNeeded(scaleform_instructions)
DestroyCam(cam, false)
if prop_binoc then
DeleteEntity(prop_binoc)
end
SetNightvision(false)
SetSeethrough(false)
end
function UseBinocular()
if IsPedSittingInAnyVehicle(PlayerPedId()) then
return
end
if IsInActionWithErrorMessage({ ['IsUsingBinoculars'] = true }) then
return
end
IsUsingBinoculars = not IsUsingBinoculars
if IsUsingBinoculars then
CreateThread(function()
DestroyAllProps()
ClearPedTasks(PlayerPedId())
RequestAnimDict("amb@world_human_binoculars@male@idle_a")
while not HasAnimDictLoaded("amb@world_human_binoculars@male@idle_a") do
Wait(5)
end
-- attach the prop to the player
local boneIndex = GetPedBoneIndex(PlayerPedId(), 28422)
local x, y, z = table.unpack(GetEntityCoords(PlayerPedId(), true))
if not HasModelLoaded("prop_binoc_01") then
LoadPropDict("prop_binoc_01")
end
prop_binoc = CreateObject(`prop_binoc_01`, x, y, z + 0.2, true, true, true)
AttachEntityToEntity(prop_binoc, PlayerPedId(), boneIndex, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, true, true,
false, true, 1, true)
TaskPlayAnim(PlayerPedId(), "amb@world_human_binoculars@male@idle_a", "idle_c", 5.0, 5.0, -1, 51, 0,
false, false, false)
PlayAmbientSpeech1(PlayerPedId(), "GENERIC_CURSE_MED", "SPEECH_PARAMS_FORCE")
SetCurrentPedWeapon(PlayerPedId(), `WEAPON_UNARMED`, true)
RemoveAnimDict("amb@world_human_binoculars@male@idle_a")
SetModelAsNoLongerNeeded("prop_binoc_01")
end)
Wait(200)
SetTimecycleModifier("default")
SetTimecycleModifierStrength(0.3)
scaleform_bin = RequestScaleformMovie("BINOCULARS")
while not HasScaleformMovieLoaded(scaleform_bin) do
Wait(10)
end
cam = CreateCam("DEFAULT_SCRIPTED_FLY_CAMERA", true)
AttachCamToEntity(cam, PlayerPedId(), 0.0, 0.0, 1.2, true)
SetCamRot(cam, 0.0, 0.0, GetEntityHeading(PlayerPedId()))
SetCamFov(cam, fov)
RenderScriptCams(true, false, 0, true, false)
PushScaleformMovieFunction(scaleform_bin, "SET_CAM_LOGO")
PushScaleformMovieFunctionParameterInt(0) -- 0 for nothing, 1 for LSPD logo
PopScaleformMovieFunctionVoid()
local keyList
if Config.AllowVisionsToggling then
keyList = {
{ key = 177, text = 'exit_binoculars' },
{ key = 19, text = 'toggle_binoculars_vision' },
{ key = 47, text = 'toggle_instructions' }
}
else
keyList = {
{ key = 177, text = 'exit_binoculars' },
{ key = 47, text = 'toggle_instructions' }
}
end
scaleform_instructions = SetupButtons(keyList)
while IsUsingBinoculars and not IsEntityDead(PlayerPedId()) and not IsPedSittingInAnyVehicle(PlayerPedId()) do
if IsControlJustPressed(0, 177) then
PlaySoundFrontend(-1, "SELECT", "HUD_FRONTEND_DEFAULT_SOUNDSET", false)
IsUsingBinoculars = false
end
fov = HandleZoomAndCheckRotation(cam, fov)
HideHUDThisFrame()
DisableControlAction(0, 25, true) -- disable aim
DisableControlAction(0, 44, true) -- INPUT_COVER
DisableControlAction(0, 37, true) -- INPUT_SELECT_WEAPON
DisableControlAction(0, 24, true) -- Attack
DisablePlayerFiring(PlayerPedId(), true) -- Disable weapon firing
if IsControlJustPressed(0, 19) and Config.AllowVisionsToggling then
-- if index = 0, toggle night vision, if index = 1, toggle thermal vision, if index = 2, toggle normal vision and reset index
if index == 0 then
SetNightvision(true)
PlaySoundFrontend(-1, "SELECT", "HUD_FRONTEND_DEFAULT_SOUNDSET", false)
index = index + 1
elseif index == 1 then
SetSeethrough(true)
SetNightvision(false)
PlaySoundFrontend(-1, "SELECT", "HUD_FRONTEND_DEFAULT_SOUNDSET", false)
index = index + 1
elseif index == 2 then
SetNightvision(false)
SetSeethrough(false)
PlaySoundFrontend(-1, "SELECT", "HUD_FRONTEND_DEFAULT_SOUNDSET", false)
index = 0
end
end
if IsControlJustPressed(0, 47) then
instructions = not instructions
PlaySoundFrontend(-1, "SELECT", "HUD_FRONTEND_DEFAULT_SOUNDSET", false)
end
DrawScaleformMovieFullscreen(scaleform_bin, 255, 255, 255, 255)
if instructions then
DrawScaleformMovieFullscreen(scaleform_instructions, 255, 255, 255, 255)
end
Wait(1)
end
end
-- RESET EVERYTHING
IsUsingBinoculars = false
index = 0
CleanupBinoculars()
end
AddEventHandler('onResourceStop', function(resource)
if resource == GetCurrentResourceName() then
CleanupBinoculars()
end
end)
CreateExport('toggleBinoculars', function()
UseBinocular()
end)
end