Files
Elite-Gaming-FiveM/resources/CarryPeople/cl_carry.lua
T
2021-12-03 01:19:31 +00:00

137 lines
4.4 KiB
Lua

local carryingBackInProgress = false
local carryAnimNamePlaying = ""
local carryAnimDictPlaying = ""
local carryControlFlagPlaying = 0
RegisterCommand("carry",function(source, args)
if not carryingBackInProgress then
local player = PlayerPedId()
lib = 'missfinale_c2mcs_1'
anim1 = 'fin_c2_mcs_1_camman'
lib2 = 'nm'
anim2 = 'firemans_carry'
distans = 0.15
distans2 = 0.27
height = 0.63
spin = 0.0
length = 100000
controlFlagMe = 49
controlFlagTarget = 33
animFlagTarget = 1
local closestPlayer = GetClosestPlayer(3)
target = GetPlayerServerId(closestPlayer)
if closestPlayer ~= -1 and closestPlayer ~= nil then
carryingBackInProgress = true
TriggerServerEvent('CarryPeople:sync', closestPlayer, lib,lib2, anim1, anim2, distans, distans2, height,target,length,spin,controlFlagMe,controlFlagTarget,animFlagTarget)
else
drawNativeNotification("No one nearby to carry!")
end
else
carryingBackInProgress = false
ClearPedSecondaryTask(GetPlayerPed(-1))
DetachEntity(GetPlayerPed(-1), true, false)
local closestPlayer = GetClosestPlayer(3)
target = GetPlayerServerId(closestPlayer)
if target ~= 0 then
TriggerServerEvent("CarryPeople:stop",target)
end
end
end,false)
RegisterNetEvent('CarryPeople:syncTarget')
AddEventHandler('CarryPeople:syncTarget', function(target, animationLib, animation2, distans, distans2, height, length,spin,controlFlag)
local playerPed = GetPlayerPed(-1)
local targetPed = GetPlayerPed(GetPlayerFromServerId(target))
carryingBackInProgress = true
RequestAnimDict(animationLib)
while not HasAnimDictLoaded(animationLib) do
Citizen.Wait(10)
end
if spin == nil then spin = 180.0 end
AttachEntityToEntity(GetPlayerPed(-1), targetPed, 0, distans2, distans, height, 0.5, 0.5, spin, false, false, false, false, 2, false)
if controlFlag == nil then controlFlag = 0 end
TaskPlayAnim(playerPed, animationLib, animation2, 8.0, -8.0, length, controlFlag, 0, false, false, false)
carryAnimNamePlaying = animation2
carryAnimDictPlaying = animationLib
carryControlFlagPlaying = controlFlag
end)
RegisterNetEvent('CarryPeople:syncMe')
AddEventHandler('CarryPeople:syncMe', function(animationLib, animation,length,controlFlag,animFlag)
local playerPed = GetPlayerPed(-1)
RequestAnimDict(animationLib)
while not HasAnimDictLoaded(animationLib) do
Citizen.Wait(10)
end
Wait(500)
if controlFlag == nil then controlFlag = 0 end
TaskPlayAnim(playerPed, animationLib, animation, 8.0, -8.0, length, controlFlag, 0, false, false, false)
carryAnimNamePlaying = animation
carryAnimDictPlaying = animationLib
carryControlFlagPlaying = controlFlag
end)
RegisterNetEvent('CarryPeople:cl_stop')
AddEventHandler('CarryPeople:cl_stop', function()
carryingBackInProgress = false
ClearPedSecondaryTask(GetPlayerPed(-1))
DetachEntity(GetPlayerPed(-1), true, false)
end)
Citizen.CreateThread(function()
while true do
if carryingBackInProgress then
while not IsEntityPlayingAnim(GetPlayerPed(-1), carryAnimDictPlaying, carryAnimNamePlaying, 3) do
TaskPlayAnim(GetPlayerPed(-1), carryAnimDictPlaying, carryAnimNamePlaying, 8.0, -8.0, 100000, carryControlFlagPlaying, 0, false, false, false)
Citizen.Wait(0)
end
end
Wait(0)
end
end)
function GetPlayers()
local players = {}
for i = 0, 255 do
if NetworkIsPlayerActive(i) then
table.insert(players, i)
end
end
return players
end
function GetClosestPlayer(radius)
local players = GetPlayers()
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 = value
closestDistance = distance
end
end
end
--print("closest player is dist: " .. tostring(closestDistance))
if closestDistance <= radius then
return closestPlayer
else
return nil
end
end
function drawNativeNotification(text)
SetTextComponentFormat('STRING')
AddTextComponentString(text)
DisplayHelpTextFromStringLabel(0, 0, 1, -1)
end