Files
2021-12-03 01:05:09 +00:00

57 lines
1.8 KiB
Lua

local TackleKey = 51 -- Change to a number which can be found here: https://wiki.fivem.net/wiki/Controls
local TackleTime = 1500 -- In milliseconds
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
if IsPedJumping(PlayerPedId()) and IsControlJustReleased(0, TackleKey) then
if IsPedInAnyVehicle(PlayerPedId()) then
TriggerEvent('chatMessage', 'Tackle', {255, 255, 255}, 'You cannot tackle someone in a vehicle')
else
local ForwardVector = GetEntityForwardVector(PlayerPedId())
local Tackled = {}
SetPedToRagdollWithFall(PlayerPedId(), 1500, 2000, 0, ForwardVector, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
while IsPedRagdoll(PlayerPedId()) do
Citizen.Wait(0)
for Key, Value in ipairs(GetTouchedPlayers()) do
if not Tackled[Value] then
Tackled[Value] = true
TriggerServerEvent('Tackle:Server:TacklePlayer', GetPlayerServerId(Value), ForwardVector.x, ForwardVector.y, ForwardVector.z, GetPlayerName(PlayerId()))
end
end
end
end
end
end
end)
RegisterNetEvent('Tackle:Client:TacklePlayer')
AddEventHandler('Tackle:Client:TacklePlayer', function(ForwardVectorX, ForwardVectorY, ForwardVectorZ, Tackler)
TriggerEvent('chatMessage', 'Tackle', {255, 0, 0}, Tackler .. ' tackled you!')
SetPedToRagdollWithFall(PlayerPedId(), TackleTime, TackleTime, 0, ForwardVectorX, ForwardVectorY, ForwardVectorZ, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
end)
function GetPlayers()
local Players = {}
for i = 0, 31 do
if NetworkIsPlayerActive(i) then
table.insert(Players, i)
end
end
return Players
end
function GetTouchedPlayers()
local TouchedPlayer = {}
for Key, Value in ipairs(GetPlayers()) do
if IsEntityTouchingEntity(PlayerPedId(), GetPlayerPed(Value)) then
table.insert(TouchedPlayer, Value)
end
end
return TouchedPlayer
end