How to kill someone using SetEntityHealth and esx_menu_dialog

I have this ESX menu:

 ESX.UI.Menu.Open(
        'default', GetCurrentResourceName(), 'admin_menu',
        {
            title    = title,
            elements = elements
        },
        function(data, menu)

            local type = data.current.type
            local lib  = data.current.value.lib
          

            if lib == 'slay' then
                ESX.UI.Menu.Open(
                  'dialog', GetCurrentResourceName(), 'id_to_kill',
                  {
                    title = 'ID-ul playerului'
                  },
                  function(data4, menu4)
                    local idp = tonumber(data4.value)
            print(idp)
            SetEntityHealth(GetPlayerPed(GetPlayerFromServerId(idp)), 0) 
            ESX.UI.Menu.CloseAll()
            end,
            function(data4, menu4)
            menu.close()
        end

            )
            
            end

        end,
        function(data, menu)
            menu.close()
        end
    )

Default menu and dialog menu works(idp var gets the correct value)
This function(SetEntityHealth(GetPlayerPed(GetPlayerFromServerId(idp)), 0)) kills me(the player executing the client script) no matter the value of idp var!
How to use SetEnitityHealth using the id of targeting player!
(This is not an ESX question)

Hi,

You need to work with events. I don’t know exactly why you can’t do that from another client, but I think it’s about entity locality.

But how?

By triggering a server event:

TriggerServerEvent("killPlayer",idp)

on server side:

RegisterServerEvent("killPlayer")
AddEventHandler("killPlayer",function(id)
    TriggerClientEvent("killMe", id)
end)

And on client side:

RegisterNetEvent("killMe")
AddEventHandler("killMe",function()
    SetEntityHealth(PlayerPedId(), 0)
end)

Probably smarter and better to use: https://runtime.fivem.net/doc/natives/#_0x697157CED63F18D4

Where should I use:

RegisterNetEvent("killMe")
AddEventHandler("killMe",function()
    SetEntityHealth(PlayerPedId(), 0)
end)

?

@fauconjona May I contact you?

They’re events, you can add them anywhere, just take care about client and server side

@fauconjona(sorry because Im so desperate, but I really want to do this)
This is my entire server:

ESX = nil
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)	
RegisterServerEvent("killPlayer")
AddEventHandler("killPlayer",function(id)

    TriggerClientEvent("killMe", id)
end)

And this is my entire client:

local Keys = {
  ["ESC"] = 322, ["F1"] = 288, ["F2"] = 289, ["F3"] = 170, ["F5"] = 166, ["F6"] = 167, ["F7"] = 168, ["F8"] = 169, ["F9"] = 56, ["F10"] = 57, 
  ["~"] = 243, ["1"] = 157, ["2"] = 158, ["3"] = 160, ["4"] = 164, ["5"] = 165, ["6"] = 159, ["7"] = 161, ["8"] = 162, ["9"] = 163, ["-"] = 84, ["="] = 83, ["BACKSPACE"] = 177, 
  ["TAB"] = 37, ["Q"] = 44, ["W"] = 32, ["E"] = 38, ["R"] = 45, ["T"] = 245, ["Y"] = 246, ["U"] = 303, ["P"] = 199, ["["] = 39, ["]"] = 40, ["ENTER"] = 18,
  ["CAPS"] = 137, ["A"] = 34, ["S"] = 8, ["D"] = 9, ["F"] = 23, ["G"] = 47, ["H"] = 74, ["K"] = 311, ["L"] = 182,
  ["LEFTSHIFT"] = 21, ["Z"] = 20, ["X"] = 73, ["C"] = 26, ["V"] = 0, ["B"] = 29, ["N"] = 249, ["M"] = 244, [","] = 82, ["."] = 81,
  ["LEFTCTRL"] = 36, ["LEFTALT"] = 19, ["SPACE"] = 22, ["RIGHTCTRL"] = 70, 
  ["HOME"] = 213, ["PAGEUP"] = 10, ["PAGEDOWN"] = 11, ["DELETE"] = 178,
  ["LEFT"] = 174, ["RIGHT"] = 175, ["TOP"] = 27, ["DOWN"] = 173,
  ["NENTER"] = 201, ["N4"] = 108, ["N5"] = 60, ["N6"] = 107, ["N+"] = 96, ["N-"] = 97, ["N7"] = 117, ["N8"] = 61, ["N9"] = 118
}

ESX = nil

Citizen.CreateThread(function()
	while ESX == nil do
		TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
		Citizen.Wait(0)
	end
end)


function OpenMainMenu()

	local elements = {}

	for i=1, #Config.Animations, 1 do
		table.insert(elements, {label = Config.Animations[i].label, value = Config.Animations[i].name})
	end


	ESX.UI.Menu.Open(
		'default', GetCurrentResourceName(), 'main_menu',
		{
			title    = 'Main Menu',
			elements = elements
		},
		function(data, menu)
		if data.current.value == 'admin' then
			OpenAdminMenu('admin')
		elseif data.current.value == 'phn' then
			exports['esx_phone']:openPhone()
		elseif data.current.value == 'inv' then
			exports['es_extended']:openInventory()
		elseif data.current.value == 'anim' then
			exports['esx_animations']:OpenAnimationsMenu()
		elseif data.current.value == 'jobs' then
			exports['esx_policejob']:openPolice()
			exports['esx_taxijob']:openTaxi()
			exports['esx_mecanojob']:openMechanic()
			
			exports['esx_taxijob']:openTaxi()			
			exports['esx_taxijob']:openTaxi()
					


		elseif data.current.value == 'fines' then
			exports['esx_billing']:openInvoices()
		elseif data.current.value == 'veh' then
			OpenVehicleMenu('veh')
		elseif data.current.value == 'pet' then
			exports['esx_petshop']:OpenPetMenu()

		
		end
		end,
		function(data, menu)
			menu.close()
		end
	)

end
function OpenVehicleMenu(menu)

	local title    = nil
	local elements = {}

	for i=1, #Config.MainMenus, 1 do
		
		if Config.MainMenus[i].name == menu then

			title = Config.MainMenus[i].label

			for j=1, # Config.MainMenus[i].items, 1 do
				table.insert(elements, {label = Config.MainMenus[i].items[j].label, type = Config.MainMenus[i].items[j].type, value = Config.MainMenus[i].items[j].data})
			end

			break

		end

	end

	ESX.UI.Menu.Open(
		'default', GetCurrentResourceName(), 'MainMenus_sub',
		{
			title    = title,
			elements = elements
		},
		function(data, menu)

			local type = data.current.type
			local lib  = data.current.value.lib
			local anim = data.current.value.anim

			if lib == 'lock' then
				exports['esx_vehiclelock']:OpenCloseVehicle()
			elseif lib == 'port' then
				exports['esx_truck_inventory']:openmenuvehicle()
			end

		end,
		function(data, menu)
			menu.close()
		end
	)

end
function OpenAdminMenu(menu)

	local title    = nil
	local elements = {}

	for i=1, #Config.MainMenus, 1 do
		
		if Config.MainMenus[i].name == menu then

			title = Config.MainMenus[i].label

			for j=1, # Config.MainMenus[i].items, 1 do
				table.insert(elements, {label = Config.MainMenus[i].items[j].label, type = Config.MainMenus[i].items[j].type, value = Config.MainMenus[i].items[j].data})
			end

			break

		end

	end

	ESX.UI.Menu.Open(
		'default', GetCurrentResourceName(), 'MainMenus_sub',
		{
			title    = title,
			elements = elements
		},
		function(data, menu)

			local type = data.current.type
			local lib  = data.current.value.lib
			local anim = data.current.value.anim

			if lib == 'slay' then
				ESX.UI.Menu.Open(
				  'dialog', GetCurrentResourceName(), 'inventory_item_count_give',
				  {
				    title = 'ID-ul playerului'
				  },
				  function(data4, menu4)
            		local idp = tonumber(data4.value)
			print(idp)
			TriggerServerEvent("killPlayer",idp) 
			ESX.UI.Menu.CloseAll()
			end,
			function(data4, menu4)
			menu.close()
		end

			)
			
			end

		end,
		function(data, menu)
			menu.close()
		end
	)

end


RegisterNetEvent("killMe")
AddEventHandler("killMe",function()

    SetEntityHealth(PlayerPedId(), 0)
end)



-- Key Controls
Citizen.CreateThread(function()
  while true do
  Citizen.Wait(0)

	  if IsControlJustReleased(0, Keys['K']) then
	  	OpenMainMenu()

	  end

	  if IsControlJustReleased(0, Keys['X']) then
	  	ClearPedTasks(GetPlayerPed(-1))
	  end

  end
end)

What is wrong?

I don’t see anything wrong, you can add a print in killPlayer and killMe event to make sure they triggered. Is pid a server player id?

Now it works! Now I’m working for other admin functions(tp, bring, noclip…)
I don’t know what is the code of noclip!