mirror of
https://github.com/citizenfx/cfx-server-data.git
synced 2025-01-11 00:03:18 +08:00
73 lines
3.0 KiB
Lua
73 lines
3.0 KiB
Lua
Citizen.CreateThread(function()
|
|
local isDead = false
|
|
local hasBeenDead = false
|
|
local diedAt
|
|
|
|
while true do
|
|
Wait(0)
|
|
|
|
local player = PlayerId()
|
|
|
|
if NetworkIsPlayerActive(player) then
|
|
local ped = PlayerPedId()
|
|
|
|
if IsPedFatallyInjured(ped) and not isDead then
|
|
isDead = true
|
|
if not diedAt then
|
|
diedAt = GetGameTimer()
|
|
end
|
|
|
|
local killer, killerweapon = NetworkGetEntityKillerOfPlayer(player)
|
|
local killerentitytype = GetEntityType(killer)
|
|
local killertype = -1
|
|
local killerinvehicle = false
|
|
local killervehiclename = ''
|
|
local killervehicleseat = 0
|
|
if killerentitytype == 1 then
|
|
killertype = GetPedType(killer)
|
|
if IsPedInAnyVehicle(killer, false) == 1 then
|
|
killerinvehicle = true
|
|
killervehiclename = GetDisplayNameFromVehicleModel(GetEntityModel(GetVehiclePedIsUsing(killer)))
|
|
killervehicleseat = GetPedVehicleSeat(killer)
|
|
else killerinvehicle = false
|
|
end
|
|
end
|
|
|
|
local killerid = GetPlayerByEntityID(killer)
|
|
if killer ~= ped and killerid ~= nil and NetworkIsPlayerActive(killerid) then killerid = GetPlayerServerId(killerid)
|
|
else killerid = -1
|
|
end
|
|
|
|
if killer == ped or killer == -1 then
|
|
TriggerEvent('baseevents:onPlayerDied', killertype, { table.unpack(GetEntityCoords(ped)) })
|
|
TriggerServerEvent('baseevents:onPlayerDied', killertype, { table.unpack(GetEntityCoords(ped)) })
|
|
hasBeenDead = true
|
|
else
|
|
TriggerEvent('baseevents:onPlayerKilled', killerid, {killertype=killertype, weaponhash = killerweapon, killerinveh=killerinvehicle, killervehseat=killervehicleseat, killervehname=killervehiclename, killerpos=table.unpack(GetEntityCoords(ped))})
|
|
TriggerServerEvent('baseevents:onPlayerKilled', killerid, {killertype=killertype, weaponhash = killerweapon, killerinveh=killerinvehicle, killervehseat=killervehicleseat, killervehname=killervehiclename, killerpos=table.unpack(GetEntityCoords(ped))})
|
|
hasBeenDead = true
|
|
end
|
|
elseif not IsPedFatallyInjured(ped) then
|
|
isDead = false
|
|
diedAt = nil
|
|
end
|
|
|
|
-- check if the player has to respawn in order to trigger an event
|
|
if not hasBeenDead and diedAt ~= nil and diedAt > 0 then
|
|
TriggerEvent('baseevents:onPlayerWasted', { table.unpack(GetEntityCoords(ped)) })
|
|
TriggerServerEvent('baseevents:onPlayerWasted', { table.unpack(GetEntityCoords(ped)) })
|
|
|
|
hasBeenDead = true
|
|
elseif hasBeenDead and diedAt ~= nil and diedAt <= 0 then
|
|
hasBeenDead = false
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
function GetPlayerByEntityID(id)
|
|
for i=0,32 do
|
|
if(NetworkIsPlayerActive(i) and GetPlayerPed(i) == id) then return i end
|
|
end
|
|
return nil
|
|
end |