Death module: fixed killer sometimes not getting found, changed native. Fixes #417

This commit is contained in:
ElPumpo
2020-01-04 23:54:39 +01:00
parent b30e72bdcc
commit e83801cf42
+16 -17
View File
@@ -3,7 +3,6 @@ Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
local player = PlayerId()
if NetworkIsPlayerActive(player) then
@@ -12,13 +11,13 @@ Citizen.CreateThread(function()
if IsPedFatallyInjured(playerPed) and not isDead then
isDead = true
local killer, killerWeapon = NetworkGetEntityKillerOfPlayer(player)
local killerServerId = NetworkGetPlayerIndexFromPed(killer)
if killer ~= playerPed and killerServerId ~= nil and NetworkIsPlayerActive(killerServerId) then
PlayerKilledByPlayer(GetPlayerServerId(killerServerId), killerServerId, killerWeapon)
local killerEntity, deathCause = GetPedSourceOfDeath(playerPed), GetPedCauseOfDeath(playerPed)
local killerClientId = NetworkGetPlayerIndexFromPed(killerEntity)
if killerEntity ~= playerPed and killerClientId and NetworkIsPlayerActive(killerClientId) then
PlayerKilledByPlayer(GetPlayerServerId(killerClientId), killerClientId, deathCause)
else
PlayerKilled()
PlayerKilled(deathCause)
end
elseif not IsPedFatallyInjured(playerPed) then
@@ -28,18 +27,18 @@ Citizen.CreateThread(function()
end
end)
function PlayerKilledByPlayer(killerServerId, killerClientId, killerWeapon)
function PlayerKilledByPlayer(killerServerId, killerClientId, deathCause)
local victimCoords = GetEntityCoords(PlayerPedId())
local killerCoords = GetEntityCoords(GetPlayerPed(killerClientId))
local distance = GetDistanceBetweenCoords(victimCoords, killerCoords, true)
local distance = #(victimCoords - killerCoords)
local data = {
victimCoords = { x = ESX.Math.Round(victimCoords.x, 1), y = ESX.Math.Round(victimCoords.y, 1), z = ESX.Math.Round(victimCoords.z, 1) },
killerCoords = { x = ESX.Math.Round(killerCoords.x, 1), y = ESX.Math.Round(killerCoords.y, 1), z = ESX.Math.Round(killerCoords.z, 1) },
victimCoords = {x = ESX.Math.Round(victimCoords.x, 1), y = ESX.Math.Round(victimCoords.y, 1), z = ESX.Math.Round(victimCoords.z, 1)},
killerCoords = {x = ESX.Math.Round(killerCoords.x, 1), y = ESX.Math.Round(killerCoords.y, 1), z = ESX.Math.Round(killerCoords.z, 1)},
killedByPlayer = true,
deathCause = killerWeapon,
distance = ESX.Math.Round(distance, 1),
deathCause = deathCause,
distance = ESX.Math.Round(distance, 1),
killerServerId = killerServerId,
killerClientId = killerClientId
@@ -49,15 +48,15 @@ function PlayerKilledByPlayer(killerServerId, killerClientId, killerWeapon)
TriggerServerEvent('esx:onPlayerDeath', data)
end
function PlayerKilled()
function PlayerKilled(deathCause)
local playerPed = PlayerPedId()
local victimCoords = GetEntityCoords(PlayerPedId())
local victimCoords = GetEntityCoords(playerPed)
local data = {
victimCoords = { x = ESX.Math.Round(victimCoords.x, 1), y = ESX.Math.Round(victimCoords.y, 1), z = ESX.Math.Round(victimCoords.z, 1) },
victimCoords = {x = ESX.Math.Round(victimCoords.x, 1), y = ESX.Math.Round(victimCoords.y, 1), z = ESX.Math.Round(victimCoords.z, 1)},
killedByPlayer = false,
deathCause = GetPedCauseOfDeath(playerPed)
deathCause = deathCause
}
TriggerEvent('esx:onPlayerDeath', data)