diff --git a/cl_player.lua b/cl_player.lua index 6cecbbb..6519d32 100644 --- a/cl_player.lua +++ b/cl_player.lua @@ -117,6 +117,7 @@ Citizen.CreateThread( function() if ( veh == vehEntering ) then UTIL:Notify( "DEBUG: Trigger sync" ) + SYNC:SyncDataOnEnter() end end diff --git a/cl_radar.lua b/cl_radar.lua index 66f8abd..cecd71b 100644 --- a/cl_radar.lua +++ b/cl_radar.lua @@ -358,6 +358,7 @@ function RADAR:SetBackupOMData( data ) end function RADAR:SetBackupAntennaData( ant, data ) + UTIL:Notify( "Trying to set backup for antenna: " .. ant .. " (type: " .. type( ant ) .. ") with data: (type: " .. type( data ) .. ")" ) self.backupData.antennas[ant] = data end diff --git a/cl_sync.lua b/cl_sync.lua index 800d61f..28ee1b6 100644 --- a/cl_sync.lua +++ b/cl_sync.lua @@ -80,6 +80,24 @@ function SYNC:LockAntennaSpeed( ant, data ) end ) end +-- Requests radar data from the driver if the player has just entered a valid vehicle as a front seat passenger +function SYNC:SyncDataOnEnter() + -- Make sure passenger view is allowed, also, using PLY:IsPassenger() already checks that the player's + -- vehicle meets the requirements of what the radar requires. This way we don't have to do additional + -- checks manually. + if ( RADAR:IsPassengerViewAllowed() ) then + if ( PLY:IsPassenger() ) then + UTIL:Notify( "Triggering server event to get radar data" ) + local driver = PLY:GetOtherPedServerId() + TriggerServerEvent( "wk_wars2x_sync:requestRadarData", driver ) + elseif ( PLY:IsDriver() ) then + UTIL:Notify( "Restoring local radar data" ) + -- Restore the local data + RADAR:RestoreFromBackup() + end + end +end + --[[---------------------------------------------------------------------------------- Sync client events @@ -120,4 +138,23 @@ end ) RegisterNetEvent( "wk_wars2x_sync:receiveLockAntennaSpeed" ) AddEventHandler( "wk_wars2x_sync:receiveLockAntennaSpeed", function( antenna, data ) RADAR:LockAntennaSpeed( antenna, data ) +end ) + + + + +RegisterNetEvent( "wk_wars2x_sync:getRadarDataFromDriver" ) +AddEventHandler( "wk_wars2x_sync:getRadarDataFromDriver", function( playerFor ) + print( "Radar table has been requested by " .. tostring( GetPlayerName( playerFor ) ) ) + + local data = RADAR:GetRadarDataForSync() + + print( "Got table (type: " .. type( data ) .. ")" ) + + TriggerServerEvent( "wk_wars2x_sync:sendRadarDataForPassenger", playerFor, data ) +end ) + +RegisterNetEvent( "wk_wars2x_sync:receiveRadarData" ) +AddEventHandler( "wk_wars2x_sync:receiveRadarData", function( data ) + RADAR:LoadDataFromDriver( data ) end ) \ No newline at end of file diff --git a/sv_sync.lua b/sv_sync.lua index e024c58..833922e 100644 --- a/sv_sync.lua +++ b/sv_sync.lua @@ -55,4 +55,20 @@ RegisterNetEvent( "wk_wars2x_sync:sendLockAntennaSpeed" ) AddEventHandler( "wk_wars2x_sync:sendLockAntennaSpeed", function( target, ant, data ) print( "[wk_wars2x]: Received \"wk_wars2x_sync:sendLockAntennaSpeed\" event from " .. GetPlayerName( source ) .. " (" .. tostring( source ) .. ") for " .. GetPlayerName( target ) .. " (" .. tostring( target ) .. ")" ) TriggerClientEvent( "wk_wars2x_sync:receiveLockAntennaSpeed", target, ant, data ) +end ) + + +--[[---------------------------------------------------------------------------------- + Radar data sync server events +----------------------------------------------------------------------------------]]-- +RegisterNetEvent( "wk_wars2x_sync:requestRadarData" ) +AddEventHandler( "wk_wars2x_sync:requestRadarData", function( target ) + print( "[wk_wars2x]: Received \"wk_wars2x_sync:requestRadarData\" event from " .. GetPlayerName( source ) .. " (" .. tostring( source ) .. ") for " .. GetPlayerName( target ) .. " (" .. tostring( target ) .. ")" ) + + TriggerClientEvent( "wk_wars2x_sync:getRadarDataFromDriver", target, source ) +end ) + +RegisterNetEvent( "wk_wars2x_sync:sendRadarDataForPassenger" ) +AddEventHandler( "wk_wars2x_sync:sendRadarDataForPassenger", function( playerFor, data ) + TriggerClientEvent( "wk_wars2x_sync:receiveRadarData", playerFor, data ) end ) \ No newline at end of file