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!