57 lines
1.8 KiB
Lua
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
|