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:
parent
c94cc7cba7
commit
6ce5d8b3c1
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user