50 lines
1.6 KiB
Lua
50 lines
1.6 KiB
Lua
local piggybacking = {}
|
|
--piggybacking[source] = targetSource, source is piggybacking targetSource
|
|
local beingPiggybacked = {}
|
|
--beingPiggybacked[targetSource] = source, targetSource is beingPiggybacked by source
|
|
|
|
RegisterServerEvent("Piggyback:sync")
|
|
AddEventHandler("Piggyback:sync", function(targetSrc)
|
|
local source = source
|
|
local sourcePed = GetPlayerPed(source)
|
|
local sourceCoords = GetEntityCoords(sourcePed)
|
|
local targetPed = GetPlayerPed(targetSrc)
|
|
local targetCoords = GetEntityCoords(targetPed)
|
|
if #(sourceCoords - targetCoords) <= 3.0 then
|
|
TriggerClientEvent("Piggyback:syncTarget", targetSrc, source)
|
|
piggybacking[source] = targetSrc
|
|
beingPiggybacked[targetSrc] = source
|
|
end
|
|
end)
|
|
|
|
RegisterServerEvent("Piggyback:stop")
|
|
AddEventHandler("Piggyback:stop", function(targetSrc)
|
|
local source = source
|
|
|
|
if piggybacking[source] then
|
|
TriggerClientEvent("Piggyback:cl_stop", targetSrc)
|
|
piggybacking[source] = nil
|
|
beingPiggybacked[targetSrc] = nil
|
|
elseif beingPiggybacked[source] then
|
|
TriggerClientEvent("Piggyback:cl_stop", beingPiggybacked[source])
|
|
beingPiggybacked[source] = nil
|
|
piggybacking[beingPiggybacked[source]] = nil
|
|
end
|
|
end)
|
|
|
|
AddEventHandler('playerDropped', function(reason)
|
|
local source = source
|
|
|
|
if piggybacking[source] then
|
|
TriggerClientEvent("Piggyback:cl_stop", piggybacking[source])
|
|
beingPiggybacked[piggybacking[source]] = nil
|
|
piggybacking[source] = nil
|
|
end
|
|
|
|
if beingPiggybacked[source] then
|
|
TriggerClientEvent("Piggyback:cl_stop", beingPiggybacked[source])
|
|
piggybacking[beingPiggybacked[source]] = nil
|
|
beingPiggybacked[source] = nil
|
|
end
|
|
end)
|