
KeylessUniversal

--[[
I copied of this script
https://scriptblox.com/script/Universal-Script-Macro-chat-v2-40200
pls dont be mad at me
--]]
-----------------------------------------------------------
-- Debug Utilities
-----------------------------------------------------------
local DEBUG = true
local function debugPrint(msg)
if DEBUG then
print("[MACRO CHAT DEBUG] " .. msg)
end
end
-----------------------------------------------------------
-- Services & Variables
-----------------------------------------------------------
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local TextChatService
pcall(function() TextChatService = game:GetService("TextChatService") end)
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local externalUniqueMessages = {}
local isSupport = isfolder and isfile and writefile and readfile
local WorkspacePaths = {
MACROCHATV2 = "Macro-ChatV2",
CONFIG_FILE = "Macro-ChatV2/config.txt",
}
if isSupport then
if not isfolder(WorkspacePaths.MACROCHATV2) then
makefolder(WorkspacePaths.MACROCHATV2)
end
end
-----------------------------------------------------------
-- Chat Sender Function
-----------------------------------------------------------
local function sendChatMessage(message)
local chatEvents = ReplicatedStorage:FindFirstChild("DefaultChatSystemChatEvents")
if chatEvents then
local remoteEvent = chatEvents:FindFirstChild("SayMessageRequest")
if remoteEvent then
remoteEvent:FireServer(message, "All")
debugPrint("Sent via remote event: " .. message)
return
end
end
if TextChatService then
local channel = TextChatService.TextChannels and TextChatService.TextChannels:FindFirstChild("RBXGeneral")
if channel and channel.SendAsync then
local suc, err = pcall(function() channel:SendAsync(message) end)
if suc then
debugPrint("Sent via TextChatService: " .. message)
return
else
debugPrint("TextChatService error: " .. tostring(err))
end
else
debugPrint("RBXGeneral channel not found.")
end
end
debugPrint("Falling back to SetCore for chat.")
local suc, err = pcall(function()
StarterGui:SetCore("ChatMakeSystemMessage", {
Text = message,
Color = Color3.new(1, 1, 1),
Font = Enum.Font.SourceSansBold,
TextSize = 18,
})
end)
if suc then
debugPrint("Sent via SetCore: " .. message)
else
debugPrint("SetCore error: " .. tostring(err))
end
end
-----------------------------------------------------------
-- Helper: Make a UI Draggable
-----------------------------------------------------------
local function makeDraggable(frame)
local dragging = false
local dragStart, startPos
frame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = frame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
frame.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
local delta = input.Position - dragStart
frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)
end
-----------------------------------------------------------
-- Main UI Setup
-----------------------------------------------------------
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "MacroChatScreen"
screenGui.Parent = playerGui
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 200, 0, 200)
mainFrame.Position = UDim2.new(0.5, -100, 0.5, -100)
mainFrame.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
mainFrame.BorderSizePixel = 0
mainFrame.Parent = screenGui
local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 20)
mainCorner.Parent = mainFrame
makeDraggable(mainFrame)
local blueButton = Instance.new("TextButton")
blueButton.Name = "BlueButton"
blueButton.Size = UDim2.new(0, 120, 0, 40)
blueButton.Position = UDim2.new(0.5, -60, 0.5, -20)
blueButton.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
blueButton.Text = "Open Macro Chat 2"
blueButton.TextColor3 = Color3.new(1, 1, 1)
blueButton.Font = Enum.Font.SourceSansBold
blueButton.TextScaled = true
blueButton.Parent = mainFrame
local blueButtonCorner = Instance.new("UICorner")
blueButtonCorner.CornerRadius = UDim.new(0.45, 0)
blueButtonCorner.Parent = blueButton
local minimizeButton = Instance.new("TextButton")
minimizeButton.Name = "MinimizeButton"
minimizeButton.Size = UDim2.new(0, 25, 0, 25)
minimizeButton.Position = UDim2.new(0, 5, 0, 5)
minimizeButton.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
minimizeButton.Text = "–"
minimizeButton.TextScaled = true
minimizeButton.Font = Enum.Font.SourceSansBold
minimizeButton.TextColor3 = Color3.new(1, 1, 1)
minimizeButton.Parent = mainFrame
local minCorner = Instance.new("UICorner")
minCorner.CornerRadius = UDim.new(1, 0)
minCorner.Parent = minimizeButton
local closeButton = Instance.new("TextButton")
closeButton.Name = "CloseButton"
closeButton.Size = UDim2.new(0, 25, 0, 25)
closeButton.Position = UDim2.new(0, 35, 0, 5)
closeButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
closeButton.Text = "X"
closeButton.TextScaled = true
closeButton.Font = Enum.Font.SourceSansBold
closeButton.TextColor3 = Color3.new(1, 1, 1)
closeButton.Parent = mainFrame
local closeCorner = Instance.new("UICorner")
closeCorner.CornerRadius = UDim.new(1, 0)
closeCorner.Parent = closeButton
closeButton.MouseButton1Click:Connect(function()
screenGui:Destroy()
debugPrint("Main UI closed.")
end)
local isMinimized = false
local originalSize = mainFrame.Size
minimizeButton.MouseButton1Click:Connect(function()
if not isMinimized then
TweenService:Create(mainFrame, TweenInfo.new(0.2), {Size = UDim2.new(0, 200, 0, 40)}):Play()
blueButton.Visible = false
isMinimized = true
else
TweenService:Create(mainFrame, TweenInfo.new(0.2), {Size = originalSize}):Play()
blueButton.Visible = true
isMinimized = false
end
end)
-----------------------------------------------------------
-- External UI Variables
-----------------------------------------------------------
local externalUI = nil
local blueAnimRunning = false
-----------------------------------------------------------
-- Blue Button: Toggle External UI
-----------------------------------------------------------
blueButton.MouseButton1Click:Connect(function()
if isMinimized or blueAnimRunning then return end
blueAnimRunning = true
local origPos = blueButton.Position
local upTween = TweenService:Create(blueButton, TweenInfo.new(0.1), {Position = origPos - UDim2.new(0, 0, 0, 10)})
local downTween = TweenService:Create(blueButton, TweenInfo.new(0.1), {Position = origPos})
upTween:Play()
upTween.Completed:Connect(function(status)
if status == Enum.PlaybackState.Completed then
downTween:Play()
end
end)
downTween.Completed:Connect(function(status)
if status == Enum.PlaybackState.Completed then
if not externalUI then
debugPrint("Creating external UI.")
externalUI = Instance.new("Frame")
externalUI.Name = "ExternalChatUI"
externalUI.Size = UDim2.new(0, 350, 0, 250)
externalUI.Position = UDim2.new(0.5, -175, 0.5, -125)
externalUI.BackgroundColor3 = Color3.new(1, 1, 1)
externalUI.BorderSizePixel = 0
externalUI.Parent = screenGui
local extCorner = Instance.new("UICorner")
extCorner.CornerRadius = UDim.new(0, 20)
extCorner.Parent = externalUI
makeDraggable(externalUI)
local header = Instance.new("TextLabel")
header.Size = UDim2.new(1, -20, 0, 30)
header.Position = UDim2.new(0, 10, 0, 10)
header.BackgroundTransparency = 1
header.Text = "Put your message here"
header.Font = Enum.Font.SourceSansBold
header.TextScaled = true
header.TextColor3 = Color3.new(0, 0, 0)
header.Parent = externalUI
local inputBox = Instance.new("TextBox")
inputBox.Name = "InputBox"
inputBox.Size = UDim2.new(1, -20, 0, 40)
inputBox.Position = UDim2.new(0, 10, 0, 50)
inputBox.BackgroundColor3 = Color3.fromRGB(240, 240, 240)
inputBox.PlaceholderText = "Type your message here..."
inputBox.Text = ""
inputBox.TextScaled = true
inputBox.TextColor3 = Color3.new(0, 0, 0)
inputBox.Parent = externalUI
local inputCorner = Instance.new("UICorner")
inputCorner.CornerRadius = UDim.new(0.45, 0)
inputCorner.Parent = inputBox
local scrollFrame = Instance.new("ScrollingFrame")
scrollFrame.Name = "MessageScroll"
scrollFrame.Size = UDim2.new(1, -20, 0, 100)
scrollFrame.Position = UDim2.new(0, 10, 0, 100)
scrollFrame.BackgroundTransparency = 1
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
scrollFrame.Parent = externalUI
local uiList = Instance.new("UIListLayout")
uiList.SortOrder = Enum.SortOrder.LayoutOrder
uiList.Parent = scrollFrame
inputBox.FocusLost:Connect(function(enterPressed)
if enterPressed then
local text = inputBox.Text
if text and text ~= "" and not externalUniqueMessages[text] then
externalUniqueMessages[text] = true
sendChatMessage(text)
local msgButton = Instance.new("TextButton")
msgButton.Size = UDim2.new(1, -10, 0, 30)
msgButton.BackgroundColor3 = Color3.fromRGB(220, 220, 220)
msgButton.Text = text
msgButton.TextColor3 = Color3.new(0, 0, 0)
msgButton.Font = Enum.Font.SourceSans
msgButton.TextScaled = true
msgButton.AutoButtonColor = true
msgButton.Parent = scrollFrame
local msgCorner = Instance.new("UICorner")
msgCorner.CornerRadius = UDim.new(0.45, 0)
msgCorner.Parent = msgButton
msgButton.MouseButton1Click:Connect(function()
sendChatMessage(text)
end)
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, uiList.AbsoluteContentSize.Y)
end
inputBox.Text = ""
end
end)
local function createExpandableButton(name, position, text, onClick)
local button = Instance.new("TextButton")
button.Name = name
button.Size = UDim2.new(0, 60, 0, 30)
button.Position = position
button.BackgroundColor3 = Color3.fromRGB(150, 150, 150)
button.Text = text
button.TextColor3 = Color3.new(0, 0, 0)
button.Font = Enum.Font.SourceSansBold
button.TextScaled = true
button.Parent = externalUI
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0.4, 0)
corner.Parent = button
local isHolding = false
local holdTween = nil
local releaseTween = nil
button.MouseButton1Down:Connect(function()
isHolding = true
holdTween = TweenService:Create(button, TweenInfo.new(0.2), {Size = UDim2.new(0, 100, 0, 40)})
holdTween:Play()
end)
button.MouseButton1Up:Connect(function()
if isHolding then
isHolding = false
releaseTween = TweenService:Create(button, TweenInfo.new(0.2), {Size = UDim2.new(0, 60, 0, 30)})
releaseTween:Play()
onClick()
end
end)
return button
end
local function saveMessages()
if not isSupport then return end
debugPrint("Saving messages to config file...")
local allText = ""
for msg, _ in pairs(externalUniqueMessages) do
allText = allText .. msg .. "\n"
end
writefile(WorkspacePaths.CONFIG_FILE, allText)
debugPrint("Messages saved.")
end
local function loadMessages()
if not isSupport then return end
debugPrint("Loading messages from config file...")
if not isfile(WorkspacePaths.CONFIG_FILE) then
debugPrint("Config file missing. Creating empty file.")
writefile(WorkspacePaths.CONFIG_FILE, "")
return
end
local content = readfile(WorkspacePaths.CONFIG_FILE)
if not content or content == "" then
debugPrint("Config file is empty.")
return
end
local scrollFrame = externalUI:FindFirstChild("MessageScroll")
local uiList = scrollFrame and scrollFrame:FindFirstChildOfClass("UIListLayout")
local lines = string.split(content, "\n")
coroutine.wrap(function()
for _, text in ipairs(lines) do
if text ~= "" and not externalUniqueMessages[text] then
externalUniqueMessages[text] = true
sendChatMessage(text)
local msgButton = Instance.new("TextButton")
msgButton.Name = "MsgButton"
msgButton.Size = UDim2.new(1, -10, 0, 30)
msgButton.BackgroundColor3 = Color3.fromRGB(220, 220, 220)
msgButton.Text = text
msgButton.TextColor3 = Color3.new(0, 0, 0)
msgButton.Font = Enum.Font.SourceSans
msgButton.TextScaled = true
msgButton.AutoButtonColor = true
msgButton.Parent = scrollFrame
local msgCorner = Instance.new("UICorner")
msgCorner.CornerRadius = UDim.new(0.45, 0)
msgCorner.Parent = msgButton
msgButton.MouseButton1Click:Connect(function()
sendChatMessage(text)
end)
if uiList then
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, uiList.AbsoluteContentSize.Y)
end
wait(0.15) -- simulate user-like loading delay
end
end
end)()
end
createExpandableButton("SaveButton", UDim2.new(0, 10, 0.80, 10), "Save", saveMessages)
createExpandableButton("LoadButton", UDim2.new(1, -70, 0.80, 10), "Load", loadMessages)
else
externalUI.Visible = not externalUI.Visible
end
end
blueAnimRunning = false
end)
end)
![[KEYLESS] Moondiety Script | 17+ supported Games](https://scriptblox.com/images/sb/0-1753093706828.png)


Cool remake