Run it
Copy the script and paste it into your executor.
DEBUG =
(msg)
DEBUG
( .. msg)
Players = :()
ReplicatedStorage = :()
StarterGui = :()
TweenService = :()
UserInputService = :()
TextChatService
(() TextChatService = :() )
player = Players.LocalPlayer
playerGui = player:()
externalUniqueMessages = {}
isSupport = isfolder isfile writefile readfile
WorkspacePaths = {
MACROCHATV2 = ,
CONFIG_FILE = ,
}
isSupport
(WorkspacePaths.MACROCHATV2)
(WorkspacePaths.MACROCHATV2)
(message)
chatEvents = ReplicatedStorage:()
chatEvents
remoteEvent = chatEvents:()
remoteEvent
remoteEvent:(message, )
( .. message)
TextChatService
channel = TextChatService.TextChannels TextChatService.TextChannels:()
channel channel.SendAsync
suc, err = (() channel:(message) )
suc
( .. message)
( .. (err))
()
()
suc, err = (()
StarterGui:(, {
Text = message,
Color = .(, , ),
Font = .Font.SourceSansBold,
TextSize = ,
})
)
suc
( .. message)
( .. (err))
(frame)
dragging =
dragStart, startPos
frame.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
dragging =
dragStart = input.Position
startPos = frame.Position
input.Changed:(()
input.UserInputState == .UserInputState.End
dragging =
)
)
frame.InputChanged:((input)
dragging (input.UserInputType == .UserInputType.MouseMovement input.UserInputType == .UserInputType.Touch)
delta = input.Position - dragStart
frame.Position = .(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
)
screenGui = .()
screenGui.Name =
screenGui.Parent = playerGui
mainFrame = .()
mainFrame.Name =
mainFrame.Size = .(, , , )
mainFrame.Position = .(, -, , -)
mainFrame.BackgroundColor3 = .(, , )
mainFrame.BorderSizePixel =
mainFrame.Parent = screenGui
mainCorner = .()
mainCorner.CornerRadius = .(, )
mainCorner.Parent = mainFrame
(mainFrame)
blueButton = .()
blueButton.Name =
blueButton.Size = .(, , , )
blueButton.Position = .(, -, , -)
blueButton.BackgroundColor3 = .(, , )
blueButton.Text =
blueButton.TextColor3 = .(, , )
blueButton.Font = .Font.SourceSansBold
blueButton.TextScaled =
blueButton.Parent = mainFrame
blueButtonCorner = .()
blueButtonCorner.CornerRadius = .(, )
blueButtonCorner.Parent = blueButton
minimizeButton = .()
minimizeButton.Name =
minimizeButton.Size = .(, , , )
minimizeButton.Position = .(, , , )
minimizeButton.BackgroundColor3 = .(, , )
minimizeButton.Text =
minimizeButton.TextScaled =
minimizeButton.Font = .Font.SourceSansBold
minimizeButton.TextColor3 = .(, , )
minimizeButton.Parent = mainFrame
minCorner = .()
minCorner.CornerRadius = .(, )
minCorner.Parent = minimizeButton
closeButton = .()
closeButton.Name =
closeButton.Size = .(, , , )
closeButton.Position = .(, , , )
closeButton.BackgroundColor3 = .(, , )
closeButton.Text =
closeButton.TextScaled =
closeButton.Font = .Font.SourceSansBold
closeButton.TextColor3 = .(, , )
closeButton.Parent = mainFrame
closeCorner = .()
closeCorner.CornerRadius = .(, )
closeCorner.Parent = closeButton
closeButton.MouseButton1Click:(()
screenGui:()
()
)
isMinimized =
originalSize = mainFrame.Size
minimizeButton.MouseButton1Click:(()
isMinimized
TweenService:(mainFrame, TweenInfo.(), {Size = .(, , , )}):()
blueButton.Visible =
isMinimized =
TweenService:(mainFrame, TweenInfo.(), {Size = originalSize}):()
blueButton.Visible =
isMinimized =
)
externalUI =
blueAnimRunning =
blueButton.MouseButton1Click:(()
isMinimized blueAnimRunning
blueAnimRunning =
origPos = blueButton.Position
upTween = TweenService:(blueButton, TweenInfo.(), {Position = origPos - .(, , , )})
downTween = TweenService:(blueButton, TweenInfo.(), {Position = origPos})
upTween:()
upTween.Completed:((status)
status == .PlaybackState.Completed
downTween:()
)
downTween.Completed:((status)
status == .PlaybackState.Completed
externalUI
()
externalUI = .()
externalUI.Name =
externalUI.Size = .(, , , )
externalUI.Position = .(, -, , -)
externalUI.BackgroundColor3 = .(, , )
externalUI.BorderSizePixel =
externalUI.Parent = screenGui
extCorner = .()
extCorner.CornerRadius = .(, )
extCorner.Parent = externalUI
(externalUI)
header = .()
header.Size = .(, -, , )
header.Position = .(, , , )
header.BackgroundTransparency =
header.Text =
header.Font = .Font.SourceSansBold
header.TextScaled =
header.TextColor3 = .(, , )
header.Parent = externalUI
inputBox = .()
inputBox.Name =
inputBox.Size = .(, -, , )
inputBox.Position = .(, , , )
inputBox.BackgroundColor3 = .(, , )
inputBox.PlaceholderText =
inputBox.Text =
inputBox.TextScaled =
inputBox.TextColor3 = .(, , )
inputBox.Parent = externalUI
inputCorner = .()
inputCorner.CornerRadius = .(, )
inputCorner.Parent = inputBox
scrollFrame = .()
scrollFrame.Name =
scrollFrame.Size = .(, -, , )
scrollFrame.Position = .(, , , )
scrollFrame.BackgroundTransparency =
scrollFrame.CanvasSize = .(, , , )
scrollFrame.Parent = externalUI
uiList = .()
uiList.SortOrder = .SortOrder.LayoutOrder
uiList.Parent = scrollFrame
inputBox.FocusLost:((enterPressed)
enterPressed
text = inputBox.Text
text text ~= externalUniqueMessages[text]
externalUniqueMessages[text] =
(text)
msgButton = .()
msgButton.Size = .(, -, , )
msgButton.BackgroundColor3 = .(, , )
msgButton.Text = text
msgButton.TextColor3 = .(, , )
msgButton.Font = .Font.SourceSans
msgButton.TextScaled =
msgButton.AutoButtonColor =
msgButton.Parent = scrollFrame
msgCorner = .()
msgCorner.CornerRadius = .(, )
msgCorner.Parent = msgButton
msgButton.MouseButton1Click:(()
(text)
)
scrollFrame.CanvasSize = .(, , , uiList.AbsoluteContentSize.Y)
inputBox.Text =
)
(name, position, text, onClick)
button = .()
button.Name = name
button.Size = .(, , , )
button.Position = position
button.BackgroundColor3 = .(, , )
button.Text = text
button.TextColor3 = .(, , )
button.Font = .Font.SourceSansBold
button.TextScaled =
button.Parent = externalUI
corner = .()
corner.CornerRadius = .(, )
corner.Parent = button
isHolding =
holdTween =
releaseTween =
button.MouseButton1Down:(()
isHolding =
holdTween = TweenService:(button, TweenInfo.(), {Size = .(, , , )})
holdTween:()
)
button.MouseButton1Up:(()
isHolding
isHolding =
releaseTween = TweenService:(button, TweenInfo.(), {Size = .(, , , )})
releaseTween:()
()
)
button
()
isSupport
()
allText =
msg, _ (externalUniqueMessages)
allText = allText .. msg ..
(WorkspacePaths.CONFIG_FILE, allText)
()
()
isSupport
()
(WorkspacePaths.CONFIG_FILE)
()
(WorkspacePaths.CONFIG_FILE, )
content = (WorkspacePaths.CONFIG_FILE)
content content ==
()
scrollFrame = externalUI:()
uiList = scrollFrame scrollFrame:()
lines = .(content, )
.(()
_, text (lines)
text ~= externalUniqueMessages[text]
externalUniqueMessages[text] =
(text)
msgButton = .()
msgButton.Name =
msgButton.Size = .(, -, , )
msgButton.BackgroundColor3 = .(, , )
msgButton.Text = text
msgButton.TextColor3 = .(, , )
msgButton.Font = .Font.SourceSans
msgButton.TextScaled =
msgButton.AutoButtonColor =
msgButton.Parent = scrollFrame
msgCorner = .()
msgCorner.CornerRadius = .(, )
msgCorner.Parent = msgButton
msgButton.MouseButton1Click:(()
(text)
)
uiList
scrollFrame.CanvasSize = .(, , , uiList.AbsoluteContentSize.Y)
()
)()
(, .(, , , ), , saveMessages)
(, .(, -, , ), , loadMessages)
externalUI.Visible = externalUI.Visible
blueAnimRunning =
)
)DISCLAIMER: i have copy of this version https://scriptblox.com/script/Universal-Script-Macro-chat-v2-40200 if you are the owner of this pls dont be mad at me :( - old features in the link - Save to file - Read file to load - Add folder and file

Universal