mirror of
https://github.com/Michatec/wk_wars2x.git
synced 2026-04-01 08:26:27 +02:00
feat: radar data sync between driver and passenger
This commit is contained in:
@@ -117,6 +117,7 @@ Citizen.CreateThread( function()
|
||||
|
||||
if ( veh == vehEntering ) then
|
||||
UTIL:Notify( "DEBUG: Trigger sync" )
|
||||
SYNC:SyncDataOnEnter()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
37
cl_sync.lua
37
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 )
|
||||
16
sv_sync.lua
16
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 )
|
||||
Reference in New Issue
Block a user