1
0
mirror of https://github.com/citizenfx/cfx-server-data.git synced 2025-02-13 17:53:16 +08:00

chat: add support for seObject field for modes and setSeObject for modes/hooks

This commit is contained in:
astatine 2020-04-12 22:17:33 +02:00 committed by blattersturm
parent c94cc7cba7
commit 6ce5d8b3c1

View File

@ -33,6 +33,19 @@ end)
local modes = {} local modes = {}
local function getMatchingPlayers(seObject)
local players = GetPlayers()
local retval = {}
for _, v in ipairs(players) do
if IsPlayerAceAllowed(v, seObject) then
retval[#retval + 1] = v
end
end
return retval
end
exports('registerMode', function(modeData) exports('registerMode', function(modeData)
if not modeData.name or not modeData.displayName or not modeData.cb then if not modeData.name or not modeData.displayName or not modeData.cb then
return false return false
@ -43,11 +56,19 @@ exports('registerMode', function(modeData)
modes[modeData.name] = modeData modes[modeData.name] = modeData
modes[modeData.name].resource = resource modes[modeData.name].resource = resource
TriggerClientEvent('chat:addMode', -1, { local clObj = {
name = modeData.name, name = modeData.name,
displayName = modeData.displayName, displayName = modeData.displayName,
color = modeData.color or '#fff' color = modeData.color or '#fff'
}) }
if not modeData.seObject then
TriggerClientEvent('chat:addMode', -1, clObj)
else
for _, v in ipairs(getMatchingPlayers(modeData.seObject)) do
TriggerClientEvent('chat:addMode', v, clObj)
end
end
return true return true
end) end)
@ -99,6 +120,14 @@ AddEventHandler('_chat:messageEntered', function(author, color, message, mode)
outMessage.args = { author, message } outMessage.args = { author, message }
end end
if mode and modes[mode] then
local modeData = modes[mode]
if modeData.seObject and not IsPlayerAceAllowed(source, modeData.seObject) then
return
end
end
local messageCanceled = false local messageCanceled = false
local routingTarget = -1 local routingTarget = -1
@ -126,6 +155,10 @@ AddEventHandler('_chat:messageEntered', function(author, color, message, mode)
messageCanceled = true messageCanceled = true
end, end,
setSeObject = function(object)
routingTarget = getMatchingPlayers(object)
end,
setRouting = function(target) setRouting = function(target)
routingTarget = target routingTarget = target
end end
@ -218,7 +251,20 @@ local function refreshCommands(player)
end end
AddEventHandler('chat:init', function() AddEventHandler('chat:init', function()
local source = source
refreshCommands(source) refreshCommands(source)
for _, modeData in pairs(modes) do
local clObj = {
name = modeData.name,
displayName = modeData.displayName,
color = modeData.color or '#fff'
}
if not modeData.seObject or IsPlayerAceAllowed(source, modeData.seObject) then
TriggerClientEvent('chat:addMode', source, clObj)
end
end
end) end)
AddEventHandler('onServerResourceStart', function(resName) AddEventHandler('onServerResourceStart', function(resName)