Untitled Diff

Created Diff never expires
37 removals
Lines
Total
Removed
Words
Total
Removed
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
109 lines
48 additions
Lines
Total
Added
Words
Total
Added
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
119 lines
-- 2018 Henric 'Kekke' Johansson

local Keys = {
["ESC"] = 322, ["F1"] = 288, ["F2"] = 289, ["F3"] = 170, ["F5"] = 166, ["F6"] = 167, ["F7"] = 168, ["F8"] = 169, ["F9"] = 56, ["F10"] = 57,
["~"] = 243, ["1"] = 157, ["2"] = 158, ["3"] = 160, ["4"] = 164, ["5"] = 165, ["6"] = 159, ["7"] = 161, ["8"] = 162, ["9"] = 163, ["-"] = 84, ["="] = 83, ["BACKSPACE"] = 177,
["TAB"] = 37, ["Q"] = 44, ["W"] = 32, ["E"] = 38, ["R"] = 45, ["T"] = 245, ["Y"] = 246, ["U"] = 303, ["P"] = 199, ["["] = 39, ["]"] = 40, ["ENTER"] = 18,
["CAPS"] = 137, ["A"] = 34, ["S"] = 8, ["D"] = 9, ["F"] = 23, ["G"] = 47, ["H"] = 74, ["K"] = 311, ["L"] = 182,
["LEFTSHIFT"] = 21, ["Z"] = 20, ["X"] = 73, ["C"] = 26, ["V"] = 0, ["B"] = 29, ["N"] = 249, ["M"] = 244, [","] = 82, ["."] = 81,
["LEFTCTRL"] = 36, ["LEFTALT"] = 19, ["SPACE"] = 22, ["RIGHTCTRL"] = 70,
["HOME"] = 213, ["PAGEUP"] = 10, ["PAGEDOWN"] = 11, ["DELETE"] = 178,
["LEFT"] = 174, ["RIGHT"] = 175, ["TOP"] = 27, ["DOWN"] = 173,
["NENTER"] = 201, ["N4"] = 108, ["N5"] = 60, ["N6"] = 107, ["N+"] = 96, ["N-"] = 97, ["N7"] = 117, ["N8"] = 61, ["N9"] = 118
}

ESX = nil
local PlayerData = {}
local PoliceJob = 'police'


local isTackling = false
local isTackling = false
local isGettingTackled = false
local isGettingTackled = false


local tackleLib = 'missmic2ig_11'
local tackleLib = 'missmic2ig_11'
local tackleAnim = 'mic_2_ig_11_intro_goon'
local tackleAnim = 'mic_2_ig_11_intro_goon'
local tackleVictimAnim = 'mic_2_ig_11_intro_p_one'
local tackleVictimAnim = 'mic_2_ig_11_intro_p_one'


local lastTackleTime = 0
local lastTackleTime = 0
local isRagdoll = false
local isRagdoll = false


Citizen.CreateThread(function()
while ESX == nil do
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
Citizen.Wait(0)
end

PlayerData = ESX.GetPlayerData()
end)

RegisterNetEvent('esx:playerLoaded')
AddEventHandler('esx:playerLoaded', function(xPlayer)
PlayerData = xPlayer
end)

RegisterNetEvent('esx:setJob')
AddEventHandler('esx:setJob', function(job)
PlayerData.job = job
end)


Citizen.CreateThread(function()
Citizen.CreateThread(function()
while true do
while true do
Citizen.Wait(0)
Citizen.Wait(0)
if isRagdoll then
if isRagdoll then
SetPedToRagdoll(GetPlayerPed(-1), 1000, 1000, 0, 0, 0, 0)
SetPedToRagdoll(GetPlayerPed(-1), 1000, 1000, 0, 0, 0, 0)
end
end
end
end
end)
end)


RegisterNetEvent('tacklescript:getTackled')
RegisterNetEvent('esx_kekke_tackle:getTackled')
AddEventHandler('tacklescript:getTackled', function(target)
AddEventHandler('esx_kekke_tackle:getTackled', function(target)
isGettingTackled = true
isGettingTackled = true


local playerPed = GetPlayerPed(-1)
local playerPed = GetPlayerPed(-1)
local targetPed = GetPlayerPed(GetPlayerFromServerId(target))
local targetPed = GetPlayerPed(GetPlayerFromServerId(target))


RequestAnimDict(tackleLib)
RequestAnimDict(tackleLib)


while not HasAnimDictLoaded(tackleLib) do
while not HasAnimDictLoaded(tackleLib) do
Citizen.Wait(10)
Citizen.Wait(10)
end
end


AttachEntityToEntity(GetPlayerPed(-1), targetPed, 11816, 0.25, 0.5, 0.0, 0.5, 0.5, 180.0, false, false, false, false, 2, false)
AttachEntityToEntity(GetPlayerPed(-1), targetPed, 11816, 0.25, 0.5, 0.0, 0.5, 0.5, 180.0, false, false, false, false, 2, false)
TaskPlayAnim(playerPed, tackleLib, tackleVictimAnim, 8.0, -8.0, 3000, 0, 0, false, false, false)
TaskPlayAnim(playerPed, tackleLib, tackleVictimAnim, 8.0, -8.0, 3000, 0, 0, false, false, false)


Citizen.Wait(3000)
Citizen.Wait(3000)
DetachEntity(GetPlayerPed(-1), true, false)
DetachEntity(GetPlayerPed(-1), true, false)


isRagdoll = true
isRagdoll = true
Citizen.Wait(3000)
Citizen.Wait(3000)
isRagdoll = false
isRagdoll = false


isGettingTackled = false
isGettingTackled = false
end)
end)


RegisterNetEvent('tacklescript:playTackle')
RegisterNetEvent('esx_kekke_tackle:playTackle')
AddEventHandler('tacklescript:playTackle', function()
AddEventHandler('esx_kekke_tackle:playTackle', function()
local playerPed = GetPlayerPed(-1)
local playerPed = GetPlayerPed(-1)


RequestAnimDict(tackleLib)
RequestAnimDict(tackleLib)


while not HasAnimDictLoaded(tackleLib) do
while not HasAnimDictLoaded(tackleLib) do
Citizen.Wait(10)
Citizen.Wait(10)
end
end


TaskPlayAnim(playerPed, tackleLib, tackleAnim, 8.0, -8.0, 3000, 0, 0, false, false, false)
TaskPlayAnim(playerPed, tackleLib, tackleAnim, 8.0, -8.0, 3000, 0, 0, false, false, false)


Citizen.Wait(3000)
Citizen.Wait(3000)


isTackling = false
isTackling = false


end)
end)


-- Main thread
-- Main thread
Citizen.CreateThread(function()
Citizen.CreateThread(function()
while true do
while true do
Wait(0)
Wait(0)


if IsControlPressed(0, 21) and IsControlPressed(0, 38) and not isTackling and GetGameTimer() - lastTackleTime > 10 * 1000 then
if IsControlPressed(0, Keys['LEFTSHIFT']) and IsControlPressed(0, Keys['G']) and not isTackling and GetGameTimer() - lastTackleTime > 10 * 1000 and PlayerData.job.name == PoliceJob then
Citizen.Wait(10)
Citizen.Wait(10)
local closestPlayer = GetClosestPlayer()
local closestPlayer, distance = ESX.Game.GetClosestPlayer()


if closestPlayer.distance ~= -1 and closestPlayer.distance <= Config.TackleDistance and not isTackling and not isGettingTackled and not IsPedInAnyVehicle(GetPlayerPed(-1)) and not IsPedInAnyVehicle(GetPlayerPed(closestPlayer.playerid)) then
if distance ~= -1 and distance <= Config.TackleDistance and not isTackling and not isGettingTackled and not IsPedInAnyVehicle(GetPlayerPed(-1)) and not IsPedInAnyVehicle(GetPlayerPed(closestPlayer)) then
isTackling = true
isTackling = true
lastTackleTime = GetGameTimer()
lastTackleTime = GetGameTimer()


TriggerServerEvent('tacklescript:tryTackle', closestPlayer.playerid)
TriggerServerEvent('esx_kekke_tackle:tryTackle', GetPlayerServerId(closestPlayer))
end
end
end
end
end
end
end)
end)

function GetClosestPlayer()
local players = GetActivePlayers()
local closestDistance = -1
local closestPlayer = -1
local ply = GetPlayerPed(-1)
local plyCoords = GetEntityCoords(ply, 0)

for index,value in ipairs(players) do
local target = GetPlayerPed(value)
if(target ~= ply) then
local targetCoords = GetEntityCoords(GetPlayerPed(value), 0)
local distance = GetDistanceBetweenCoords(targetCoords['x'], targetCoords['y'], targetCoords['z'], plyCoords['x'], plyCoords['y'], plyCoords['z'], true)
if(closestDistance == -1 or closestDistance > distance) then
closestPlayer = GetPlayerServerId(value)
closestDistance = distance
end
end
end

return {
playerid = closestPlayer,
distance = closestDistance
}
end