mirror of
https://github.com/Michatec/wk_wars2x.git
synced 2026-04-01 16:36:26 +02:00
619 lines
20 KiB
Lua
619 lines
20 KiB
Lua
--[[------------------------------------------------------------------------
|
|
|
|
Wraith Radar System - v1.0.3
|
|
Created by WolfKnight
|
|
|
|
------------------------------------------------------------------------]]--
|
|
|
|
--[[------------------------------------------------------------------------
|
|
Resource Rename Fix
|
|
------------------------------------------------------------------------]]--
|
|
Citizen.CreateThread( function()
|
|
Citizen.Wait( 1000 )
|
|
local resourceName = GetCurrentResourceName()
|
|
SendNUIMessage( { resourcename = resourceName } )
|
|
end )
|
|
|
|
--[[-----------------------------------------------------------------------
|
|
Test
|
|
-----------------------------------------------------------------------]]--
|
|
local entityEnumerator = {
|
|
__gc = function(enum)
|
|
if enum.destructor and enum.handle then
|
|
enum.destructor(enum.handle)
|
|
end
|
|
enum.destructor = nil
|
|
enum.handle = nil
|
|
end
|
|
}
|
|
|
|
local function EnumerateEntities(initFunc, moveFunc, disposeFunc)
|
|
return coroutine.wrap(function()
|
|
local iter, id = initFunc()
|
|
if not id or id == 0 then
|
|
disposeFunc(iter)
|
|
return
|
|
end
|
|
|
|
local enum = {handle = iter, destructor = disposeFunc}
|
|
setmetatable(enum, entityEnumerator)
|
|
|
|
local next = true
|
|
repeat
|
|
coroutine.yield(id)
|
|
next, id = moveFunc(iter)
|
|
until not next
|
|
|
|
enum.destructor, enum.handle = nil, nil
|
|
disposeFunc(iter)
|
|
end)
|
|
end
|
|
|
|
function EnumerateObjects()
|
|
return EnumerateEntities(FindFirstObject, FindNextObject, EndFindObject)
|
|
end
|
|
|
|
function EnumeratePeds()
|
|
return EnumerateEntities(FindFirstPed, FindNextPed, EndFindPed)
|
|
end
|
|
|
|
function EnumerateVehicles()
|
|
return EnumerateEntities(FindFirstVehicle, FindNextVehicle, EndFindVehicle)
|
|
end
|
|
|
|
function EnumeratePickups()
|
|
return EnumerateEntities(FindFirstPickup, FindNextPickup, EndFindPickup)
|
|
end
|
|
|
|
--[[------------------------------------------------------------------------
|
|
Utils
|
|
------------------------------------------------------------------------]]--
|
|
function round( num )
|
|
return tonumber( string.format( "%.0f", num ) )
|
|
end
|
|
|
|
function oppang( ang )
|
|
return ( ang + 180 ) % 360
|
|
end
|
|
|
|
function FormatSpeed( speed )
|
|
return string.format( "%03d", speed )
|
|
end
|
|
|
|
function GetVehicleInDirectionSphere( entFrom, coordFrom, coordTo )
|
|
local rayHandle = StartShapeTestCapsule( coordFrom.x, coordFrom.y, coordFrom.z, coordTo.x, coordTo.y, coordTo.z, 2.0, 10, entFrom, 7 )
|
|
local _, _, _, _, vehicle = GetShapeTestResult( rayHandle )
|
|
return vehicle
|
|
end
|
|
|
|
function IsEntityInMyHeading( myAng, tarAng, range )
|
|
local rangeStartFront = myAng - ( range / 2 )
|
|
local rangeEndFront = myAng + ( range / 2 )
|
|
|
|
local opp = oppang( myAng )
|
|
|
|
local rangeStartBack = opp - ( range / 2 )
|
|
local rangeEndBack = opp + ( range / 2 )
|
|
|
|
if ( ( tarAng > rangeStartFront ) and ( tarAng < rangeEndFront ) ) then
|
|
return true
|
|
elseif ( ( tarAng > rangeStartBack ) and ( tarAng < rangeEndBack ) ) then
|
|
return false
|
|
else
|
|
return nil
|
|
end
|
|
end
|
|
|
|
|
|
--[[------------------------------------------------------------------------
|
|
Police Vehicle Radar
|
|
------------------------------------------------------------------------]]--
|
|
local radarEnabled = false
|
|
local hidden = false
|
|
local radarInfo =
|
|
{
|
|
patrolSpeed = "000",
|
|
|
|
speedType = "mph",
|
|
|
|
fwdPrevVeh = 0,
|
|
fwdXmit = true,
|
|
fwdMode = "same",
|
|
fwdSpeed = "000",
|
|
fwdFast = "000",
|
|
fwdFastLocked = false,
|
|
fwdDir = nil,
|
|
fwdFastSpeed = 0,
|
|
|
|
bwdPrevVeh = 0,
|
|
bwdXmit = false,
|
|
bwdMode = "none",
|
|
bwdSpeed = "OFF",
|
|
bwdFast = "OFF",
|
|
bwdFastLocked = false,
|
|
bwdDir = nil,
|
|
bwdFastSpeed = 0,
|
|
|
|
fastResetLimit = 150,
|
|
fastLimit = 60,
|
|
|
|
angles = { [ "same" ] = { x = 0.0, y = 70.0, z = 0.0 }, [ "opp" ] = { x = -10.0, y = 50.0, z = 0.0 } },
|
|
|
|
lockBeep = true
|
|
}
|
|
|
|
RegisterNetEvent( 'wk:toggleRadar' )
|
|
AddEventHandler( 'wk:toggleRadar', function()
|
|
local ped = GetPlayerPed( -1 )
|
|
|
|
if ( IsPedSittingInAnyVehicle( ped ) ) then
|
|
local vehicle = GetVehiclePedIsIn( ped, false )
|
|
|
|
if ( GetVehicleClass( vehicle ) == 18 ) then
|
|
radarEnabled = not radarEnabled
|
|
|
|
if ( radarEnabled ) then
|
|
Notify( "~b~Radar enabled." )
|
|
else
|
|
Notify( "~b~Radar disabled." )
|
|
end
|
|
|
|
ResetFrontAntenna()
|
|
ResetRearAntenna()
|
|
|
|
SendNUIMessage({
|
|
toggleradar = true,
|
|
fwdxmit = radarInfo.fwdXmit,
|
|
fwdmode = radarInfo.fwdMode,
|
|
bwdxmit = radarInfo.bwdXmit,
|
|
bwdmode = radarInfo.bwdMode
|
|
})
|
|
else
|
|
Notify( "~r~You must be in a police vehicle." )
|
|
end
|
|
else
|
|
Notify( "~r~You must be in a vehicle." )
|
|
end
|
|
end )
|
|
|
|
RegisterNetEvent( 'wk:changeRadarLimit' )
|
|
AddEventHandler( 'wk:changeRadarLimit', function( speed )
|
|
radarInfo.fastLimit = speed
|
|
end )
|
|
|
|
function Radar_SetLimit()
|
|
Citizen.CreateThread( function()
|
|
DisplayOnscreenKeyboard( false, "", "", "", "", "", "", 4 )
|
|
|
|
while true do
|
|
if ( UpdateOnscreenKeyboard() == 1 ) then
|
|
local speedStr = GetOnscreenKeyboardResult()
|
|
|
|
if ( string.len( speedStr ) > 0 ) then
|
|
local speed = tonumber( speedStr )
|
|
|
|
if ( speed < 999 and speed > 1 ) then
|
|
TriggerEvent( 'wk:changeRadarLimit', speed )
|
|
end
|
|
|
|
break
|
|
else
|
|
DisplayOnscreenKeyboard( false, "", "", "", "", "", "", 4 )
|
|
end
|
|
elseif ( UpdateOnscreenKeyboard() == 2 ) then
|
|
break
|
|
end
|
|
|
|
Citizen.Wait( 0 )
|
|
end
|
|
end )
|
|
end
|
|
|
|
function ResetFrontAntenna()
|
|
if ( radarInfo.fwdXmit ) then
|
|
radarInfo.fwdSpeed = "000"
|
|
radarInfo.fwdFast = "000"
|
|
else
|
|
radarInfo.fwdSpeed = "OFF"
|
|
radarInfo.fwdFast = " "
|
|
end
|
|
|
|
radarInfo.fwdDir = nil
|
|
radarInfo.fwdFastSpeed = 0
|
|
radarInfo.fwdFastLocked = false
|
|
end
|
|
|
|
function ResetRearAntenna()
|
|
if ( radarInfo.bwdXmit ) then
|
|
radarInfo.bwdSpeed = "000"
|
|
radarInfo.bwdFast = "000"
|
|
else
|
|
radarInfo.bwdSpeed = "OFF"
|
|
radarInfo.bwdFast = " "
|
|
end
|
|
|
|
radarInfo.bwdDir = nil
|
|
radarInfo.bwdFastSpeed = 0
|
|
radarInfo.bwdFastLocked = false
|
|
end
|
|
|
|
function ResetFrontFast()
|
|
if ( radarInfo.fwdXmit ) then
|
|
radarInfo.fwdFast = "000"
|
|
radarInfo.fwdFastSpeed = 0
|
|
radarInfo.fwdFastLocked = false
|
|
|
|
SendNUIMessage( { lockfwdfast = false } )
|
|
end
|
|
end
|
|
|
|
function ResetRearFast()
|
|
if ( radarInfo.bwdXmit ) then
|
|
radarInfo.bwdFast = "000"
|
|
radarInfo.bwdFastSpeed = 0
|
|
radarInfo.bwdFastLocked = false
|
|
|
|
SendNUIMessage( { lockbwdfast = false } )
|
|
end
|
|
end
|
|
|
|
function CloseRadarRC()
|
|
SendNUIMessage({
|
|
toggleradarrc = true
|
|
})
|
|
|
|
TriggerEvent( 'wk:toggleMenuControlLock', false )
|
|
|
|
SetNuiFocus( false )
|
|
end
|
|
|
|
function ToggleSpeedType()
|
|
if ( radarInfo.speedType == "mph" ) then
|
|
radarInfo.speedType = "kmh"
|
|
Notify( "~b~Speed type set to Km/h." )
|
|
else
|
|
radarInfo.speedType = "mph"
|
|
Notify( "~b~Speed type set to MPH." )
|
|
end
|
|
end
|
|
|
|
function ToggleLockBeep()
|
|
if ( radarInfo.lockBeep ) then
|
|
radarInfo.lockBeep = false
|
|
Notify( "~b~Radar fast lock beep disabled." )
|
|
else
|
|
radarInfo.lockBeep = true
|
|
Notify( "~b~Radar fast lock beep enabled." )
|
|
end
|
|
end
|
|
|
|
function GetVehSpeed( veh )
|
|
if ( radarInfo.speedType == "mph" ) then
|
|
return GetEntitySpeed( veh ) * 2.236936
|
|
else
|
|
return GetEntitySpeed( veh ) * 3.6
|
|
end
|
|
end
|
|
|
|
function ManageVehicleRadar()
|
|
if ( radarEnabled ) then
|
|
local ped = GetPlayerPed( -1 )
|
|
|
|
if ( IsPedSittingInAnyVehicle( ped ) ) then
|
|
local vehicle = GetVehiclePedIsIn( ped, false )
|
|
|
|
if ( GetPedInVehicleSeat( vehicle, -1 ) == ped and GetVehicleClass( vehicle ) == 18 ) then
|
|
-- Patrol speed
|
|
local vehicleSpeed = round( GetVehSpeed( vehicle ), 0 )
|
|
|
|
radarInfo.patrolSpeed = FormatSpeed( vehicleSpeed )
|
|
|
|
-- Rest of the radar options
|
|
local vehiclePos = GetEntityCoords( vehicle, true )
|
|
local h = round( GetEntityHeading( vehicle ), 0 )
|
|
|
|
-- Front Antenna
|
|
if ( radarInfo.fwdXmit ) then
|
|
local newPos = GetOffsetFromEntityInWorldCoords( vehicle, 0.0, 5.0, 0.0 )
|
|
local forwardPosition = GetOffsetFromEntityInWorldCoords( vehicle, radarInfo.angles[ radarInfo.fwdMode ].x, radarInfo.angles[ radarInfo.fwdMode ].y, radarInfo.angles[ radarInfo.fwdMode ].z )
|
|
local fwdPos = { x = forwardPosition.x, y = forwardPosition.y, z = forwardPosition.z }
|
|
local _, fwdZ = GetGroundZFor_3dCoord( fwdPos.x, fwdPos.y, fwdPos.z + 500.0 )
|
|
|
|
if ( fwdPos.z < fwdZ and not ( fwdZ > vehiclePos.z + 1.0 ) ) then
|
|
fwdPos.z = fwdZ + 0.5
|
|
end
|
|
|
|
-- Draw line for debug
|
|
--DrawLine( newPos.x, newPos.y, newPos.z, fwdPos.x, fwdPos.y, fwdPos.z, 255, 255, 255, 255 )
|
|
--DrawDText( 0.015, 0.25, 0.65, false, "Vehicle X: " .. vehiclePos.x .. "\nVehicle Y: " .. vehiclePos.y .. "\nVehicle Z: " .. vehiclePos.z, 255, 255, 255, 255 )
|
|
--DrawDText( 0.2, 0.25, 0.65, false, "New X: " .. newPos.x .. "\nNew Y: " .. newPos.y .. "\nNew Z: " .. newPos.z, 255, 255, 255, 255 )
|
|
--DrawDText( 0.015, 0.42, 0.65, false, "End X: " .. fwdPos.x .. "\nEnd Y: " .. fwdPos.y .. "\nEnd Z: " .. fwdPos.z, 255, 255, 255, 255 )
|
|
|
|
local packedFwdPos = vector3( fwdPos.x, fwdPos.y, fwdPos.z )
|
|
local newVehiclePos = vector3( newPos.x, newPos.y, newPos.z )
|
|
|
|
local fwdVeh = GetVehicleInDirectionSphere( vehicle, newVehiclePos, packedFwdPos )
|
|
--DrawDText( 0.015, 0.65, 0.65, false, "Ray entity: " .. tostring( fwdVeh ) .. "\nType: " .. GetEntityType( fwdVeh ), 255, 255, 255, 255 )
|
|
|
|
if ( DoesEntityExist( fwdVeh ) and IsEntityAVehicle( fwdVeh ) ) then
|
|
local fwdVehSpeed = round( GetVehSpeed( fwdVeh ), 0 )
|
|
|
|
local fwdVehHeading = round( GetEntityHeading( fwdVeh ), 0 )
|
|
local dir = IsEntityInMyHeading( h, fwdVehHeading, 100 )
|
|
|
|
-- Draw line for debug to car
|
|
local pos = GetEntityCoords( fwdVeh, true )
|
|
-- DrawLine( vehiclePos.x, vehiclePos.y, vehiclePos.z, pos.x, pos.y, pos.z, 255, 255, 255, 255 )
|
|
DrawMarker(2, pos.x, pos.y, pos.z + 6, 0.0, 0.0, 0.0, 0.0, 180.0, 0.0, 2.0, 2.0, 2.0, 255, 128, 0, 50, false, true, 2, nil, nil, false)
|
|
|
|
radarInfo.fwdSpeed = FormatSpeed( fwdVehSpeed )
|
|
radarInfo.fwdDir = dir
|
|
|
|
if ( fwdVehSpeed > radarInfo.fastLimit and not radarInfo.fwdFastLocked ) then
|
|
if ( radarInfo.lockBeep ) then
|
|
PlaySoundFrontend( -1, "Beep_Red", "DLC_HEIST_HACKING_SNAKE_SOUNDS", 1 )
|
|
end
|
|
|
|
radarInfo.fwdFastSpeed = fwdVehSpeed
|
|
radarInfo.fwdFastLocked = true
|
|
|
|
SendNUIMessage( { lockfwdfast = true } )
|
|
end
|
|
|
|
radarInfo.fwdFast = FormatSpeed( radarInfo.fwdFastSpeed )
|
|
|
|
radarInfo.fwdPrevVeh = fwdVeh
|
|
|
|
--[[ Test
|
|
local plate = GetVehicleNumberPlateText( fwdVeh )
|
|
local colourPrimary, colourSecondary = GetVehicleColours( fwdVeh )
|
|
local name = GetLabelText( GetDisplayNameFromVehicleModel( GetEntityModel( fwdVeh ) ) )
|
|
local class = GetLabelText( "VEH_CLASS_" .. tostring( GetVehicleClass( fwdVeh ) ) )
|
|
|
|
Notify( "Name: " .. name .. "\nClass: " .. class .. "\nPlate: " .. plate .. "\nColour: " .. CAR_COLOURS[ tostring( colourPrimary ) ] .. " / " .. CAR_COLOURS[ tostring( colourSecondary ) ] )
|
|
]]
|
|
end
|
|
end
|
|
|
|
-- Rear Antenna
|
|
if ( radarInfo.bwdXmit ) then
|
|
local backwardPosition = GetOffsetFromEntityInWorldCoords( vehicle, radarInfo.angles[ radarInfo.bwdMode ].x, -radarInfo.angles[ radarInfo.bwdMode ].y, radarInfo.angles[ radarInfo.bwdMode ].z )
|
|
local bwdPos = { x = backwardPosition.x, y = backwardPosition.y, z = backwardPosition.z }
|
|
local _, bwdZ = GetGroundZFor_3dCoord( bwdPos.x, bwdPos.y, bwdPos.z + 500.0 )
|
|
|
|
if ( bwdPos.z < bwdZ and not ( bwdZ > vehiclePos.z + 1.0 ) ) then
|
|
bwdPos.z = bwdZ + 0.5
|
|
end
|
|
|
|
local packedBwdPos = vector3( bwdPos.x, bwdPos.y, bwdPos.z )
|
|
local bwdVeh = GetVehicleInDirectionSphere( vehicle, vehiclePos, packedBwdPos )
|
|
|
|
if ( DoesEntityExist( bwdVeh ) and IsEntityAVehicle( bwdVeh ) ) then
|
|
local bwdVehSpeed = round( GetVehSpeed( bwdVeh ), 0 )
|
|
|
|
local bwdVehHeading = round( GetEntityHeading( bwdVeh ), 0 )
|
|
local dir = IsEntityInMyHeading( h, bwdVehHeading, 100 )
|
|
|
|
radarInfo.bwdSpeed = FormatSpeed( bwdVehSpeed )
|
|
radarInfo.bwdDir = dir
|
|
|
|
if ( bwdVehSpeed > radarInfo.fastLimit and not radarInfo.bwdFastLocked ) then
|
|
if ( radarInfo.lockBeep ) then
|
|
PlaySoundFrontend( -1, "Beep_Red", "DLC_HEIST_HACKING_SNAKE_SOUNDS", 1 )
|
|
end
|
|
|
|
radarInfo.bwdFastSpeed = bwdVehSpeed
|
|
radarInfo.bwdFastLocked = true
|
|
|
|
SendNUIMessage( { lockbwdfast = true } )
|
|
end
|
|
|
|
radarInfo.bwdFast = FormatSpeed( radarInfo.bwdFastSpeed )
|
|
|
|
radarInfo.bwdPrevVeh = bwdVeh
|
|
end
|
|
end
|
|
|
|
SendNUIMessage({
|
|
patrolspeed = radarInfo.patrolSpeed,
|
|
fwdspeed = radarInfo.fwdSpeed,
|
|
fwdfast = radarInfo.fwdFast,
|
|
fwddir = radarInfo.fwdDir,
|
|
bwdspeed = radarInfo.bwdSpeed,
|
|
bwdfast = radarInfo.bwdFast,
|
|
bwddir = radarInfo.bwdDir
|
|
})
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
RegisterNetEvent( 'wk:radarRC' )
|
|
AddEventHandler( 'wk:radarRC', function()
|
|
Citizen.Wait( 10 )
|
|
|
|
TriggerEvent( 'wk:toggleMenuControlLock', true )
|
|
|
|
SendNUIMessage({
|
|
toggleradarrc = true
|
|
})
|
|
|
|
SetNuiFocus( true, true )
|
|
end )
|
|
|
|
RegisterNUICallback( "debug", function( data, cb )
|
|
TriggerEvent( "chat:addMessage", {
|
|
color = { 255, 255, 255 },
|
|
multiline = true,
|
|
args = { "WraithRS DEBUG", data }
|
|
})
|
|
end )
|
|
|
|
RegisterNUICallback( "RadarRC", function( data, cb )
|
|
-- Toggle Radar
|
|
if ( data == "radar_toggle" ) then
|
|
TriggerEvent( 'wk:toggleRadar' )
|
|
|
|
-- Front Antenna
|
|
elseif ( data == "radar_frontopp" and radarInfo.fwdXmit ) then
|
|
radarInfo.fwdMode = "opp"
|
|
SendNUIMessage( { fwdmode = radarInfo.fwdMode } )
|
|
elseif ( data == "radar_frontxmit" ) then
|
|
radarInfo.fwdXmit = not radarInfo.fwdXmit
|
|
ResetFrontAntenna()
|
|
SendNUIMessage( { fwdxmit = radarInfo.fwdXmit } )
|
|
|
|
if ( radarInfo.fwdXmit == false ) then
|
|
radarInfo.fwdMode = "none"
|
|
else
|
|
radarInfo.fwdMode = "same"
|
|
end
|
|
|
|
SendNUIMessage( { fwdmode = radarInfo.fwdMode } )
|
|
elseif ( data == "radar_frontsame" and radarInfo.fwdXmit ) then
|
|
radarInfo.fwdMode = "same"
|
|
SendNUIMessage( { fwdmode = radarInfo.fwdMode } )
|
|
|
|
-- Rear Antenna
|
|
elseif ( data == "radar_rearopp" and radarInfo.bwdXmit ) then
|
|
radarInfo.bwdMode = "opp"
|
|
SendNUIMessage( { bwdmode = radarInfo.bwdMode } )
|
|
elseif ( data == "radar_rearxmit" ) then
|
|
radarInfo.bwdXmit = not radarInfo.bwdXmit
|
|
ResetRearAntenna()
|
|
SendNUIMessage( { bwdxmit = radarInfo.bwdXmit } )
|
|
|
|
if ( radarInfo.bwdXmit == false ) then
|
|
radarInfo.bwdMode = "none"
|
|
else
|
|
radarInfo.bwdMode = "same"
|
|
end
|
|
|
|
SendNUIMessage( { bwdmode = radarInfo.bwdMode } )
|
|
elseif ( data == "radar_rearsame" and radarInfo.bwdXmit ) then
|
|
radarInfo.bwdMode = "same"
|
|
SendNUIMessage( { bwdmode = radarInfo.bwdMode } )
|
|
|
|
-- Set Fast Limit
|
|
elseif ( data == "radar_setlimit" ) then
|
|
CloseRadarRC()
|
|
Radar_SetLimit()
|
|
|
|
-- Speed Type
|
|
elseif ( data == "radar_speedtype" ) then
|
|
ToggleSpeedType()
|
|
|
|
elseif ( data == "radar_lockbeep" ) then
|
|
ToggleLockBeep()
|
|
|
|
-- Close
|
|
elseif ( data == "close" ) then
|
|
CloseRadarRC()
|
|
end
|
|
|
|
if ( cb ) then cb( 'ok' ) end
|
|
end )
|
|
|
|
Citizen.CreateThread( function()
|
|
SetNuiFocus( false )
|
|
|
|
while true do
|
|
ManageVehicleRadar()
|
|
|
|
-- Only run 10 times a second, more realistic, also prevents spam
|
|
Citizen.Wait( 100 )
|
|
-- Citizen.Wait( 0 )
|
|
end
|
|
end )
|
|
|
|
Citizen.CreateThread( function()
|
|
while true do
|
|
local ped = GetPlayerPed( -1 )
|
|
|
|
-- These control pressed natives must be the disabled check ones.
|
|
|
|
-- LCtrl is pressed and M has just been pressed
|
|
if ( IsDisabledControlPressed( 1, 36 ) and IsDisabledControlJustPressed( 1, 244 ) and IsPedSittingInAnyVehicle( ped ) ) then
|
|
TriggerEvent( 'wk:radarRC' )
|
|
end
|
|
|
|
-- LCtrl is not being pressed and M has just been pressed
|
|
if ( not IsDisabledControlPressed( 1, 36 ) and IsDisabledControlJustPressed( 1, 244 ) ) then
|
|
ResetFrontFast()
|
|
ResetRearFast()
|
|
end
|
|
|
|
local inVeh = IsPedSittingInAnyVehicle( ped )
|
|
local veh = nil
|
|
|
|
if ( inVeh ) then
|
|
veh = GetVehiclePedIsIn( ped, false )
|
|
end
|
|
|
|
if ( ( (not inVeh or (inVeh and GetVehicleClass( veh ) ~= 18)) and radarEnabled and not hidden) or IsPauseMenuActive() and radarEnabled ) then
|
|
hidden = true
|
|
SendNUIMessage( { hideradar = true } )
|
|
elseif ( inVeh and GetVehicleClass( veh ) == 18 and radarEnabled and hidden ) then
|
|
hidden = false
|
|
SendNUIMessage( { hideradar = false } )
|
|
end
|
|
|
|
Citizen.Wait( 0 )
|
|
end
|
|
end )
|
|
|
|
|
|
--[[------------------------------------------------------------------------
|
|
Menu Control Lock - Prevents certain actions
|
|
Thanks to the authors of the ES Banking script.
|
|
------------------------------------------------------------------------]]--
|
|
local locked = false
|
|
|
|
RegisterNetEvent( 'wk:toggleMenuControlLock' )
|
|
AddEventHandler( 'wk:toggleMenuControlLock', function( lock )
|
|
locked = lock
|
|
end )
|
|
|
|
Citizen.CreateThread( function()
|
|
while true do
|
|
if ( locked ) then
|
|
local ped = GetPlayerPed( -1 )
|
|
|
|
DisableControlAction( 0, 1, true ) -- LookLeftRight
|
|
DisableControlAction( 0, 2, true ) -- LookUpDown
|
|
DisableControlAction( 0, 24, true ) -- Attack
|
|
DisablePlayerFiring( ped, true ) -- Disable weapon firing
|
|
DisableControlAction( 0, 142, true ) -- MeleeAttackAlternate
|
|
DisableControlAction( 0, 106, true ) -- VehicleMouseControlOverride
|
|
|
|
SetPauseMenuActive( false )
|
|
end
|
|
|
|
Citizen.Wait( 0 )
|
|
end
|
|
end )
|
|
|
|
|
|
--[[------------------------------------------------------------------------
|
|
Notify
|
|
------------------------------------------------------------------------]]--
|
|
function Notify( text )
|
|
SetNotificationTextEntry( "STRING" )
|
|
AddTextComponentSubstringPlayerName( text )
|
|
DrawNotification( false, true )
|
|
end
|
|
|
|
function DrawDText( x, y, scale, centre, text, r, g, b, a )
|
|
SetTextFont(4)
|
|
SetTextProportional(0)
|
|
SetTextScale(scale, scale)
|
|
SetTextColour(r, g, b, a)
|
|
SetTextDropShadow(0, 0, 0, 0,255)
|
|
SetTextEdge(2, 0, 0, 0, 255)
|
|
SetTextCentre( centre )
|
|
SetTextDropShadow()
|
|
SetTextOutline()
|
|
SetTextEntry("STRING")
|
|
AddTextComponentString(text)
|
|
DrawText( x, y )
|
|
end |