Run it
Copy the script and paste it into your executor.
Players = :()
TextChatService = :()
gui = .()
gui.Name =
gui.ResetOnSpawn =
gui.DisplayOrder =
gui.Parent = :()
mainFrame = .()
mainFrame.Size = .(, , , )
mainFrame.Position = .(, , , )
mainFrame.BackgroundColor3 = .(, , )
mainFrame.BorderSizePixel =
mainFrame.BorderColor3 = .(, , )
mainFrame.Parent = gui
titleBar = .()
titleBar.Size = .(, , , )
titleBar.BackgroundColor3 = .(, , )
titleBar.Parent = mainFrame
titleLabel = .()
titleLabel.Size = .(, -, , )
titleLabel.BackgroundTransparency =
titleLabel.Text =
titleLabel.TextColor3 = .(, , )
titleLabel.Font = .Font.GothamBold
titleLabel.TextSize =
titleLabel.TextXAlignment = .TextXAlignment.Left
titleLabel.Position = .(, , , )
titleLabel.Parent = titleBar
.(()
i = ,
titleBar.BackgroundColor3 = .(, , )
.()
titleBar.BackgroundColor3 = .(, , )
.()
titleLabel.Text =
)
closeBtn = .()
closeBtn.Size = .(, , , )
closeBtn.Position = .(, -, , )
closeBtn.BackgroundColor3 = .(, , )
closeBtn.Text =
closeBtn.TextColor3 = .(, , )
closeBtn.Parent = titleBar
closeBtn.MouseButton1Click:(() gui:() )
dragging =
dragStart, startPos
titleBar.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
dragging =
dragStart = input.Position
startPos = mainFrame.Position
)
titleBar.InputChanged:((input)
dragging (input.UserInputType == .UserInputType.MouseMovement input.UserInputType == .UserInputType.Touch)
delta = input.Position - dragStart
mainFrame.Position = .(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
)
:().InputEnded:((input)
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch dragging =
)
tabFrame = .()
tabFrame.Size = .(, , , )
tabFrame.Position = .(, , , )
tabFrame.BackgroundColor3 = .(, , )
tabFrame.Parent = mainFrame
logTab = .()
logTab.Size = .(, , , )
logTab.Text =
logTab.BackgroundColor3 = .(, , )
logTab.TextColor3 = .(,,)
logTab.Font = .Font.GothamBold
logTab.TextSize =
logTab.Parent = tabFrame
settingsTab = .()
settingsTab.Size = .(, , , )
settingsTab.Position = .(, , , )
settingsTab.Text =
settingsTab.BackgroundColor3 = .(, , )
settingsTab.TextColor3 = .(,,)
settingsTab.Font = .Font.GothamBold
settingsTab.TextSize =
settingsTab.Parent = tabFrame
logFrame = .()
logFrame.Size = .(, -, , -)
logFrame.Position = .(, , , )
logFrame.BackgroundTransparency =
logFrame.ScrollBarThickness =
logFrame.Visible =
logFrame.Parent = mainFrame
logLayout = .()
logLayout.Padding = .(, )
logLayout.Parent = logFrame
settingsScroll = .()
settingsScroll.Size = .(, -, , -)
settingsScroll.Position = .(, , , )
settingsScroll.BackgroundTransparency =
settingsScroll.ScrollBarThickness =
settingsScroll.Visible =
settingsScroll.Parent = mainFrame
settingsLayout = .()
settingsLayout.Padding = .(, )
settingsLayout.Parent = settingsScroll
msgColor = .(, , )
tabActive = .(, , )
typewriter =
autoScroll =
unfiltered =
(name, default, callback)
frame = .()
frame.Size = .(, , , )
frame.BackgroundColor3 = .(, , )
frame.Parent = settingsScroll
title = .()
title.Size = .(, , , )
title.BackgroundTransparency =
title.Text = name
title.TextColor3 = .(,,)
title.Font = .Font.GothamBold
title.TextSize =
title.TextXAlignment = .TextXAlignment.Left
title.Position = .(, , , )
title.Parent = frame
preview = .()
preview.Size = .(, , , )
preview.Position = .(, -, , )
preview.BackgroundColor3 = default
preview.BorderSizePixel =
preview.BorderColor3 = .(,,)
preview.Parent = frame
r, g, b = .(default.R*), .(default.G*), .(default.B*)
(ch, y)
tb = .()
tb.Size = .(, , , )
tb.Position = .(, , , + y)
tb.BackgroundColor3 = .(,,)
tb.Text = (ch == r ch == g b)
tb.TextColor3 = .(,,)
tb.Parent = frame
tb.FocusLost:(()
v = .((tb.Text) , , )
tb.Text = v
ch == r = v ch == g = v b = v
newC = .(r, g, b)
preview.BackgroundColor3 = newC
(newC)
name ==
tabActive = newC
logFrame.Visible logTab.BackgroundColor3 = newC settingsTab.BackgroundColor3 = newC
)
(, )
(, )
(, )
(, msgColor, (c) msgColor = c )
(, tabActive, (c) tabActive = c )
typeBtn = .()
typeBtn.Size = .(, , , )
typeBtn.BackgroundColor3 = .(, , )
typeBtn.Text =
typeBtn.TextColor3 = .(,,)
typeBtn.Font = .Font.GothamBold
typeBtn.TextSize =
typeBtn.Parent = settingsScroll
typeBtn.MouseButton1Click:(()
typewriter = typewriter
typeBtn.Text = .. (typewriter )
)
scrollBtn = .()
scrollBtn.Size = .(, , , )
scrollBtn.BackgroundColor3 = .(, , )
scrollBtn.Text =
scrollBtn.TextColor3 = .(,,)
scrollBtn.Font = .Font.GothamBold
scrollBtn.TextSize =
scrollBtn.Parent = settingsScroll
scrollBtn.MouseButton1Click:(()
autoScroll = autoScroll
scrollBtn.Text = .. (autoScroll )
)
filterBtn = .()
filterBtn.Size = .(, , , )
filterBtn.BackgroundColor3 = .(, , )
filterBtn.Text =
filterBtn.TextColor3 = .(,,)
filterBtn.Font = .Font.GothamBold
filterBtn.TextSize =
filterBtn.Parent = settingsScroll
filterBtn.MouseButton1Click:(()
unfiltered = unfiltered
filterBtn.Text = .. (unfiltered )
filterBtn.BackgroundColor3 = unfiltered .(, , ) .(, , )
)
settingsLayout:():(()
settingsScroll.CanvasSize = .(, , , settingsLayout.AbsoluteContentSize.Y + )
)
logTab.MouseButton1Click:(()
logFrame.Visible =
settingsScroll.Visible =
logTab.BackgroundColor3 = tabActive
settingsTab.BackgroundColor3 = .(,,)
)
settingsTab.MouseButton1Click:(()
logFrame.Visible =
settingsScroll.Visible =
settingsTab.BackgroundColor3 = tabActive
logTab.BackgroundColor3 = .(,,)
)
(id)
p = Players:(id)
p p.Team p.Team.TeamColor.Color
cols = {.(,,), .(,,), .(,,), .(,,)}
cols[(id % #cols) + ]
(chName, msg)
src = msg.TextSource
src
name = Players:(src.UserId) Players:(src.UserId).DisplayName
rawText = msg.Text
displayText = unfiltered rawText (msg.PrefixText rawText)
time = .()
kind = chName:() chName:()
team = Players:(src.UserId) Players:(src.UserId).Team ..Players:(src.UserId).Team.Name..
col = (src.UserId)
hex = .. col:()
formatted = displayText:(, )
full = .(, time, kind, hex, name, team, formatted)
label = .()
label.Size = .(, , , )
label.BackgroundTransparency =
label.TextColor3 = msgColor
label.TextSize =
label.Font = .Font.Gotham
label.TextXAlignment = .TextXAlignment.Left
label.TextWrapped =
label.RichText =
label.AutomaticSize = .AutomaticSize.Y
label.Parent = logFrame
pad = .(, label)
pad.PaddingLeft = .(, )
typewriter
label.Text =
i =
i <= #full
startTag = full:(, i)
startTag
label.Text = label.Text .. full:(i, startTag - )
endTag = full:(, startTag)
endTag
label.Text = label.Text .. full:(startTag, endTag)
i = endTag +
label.Text = label.Text .. full:(i)
.()
label.Text = full
autoScroll
logFrame.CanvasPosition = .(, logFrame.AbsoluteCanvasSize.Y)
(ch)
ch:()
ch.MessageReceived:((m) (ch.Name, m) )
_, ch TextChatService.TextChannels:() (ch)
TextChatService.TextChannels.ChildAdded:(connectChannel)
TextChatService.OnIncomingMessage:((m)
m.TextSource (, m)
)
logLayout:():(()
logFrame.CanvasSize = .(, , , logLayout.AbsoluteContentSize.Y + )
autoScroll logFrame.CanvasPosition = .(, logFrame.AbsoluteCanvasSize.Y)
)
()Just logs the chat

Universal