#global chat

4 messages · Page 1 of 1 (latest)

static rain
#

server script:

---- Services ----
local TextChatService = game:GetService("TextChatService")
local MessagingService = game:GetService("MessagingService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextService = game:GetService("TextService")
local Players = game:GetService("Players")

---- Variables ----
local Messenger = ReplicatedStorage:WaitForChild("Messenger")
local topic = "GlobalChat"

Messenger.OnServerEvent:Connect(function(player, message)
    print("messenger on server event ran")
    local dataToBeSent = player.Name .. '\\' .. message
    MessagingService:PublishAsync(topic, dataToBeSent)
end)

MessagingService:SubscribeAsync(topic, function(message)
    print("subscribe async ran")
    local fromPlayer, playerMessage = string.match(message.Data, "(.-)\\(.*)")
    if not table.find(Players:GetPlayers(), Players:GetPlayerByUserId(Players:GetUserIdFromNameAsync(fromPlayer))) then
        for _, player in Players:GetPlayers() do
            local objectSuccess, object = pcall(function()
                return TextService:FilterStringAsync(
                    playerMessage, -- the message
                    Players:GetUserIdFromNameAsync(fromPlayer),
                    Enum.TextFilterContext.PublicChat -- Context for filtering
                )
            end)
            if not objectSuccess then return end

            local filterSuccess, result = pcall(function()
                return object:GetChatForUserAsync(player.UserId)
            end)
            if not filterSuccess then print(`filter success is fail: {filterSuccess}`) return end
            Messenger:FireClient(player, fromPlayer, result)
        end
    end
end)```
#

scroll to top for info

west finch
#

It so much simpler and that doesn't even make global for all servers

#

Use MessagingService