
KeylessUniversal

-- UltraCool Chat: Full Chat, Key, Fly, Noclip, Drag = ALL IN ONE
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local character = player.Character or player.CharacterAdded:Wait()
local root = character:WaitForChild("HumanoidRootPart")
local authenticated = false
local key = "coolkidd"
-- UI Setup
local gui = Instance.new("ScreenGui", playerGui)
gui.Name = "CoolChatGUI"
gui.ResetOnSpawn = false
-- Chat Button
local chatButton = Instance.new("ImageButton", gui)
chatButton.Size = UDim2.new(0, 60, 0, 60)
chatButton.Position = UDim2.new(0, 15, 1, -75)
chatButton.AnchorPoint = Vector2.new(0,1)
chatButton.Image = "rbxassetid://12585857833"
chatButton.BackgroundColor3 = Color3.fromRGB(20, 25, 35)
chatButton.AutoButtonColor = true
Instance.new("UICorner", chatButton).CornerRadius = UDim.new(1, 0)
local stroke = Instance.new("UIStroke", chatButton)
stroke.Thickness = 2
-- Chat Frame
local frame = Instance.new("Frame", gui)
frame.Size = UDim2.new(0, 400, 0, 260)
frame.Position = UDim2.new(0.5, -200, 0.5, -130)
frame.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
frame.Visible = false
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 12)
-- Key Frame
local keyFrame = Instance.new("Frame", gui)
keyFrame.Size = UDim2.new(0, 300, 0, 140)
keyFrame.Position = UDim2.new(0.5, -150, 0.5, -70)
keyFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 40)
keyFrame.Visible = false
Instance.new("UICorner", keyFrame)
local keyBox = Instance.new("TextBox", keyFrame)
keyBox.Size = UDim2.new(1, -20, 0, 40)
keyBox.Position = UDim2.new(0, 10, 0, 20)
keyBox.PlaceholderText = "Enter Key..."
keyBox.TextSize = 20
keyBox.TextColor3 = Color3.new(1,1,1)
keyBox.BackgroundColor3 = Color3.fromRGB(45,45,55)
Instance.new("UICorner", keyBox)
local submit = Instance.new("TextButton", keyFrame)
submit.Size = UDim2.new(0, 100, 0, 36)
submit.Position = UDim2.new(1, -110, 1, -46)
submit.Text = "Unlock"
submit.TextSize = 20
submit.BackgroundColor3 = Color3.fromRGB(60,130,255)
submit.TextColor3 = Color3.new(1,1,1)
Instance.new("UICorner", submit)
local errorText = Instance.new("TextLabel", keyFrame)
errorText.Size = UDim2.new(1, -20, 0, 20)
errorText.Position = UDim2.new(0, 10, 1, -70)
errorText.BackgroundTransparency = 1
errorText.Text = ""
errorText.TextColor3 = Color3.fromRGB(255, 80, 80)
errorText.TextSize = 16
-- Message Area
local scroll = Instance.new("ScrollingFrame", frame)
scroll.Size = UDim2.new(1, -20, 1, -80)
scroll.Position = UDim2.new(0, 10, 0, 10)
scroll.CanvasSize = UDim2.new(0, 0, 0, 0)
scroll.ScrollBarThickness = 6
scroll.BackgroundTransparency = 1
local layout = Instance.new("UIListLayout", scroll)
layout.Padding = UDim.new(0, 5)
layout.SortOrder = Enum.SortOrder.LayoutOrder
-- Chat Input
local input = Instance.new("TextBox", frame)
input.Size = UDim2.new(1, -120, 0, 40)
input.Position = UDim2.new(0, 10, 1, -50)
input.PlaceholderText = "Say something..."
input.TextSize = 18
input.TextColor3 = Color3.new(1,1,1)
input.BackgroundColor3 = Color3.fromRGB(40,40,50)
Instance.new("UICorner", input)
local sendBtn = Instance.new("TextButton", frame)
sendBtn.Size = UDim2.new(0, 90, 0, 40)
sendBtn.Position = UDim2.new(1, -100, 1, -50)
sendBtn.Text = "Send"
sendBtn.TextSize = 20
sendBtn.TextColor3 = Color3.new(1,1,1)
sendBtn.BackgroundColor3 = Color3.fromRGB(70, 180, 255)
Instance.new("UICorner", sendBtn)
-- Bubble Chat
function createBubble(text)
local bubble = Instance.new("BillboardGui")
bubble.Size = UDim2.new(0, 200, 0, 50)
bubble.StudsOffset = Vector3.new(0, 4, 0)
bubble.Adornee = root
bubble.Parent = character
bubble.Name = "ChatBubble"
bubble.AlwaysOnTop = true
local bg = Instance.new("Frame", bubble)
bg.Size = UDim2.new(1, 0, 1, 0)
bg.BackgroundColor3 = Color3.fromRGB(35, 40, 55)
Instance.new("UICorner", bg)
local txt = Instance.new("TextLabel", bg)
txt.Size = UDim2.new(1, -20, 1, -20)
txt.Position = UDim2.new(0, 10, 0, 10)
txt.BackgroundTransparency = 1
txt.Text = text
txt.Font = Enum.Font.GothamBold
txt.TextSize = 20
txt.TextWrapped = true
txt.TextColor3 = Color3.fromRGB(120,200,255)
task.delay(4, function()
bubble:Destroy()
end)
end
-- Add message to scroll
function addMessage(msg)
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(1, 0, 0, 30)
lbl.BackgroundTransparency = 1
lbl.TextColor3 = Color3.fromRGB(200, 230, 255)
lbl.Text = player.Name .. ": " .. msg
lbl.Font = Enum.Font.Gotham
lbl.TextSize = 18
lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Parent = scroll
scroll.CanvasSize = UDim2.new(0, 0, 0, layout.AbsoluteContentSize.Y + 10)
createBubble(msg)
end
-- Button Glow Logic
function updateButtonState()
if authenticated then
chatButton.BackgroundColor3 = Color3.fromRGB(30, 45, 60)
stroke.Color = Color3.fromRGB(70, 180, 255)
stroke.Transparency = 0
else
chatButton.BackgroundColor3 = Color3.fromRGB(18, 18, 22)
stroke.Color = Color3.fromRGB(100, 100, 100)
stroke.Transparency = 0.4
end
end
-- Unlock logic
submit.MouseButton1Click:Connect(function()
if keyBox.Text == key then
authenticated = true
keyFrame.Visible = false
frame.Visible = true
input:CaptureFocus()
updateButtonState()
else
errorText.Text = "❌ Wrong key!"
end
end)
-- Button click
chatButton.MouseButton1Click:Connect(function()
if authenticated then
frame.Visible = not frame.Visible
if frame.Visible then input:CaptureFocus() end
else
keyFrame.Visible = true
keyBox.Text = ""
errorText.Text = ""
keyBox:CaptureFocus()
end
end)
-- Send message
sendBtn.MouseButton1Click:Connect(function()
if input.Text ~= "" then
addMessage(input.Text)
input.Text = ""
end
end)
input.FocusLost:Connect(function(enter)
if enter then sendBtn:Activate() end
end)
-- Fly + Noclip
local flying = false
local noclip = false
local gyro, velocity
UserInputService.InputBegan:Connect(function(input, gp)
if gp then return end
if input.KeyCode == Enum.KeyCode.F then
flying = not flying
if flying then
gyro = Instance.new("BodyGyro", root)
gyro.P = 9e4
gyro.MaxTorque = Vector3.new(9e9,9e9,9e9)
gyro.CFrame = root.CFrame
velocity = Instance.new("BodyVelocity", root)
velocity.Velocity = Vector3.new(0,0,0)
velocity.MaxForce = Vector3.new(9e9,9e9,9e9)
RunService.RenderStepped:Connect(function()
if flying then
gyro.CFrame = workspace.CurrentCamera.CFrame
velocity.Velocity = workspace.CurrentCamera.CFrame.LookVector * 60
end
end)
else
if gyro then gyro:Destroy() end
if velocity then velocity:Destroy() end
end
elseif input.KeyCode == Enum.KeyCode.N then
noclip = not noclip
for _, part in pairs(character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = not noclip
end
end
end
end)
-- Drag Support
local dragging = false
local dragStart, startPos
frame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 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)
UserInputService.InputChanged:Connect(function(input)
if dragging and input.UserInputType == Enum.UserInputType.MouseMovement 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)
-- Init
updateButtonState()



so what does this do? @harytimp19
chat