chat system
Key RequiredUniversal

chat system

Universal Scriptharytimp19harytimp19 11.1K views 37 executesUpdated Jun 20, 2025
Unrated
00
Lua Script•269 lines (7642 chars)
-- 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()

Features & Information

it has chat and coolkidd is key

Community Comments (2)

abuck3014abuck3014Jun 21, 2025(edited)

so what does this do? @harytimp19

harytimp19harytimp19Jun 21, 2025

chat

More Scripts for Universal Scripts