[HELP] Command /ad for each job (overwriting esx_rpchat)

Hi, I have been editing the script “esx_rpchat” a bit to improve or add some role commands. Anyway, I have a problem validating a command with multiple executions depending on the job that calls the function, and I couldn’t get it to work. I’ll leave the code for you to see. I also add that the last validation (“no job detected”) is working, the problem is when I set up the police, ambulance, mechanic or taxi, no message is done in chat or console, nor are they returned mistakes.

client.lua
-- Obtener el trabajo del jugador
Citizen.CreateThread(function()
	while ESX == nil do
		TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
		Citizen.Wait(0)
	end

	while ESX.GetPlayerData().job == nil do
		Citizen.Wait(0)
	end

	ESX.PlayerData = ESX.GetPlayerData()
end)

-- Actualizar el trabajo del jugador
local PlayerData = {}
RegisterNetEvent('esx:setJob')
AddEventHandler('esx:setJob', function(job)
    ESX.PlayerData.job = job
end)
RegisterNetEvent('duty:onoff')
AddEventHandler('duty:onoff', function(job)
    xPlayer.setjob(job,grade)
end)

-- Anuncios faccionarios
RegisterCommand('ad', function(source, args)
	if ESX.PlayerData.job and ESX.PlayerData.job.name == 'police' then
		TriggerServerEvent('esx_ads:policead', args)
	elseif ESX.PlayerData.job and ESX.PlayerData.job.name == 'mechanic' then
		TriggerServerEvent('esx_ads:mechanicad', args)
 	elseif ESX.PlayerData.job and ESX.PlayerData.job.name == 'ambulance' then
		TriggerServerEvent('esx_ads:ambulancead', args)
 	elseif ESX.PlayerData.job and ESX.PlayerData.job.name == 'taxi' then
		TriggerServerEvent('esx_ads:taxiad', args)
 	else
		ESX.ShowNotification('Tu profesión no está autorizada para utilizar este comando.')
	end
end)
server.lua
RegisterServerEvent('esx_ads:policead')
AddEventHandler('esx_ads:policead', function(args)
    local playerName = GetPlayerName(source)
    local msg = rawCommand:sub(8)
    local name = getIdentity(source)
    fal = name.firstname .. " " .. name.lastname
    TriggerClientEvent('chat:addMessage', -1, {
        template = '<div style="padding: 0.5vw; margin: 0.5vw; background-color: rgba(0, 36, 91, 0.6); border-radius: 3px;"><i class="fas fa-bullhorn"></i> L.A.P.D INFORMA:<br> {1}<br></div>',
        args = { fal, msg }
    })
end)

RegisterServerEvent('esx_ads:mechanicad')
AddEventHandler('esx_ads:mechanicad', function(args)
    local playerName = GetPlayerName(source)
    local msg = rawCommand:sub(9)
    local name = getIdentity(source)
    fal = name.firstname .. " " .. name.lastname
    TriggerClientEvent('chat:addMessage', -1, {
        template = '<div style="padding: 0.5vw; margin: 0.5vw; background-color: rgba(156, 156, 156, 0.6); border-radius: 3px;"><i class="fas fa-wrench"></i> MECÁNICO INFORMA:<br> {1}<br></div>',
        args = { fal, msg }
    })
end)

RegisterServerEvent('esx_ads:ambulancead')
AddEventHandler('esx_ads:ambulancead', function(args)
    local playerName = GetPlayerName(source)
    local msg = rawCommand:sub(4)
    local name = getIdentity(source)
    fal = name.firstname .. " " .. name.lastname
    TriggerClientEvent('chat:addMessage', -1, {
        template = '<div style="padding: 0.5vw; margin: 0.5vw; background-color: rgba(250, 0, 0, 0.6); border-radius: 3px;"><i class="fas fa-ambulance"></i> L.A.F.D INFORMA:<br> {1}<br></div>',
        args = { fal, msg }
    })
end)

RegisterServerEvent('esx_ads:taxiad')
AddEventHandler('esx_ads:taxiad', function(args)
    local playerName = GetPlayerName(source)
    local msg = rawCommand:sub(5)
    local name = getIdentity(source)
    fal = name.firstname .. " " .. name.lastname
    TriggerClientEvent('chat:addMessage', -1, {
        template = '<div style="padding: 0.5vw; margin: 0.5vw; background-color: rgba(255, 215, 0, 0.6); border-radius: 3px;"><i class="fas fa-taxi"></i> L.A.T.S INFORMA:<br> {1}<br></div>',
        args = { fal, msg }
    })
end)

function GetCharacterName(source)
	local result = MySQL.Sync.fetchAll('SELECT firstname, lastname FROM users WHERE identifier = @identifier', {
		['@identifier'] = GetPlayerIdentifiers(source)[1]
	})

	if result[1] and result[1].firstname and result[1].lastname then
		if Config.OnlyFirstname then
			return result[1].firstname
		else
			return ('%s %s'):format(result[1].firstname, result[1].lastname)
		end
	else
		return GetPlayerName(source)
	end
end

function getIdentity(source)
	local identifier = GetPlayerIdentifiers(source)[1]
	local result = MySQL.Sync.fetchAll("SELECT * FROM users WHERE identifier = @identifier", {['@identifier'] = identifier})
	if result[1] ~= nil then
		local identity = result[1]

		return {
			identifier = identity['identifier'],
			firstname = identity['firstname'],
			lastname = identity['lastname'],
			dateofbirth = identity['dateofbirth'],
			sex = identity['sex'],
			height = identity['height']
			
		}
	else
		return nil
	end
end

function GetPlayers()
    local players = {}

    for i = 0, 31 do
        if NetworkIsPlayerActive(i) then
            table.insert(players, i)
        end
    end

    return players
end

Thank you for reading and helping! :grinning:

I use this in server/main.lua

RegisterCommand(‘lspd’, function(playerId, args, rawCommand)

local sourceXPlayer = ESX.GetPlayerFromId(playerId)

if sourceXPlayer.job.name == 'police' then 

if playerId == 0 then

    print('esx_rpchat: Tu no\'Tienes permiso para usar este comando!')

else

    args = table.concat(args, ' ')

    local playerName = GetRealPlayerName(playerId)

TriggerClientEvent('chat:addMessage', -1, { template = '<div style="padding: 0.5vw; margin: 0.5vw; background-color: rgba(0, 30, 255, 1); border-radius: 3px;"><i class="fas fa-landmark"></i> {0}:<br> {1}</div>',

    args = {_U('lspd_prefix', playerName), args}, color = {255, 255, 255}})

end 

end

end, false)

client/cleint.lua

Citizen.CreateThread(function()
TriggerEvent(‘chat:addSuggestion’, ‘/lspd’, _U(‘lspd_help’), {{name = _U(‘generic_argument_name’), help = _U(‘generic_argument_lspd’)}})

locales/en.lua

[‘lspd_prefix’] = 'Policia | %s ',

[‘lspd_help’] = ‘Canal de aviso de lspd’

1 Like