-- 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()