0.0.1
This commit is contained in:
73
resources/[cfx-default]/[system]/baseevents/deathevents.lua
Normal file
73
resources/[cfx-default]/[system]/baseevents/deathevents.lua
Normal file
@@ -0,0 +1,73 @@
|
||||
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
|
||||
14
resources/[cfx-default]/[system]/baseevents/fxmanifest.lua
Normal file
14
resources/[cfx-default]/[system]/baseevents/fxmanifest.lua
Normal file
@@ -0,0 +1,14 @@
|
||||
-- This resource is part of the default Cfx.re asset pack (cfx-server-data)
|
||||
-- Altering or recreating for local use only is strongly discouraged.
|
||||
|
||||
version '1.0.0'
|
||||
author 'Cfx.re <root@cfx.re>'
|
||||
description 'Adds basic events for developers to use in their scripts. Some third party resources may depend on this resource.'
|
||||
repository 'https://github.com/citizenfx/cfx-server-data'
|
||||
|
||||
client_script 'deathevents.lua'
|
||||
client_script 'vehiclechecker.lua'
|
||||
server_script 'server.lua'
|
||||
|
||||
fx_version 'adamant'
|
||||
game 'gta5'
|
||||
19
resources/[cfx-default]/[system]/baseevents/server.lua
Normal file
19
resources/[cfx-default]/[system]/baseevents/server.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
RegisterServerEvent('baseevents:onPlayerDied')
|
||||
RegisterServerEvent('baseevents:onPlayerKilled')
|
||||
RegisterServerEvent('baseevents:onPlayerWasted')
|
||||
RegisterServerEvent('baseevents:enteringVehicle')
|
||||
RegisterServerEvent('baseevents:enteringAborted')
|
||||
RegisterServerEvent('baseevents:enteredVehicle')
|
||||
RegisterServerEvent('baseevents:leftVehicle')
|
||||
|
||||
AddEventHandler('baseevents:onPlayerKilled', function(killedBy, data)
|
||||
local victim = source
|
||||
|
||||
RconLog({msgType = 'playerKilled', victim = victim, attacker = killedBy, data = data})
|
||||
end)
|
||||
|
||||
AddEventHandler('baseevents:onPlayerDied', function(killedBy, pos)
|
||||
local victim = source
|
||||
|
||||
RconLog({msgType = 'playerDied', victim = victim, attackerType = killedBy, pos = pos})
|
||||
end)
|
||||
@@ -0,0 +1,57 @@
|
||||
local isInVehicle = false
|
||||
local isEnteringVehicle = false
|
||||
local currentVehicle = 0
|
||||
local currentSeat = 0
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
while true do
|
||||
Citizen.Wait(0)
|
||||
|
||||
local ped = PlayerPedId()
|
||||
|
||||
if not isInVehicle and not IsPlayerDead(PlayerId()) then
|
||||
if DoesEntityExist(GetVehiclePedIsTryingToEnter(ped)) and not isEnteringVehicle then
|
||||
-- trying to enter a vehicle!
|
||||
local vehicle = GetVehiclePedIsTryingToEnter(ped)
|
||||
local seat = GetSeatPedIsTryingToEnter(ped)
|
||||
local netId = VehToNet(vehicle)
|
||||
isEnteringVehicle = true
|
||||
TriggerServerEvent('baseevents:enteringVehicle', vehicle, seat, GetDisplayNameFromVehicleModel(GetEntityModel(vehicle)), netId)
|
||||
elseif not DoesEntityExist(GetVehiclePedIsTryingToEnter(ped)) and not IsPedInAnyVehicle(ped, true) and isEnteringVehicle then
|
||||
-- vehicle entering aborted
|
||||
TriggerServerEvent('baseevents:enteringAborted')
|
||||
isEnteringVehicle = false
|
||||
elseif IsPedInAnyVehicle(ped, false) then
|
||||
-- suddenly appeared in a vehicle, possible teleport
|
||||
isEnteringVehicle = false
|
||||
isInVehicle = true
|
||||
currentVehicle = GetVehiclePedIsUsing(ped)
|
||||
currentSeat = GetPedVehicleSeat(ped)
|
||||
local model = GetEntityModel(currentVehicle)
|
||||
local name = GetDisplayNameFromVehicleModel()
|
||||
local netId = VehToNet(currentVehicle)
|
||||
TriggerServerEvent('baseevents:enteredVehicle', currentVehicle, currentSeat, GetDisplayNameFromVehicleModel(GetEntityModel(currentVehicle)), netId)
|
||||
end
|
||||
elseif isInVehicle then
|
||||
if not IsPedInAnyVehicle(ped, false) or IsPlayerDead(PlayerId()) then
|
||||
-- bye, vehicle
|
||||
local model = GetEntityModel(currentVehicle)
|
||||
local name = GetDisplayNameFromVehicleModel()
|
||||
local netId = VehToNet(currentVehicle)
|
||||
TriggerServerEvent('baseevents:leftVehicle', currentVehicle, currentSeat, GetDisplayNameFromVehicleModel(GetEntityModel(currentVehicle)), netId)
|
||||
isInVehicle = false
|
||||
currentVehicle = 0
|
||||
currentSeat = 0
|
||||
end
|
||||
end
|
||||
Citizen.Wait(50)
|
||||
end
|
||||
end)
|
||||
|
||||
function GetPedVehicleSeat(ped)
|
||||
local vehicle = GetVehiclePedIsIn(ped, false)
|
||||
for i=-2,GetVehicleMaxNumberOfPassengers(vehicle) do
|
||||
if(GetPedInVehicleSeat(vehicle, i) == ped) then return i end
|
||||
end
|
||||
return -2
|
||||
end
|
||||
Reference in New Issue
Block a user