I made a global chat using messagingservice, i've added a filter and everything. But the problem is that my messages aren't showing in other servers, And roblox studio isnt showing a single error in the output, Here are the scripts:
ChatSystem, ServerScript
local MS = game:GetService("MessagingService") local Topic = "GlobalChat" game.Players.PlayerAdded:Connect(function(plr) -- recieve chat local subscribeSuccess, subscribeConnection = pcall(function() return MS:SubscribeAsync(Topic, function(message) game.ReplicatedStorage.Events.RecieveChat:Fire(message.Data) end) end) if subscribeSuccess then plr.AncestryChanged:Connect(function() subscribeConnection:Disconnect() end) end -- send chat game.ReplicatedStorage.Events.SendChat.Event:Connect(function(chat) local publishSuccess, publishResult = pcall(function() local message = {plr.Name,chat} MS:PublishAsync(Topic, message) end) if not publishSuccess then print(publishResult) end end) end)
RecieveChat, ServerScript
local TS = game:GetService("TextService") local PLRS = game:GetService("Players") local LP = script.Parent.Parent.Parent.Parent local MaxChats = 40 local CN = 0 local cache = {} function GetUserIdFromUsername(name) if cache[name] then return cache[name] end local player = PLRS:FindFirstChild(name) if player then cache[name] = player.UserId return player.UserId end local id pcall(function() id = PLRS:GetUserIdFromNameAsync(name) end) cache[name] = id return id end local function FilterText(plr,chat) local TextObject local success, errorMessage = pcall(function() TextObject = TS:FilterStringAsync(chat, GetUserIdFromUsername(plr)) end) if success then return TextObject end return nil end local function GetFilteredMessage(textObject, UserId) local FilteredMessage local success, errorMessage = pcall(function() FilteredMessage = textObject:GetChatForUserAsync(UserId) end) if success then return FilteredMessage end return nil end local function ColorChat(length) if length <= 3 then return Color3.fromRGB(38, 255, 136) elseif length == 4 then return Color3.fromRGB(84, 255, 5) elseif length == 5 then return Color3.fromRGB(227, 255, 83) elseif length == 6 then return Color3.fromRGB(253, 41, 67) elseif length == 7 then return Color3.fromRGB(59, 41, 255) elseif length == 8 then return Color3.fromRGB(220, 19, 255) elseif length == 9 then return Color3.fromRGB(255, 65, 65) elseif length == 10 then return Color3.fromRGB(255, 1, 13) elseif length == 11 then return Color3.fromRGB(28, 255, 161) elseif length == 12 then return Color3.fromRGB(255, 48, 138) elseif length == 13 then return Color3.fromRGB(255, 156, 69) elseif length == 14 then return Color3.fromRGB(17, 0, 255) elseif length >= 15 then return Color3.fromRGB(0, 255, 17) end return Color3.fromRGB(255, 65, 65) end local function FindLastChat(frame) local lastchat = nil for i,v in pairs(frame:GetChildren()) do if v.Position == UDim2.new(0,0,0.975,0) then lastchat = v end end return lastchat end game.ReplicatedStorage.Events.RecieveChat.Event:Connect(function(data) local chats = script.Parent.ChatBox.Chats local chat = game.ReplicatedStorage.Chat:Clone() local plr,msg = data[1],data[2] if GetFilteredMessage(FilterText(plr,msg),LP.UserId) ~= nil then CN = CN + 1 chat.Name = "Chat"..CN local message = GetFilteredMessage(FilterText(plr,msg),LP.UserId) if plr == "System" then chat.Username.Text = "{"..plr.."}:" else chat.Username.Text = "["..plr.."]:" end chat.ChatInfo.Text = message chat.Username.TextColor3 = ColorChat(string.len(plr)) chat.Parent = chats if FindLastChat(chats) ~= nil then FindLastChat(chats):Destroy() end for i,v in pairs(chats:GetChildren()) do v.Position = UDim2.new(v.Position.X.Scale,v.Position.X.Offset,v.Position.Y.Scale+0.025,v.Position.Y.Offset) end chat.Position = UDim2.new(0,0,0,0) end end)
SendChat, ServerScript
local cd = script.Parent.Cooldown local plr = script.Parent.Parent.Parent.Parent script.Parent.ChatText.ChatSend.MouseButton1Click:Connect(function() if cd.Value == 0 then game.ReplicatedStorage.Events.SendChat:Fire(script.Parent.GetText:InvokeClient(plr)) cd.Value = 10 for i = 1,10 do cd.Value = cd.Value - 1 script.Parent.ChatText.ChatSend.Text = (cd.Value+1).."s" wait(1) end script.Parent.ChatText.ChatSend.Text = "Send" end end)
If you can see the problem then please reply.