local messageData = {}
local MAX_MESSAGES = 10
local function storeMessage(sender, message)
for _, player in pairs(game.Players:GetPlayers()) do
local sanitizedMessage = sender .. ": " .. game.Chat:FilterStringForPlayerAsync(message, player)
local playerMessages = messageData[tostring(player.userId)]
-- table.insert(messageData[tostring(player.userId)], sanitizedMessage)
-- if #messageData[tostring(player.userId)] > MAX_MESSAGES then
-- table.remove(messageData[tostring(player.userId)], 1)
-- end
-- game.ReplicatedStorage.SendMessages:FireClient(player, messageData[tostring(player.userId)])
table.insert(playerMessages, sanitizedMessage)
if #playerMessages > MAX_MESSAGES then
table.remove(playerMessages, 1)
end
game.ReplicatedStorage.SendMessages:FireClient(player, playerMessages)
end
end
game.Players.PlayerAdded:connect(function(player)
local playerMessages = {}
messageData[tostring(player.userId)] = playerMessages
player.Chatted:connect(function(message)
storeMessage("["..player.Membership.Value.."] "..player.name.Value, message)
end)
player.CharacterAdded:connect(function(character)
game:GetService("RunService").RenderStepped:wait()
game.ReplicatedStorage.SendMessages:FireClient(player, messageData[tostring(player.userId)])
end)
end)
game.Players.PlayerRemoving:connect(function(player)
messageData[tostring(player.userId)] = nil
end)
MAIN SCRIPT
GUI SCRIPT
local chatFrame = script.Parent.Frame
local plr = game.Players.LocalPlayer
game.ReplicatedStorage.SendMessages.OnClientEvent:connect(function(messages)
chatFrame:ClearAllChildren()
for i, message in pairs(messages) do
local newLine = Instance.new("TextLabel", chatFrame)
newLine.Text = message
if plr.name.Value ~= "XBr|FearlessBiscuit" then
newLine.TextColor3 = Color3.new(1,1,1)
else
newLine.TextColor3 = Color3.new(1,0.2,0)
end
newLine.Size = UDim2.new(1,0,0,18)
newLine.Position = UDim2.new(0,0,0,18*(i-1))
newLine.TextXAlignment = Enum.TextXAlignment.Left
newLine.TextYAlignment = Enum.TextYAlignment.Center
newLine.BackgroundTransparency = 1
newLine.BorderSizePixel = 0
newLine.FontSize = Enum.FontSize.Size18
newLine.Font = Enum.Font.SourceSans
print(i .. ": " .. message)
end
end) |