All-Resources/[char]/PiggyBack/sv_piggyback.lua
2026-04-14 17:41:39 +02:00

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)