73 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			3 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
 |