Lol0
Key RequiredUniversal

Lol0

Universal ScriptAbhisheksptAbhishekspt 176 views 43 executesUpdated Jan 14, 2026
Unrated
00
Lua Script•140 lines (4278 chars)
-- LOCALSCRIPT: Fully Local Roblox-Style Chat
local Players = game:GetService("Players")
local player = Players.LocalPlayer

-- ===== CREATE SCREEN GUI =====
local gui = Instance.new("ScreenGui")
gui.Name = "LocalChatGUI"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")

-- ===== CHAT BUTTON (BOTTOM-RIGHT) =====
local chatButton = Instance.new("TextButton")
chatButton.Size = UDim2.new(0,50,0,50)
chatButton.Position = UDim2.new(1,-60,1,-60)
chatButton.AnchorPoint = Vector2.new(0,0)
chatButton.BackgroundColor3 = Color3.fromRGB(40,40,40)
chatButton.TextColor3 = Color3.new(1,1,1)
chatButton.Text = "Chat"
chatButton.TextScaled = true
chatButton.Font = Enum.Font.SourceSansBold
chatButton.BorderSizePixel = 0
chatButton.Parent = gui

-- ===== CHAT FRAME =====
local chatFrame = Instance.new("Frame")
chatFrame.Size = UDim2.new(0,300,0,200)
chatFrame.Position = UDim2.new(1,-310,1,-260)
chatFrame.BackgroundColor3 = Color3.fromRGB(20,20,20)
chatFrame.BorderSizePixel = 0
chatFrame.Visible = false
chatFrame.Parent = gui

-- Scrolling messages
local scrolling = Instance.new("ScrollingFrame")
scrolling.Size = UDim2.new(1,0,1,-30)
scrolling.Position = UDim2.new(0,0,0,0)
scrolling.BackgroundTransparency = 1
scrolling.BorderSizePixel = 0
scrolling.CanvasSize = UDim2.new(0,0,0,0)
scrolling.ScrollBarThickness = 6
scrolling.Parent = chatFrame

local layout = Instance.new("UIListLayout")
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Padding = UDim.new(0,4)
layout.Parent = scrolling

-- Input box
local box = Instance.new("TextBox")
box.Size = UDim2.new(0,240,0,22)
box.Position = UDim2.new(0,5,1,-25)
box.PlaceholderText = "Type a message..."
box.BackgroundColor3 = Color3.fromRGB(25,25,25)
box.TextColor3 = Color3.new(1,1,1)
box.BorderSizePixel = 0
box.TextSize = 14
box.Parent = chatFrame

-- Send button
local send = Instance.new("TextButton")
send.Size = UDim2.new(0,50,0,22)
send.Position = UDim2.new(0,250,1,-25)
send.Text = "Send"
send.BackgroundColor3 = Color3.fromRGB(40,40,40)
send.TextColor3 = Color3.new(1,1,1)
send.BorderSizePixel = 0
send.TextSize = 14
send.Parent = chatFrame

-- ===== TOGGLE CHAT =====
chatButton.MouseButton1Click:Connect(function()
    chatFrame.Visible = not chatFrame.Visible
    if chatFrame.Visible then
        box:CaptureFocus()
    end
end)

-- ===== FUNCTION TO DISPLAY MESSAGE =====
local function displayMessage(senderName, text)
    -- Add message to GUI
    local msg = Instance.new("TextLabel")
    msg.Size = UDim2.new(1,-10,0,20)
    msg.BackgroundTransparency = 0.5
    msg.BackgroundColor3 = Color3.fromRGB(0,0,0)
    msg.TextColor3 = Color3.fromRGB(255,255,255)
    msg.TextWrapped = true
    msg.TextScaled = true
    msg.Font = Enum.Font.SourceSansBold
    msg.Text = senderName .. ": " .. text
    msg.Parent = scrolling
    scrolling.CanvasSize = UDim2.new(0,0,0,layout.AbsoluteContentSize.Y)

    -- Show message above your head
    if player.Character and player.Character:FindFirstChild("Head") then
        local head = player.Character.Head
        if head:FindFirstChild("LocalChatMsg") then
            head.LocalChatMsg:Destroy()
        end

        local bill = Instance.new("BillboardGui")
        bill.Name = "LocalChatMsg"
        bill.Size = UDim2.new(0,220,0,40)
        bill.StudsOffset = Vector3.new(0,2.5,0)
        bill.AlwaysOnTop = true
        bill.Parent = head

        local label = Instance.new("TextLabel")
        label.Size = UDim2.new(1,0,1,0)
        label.BackgroundTransparency = 0.5
        label.BackgroundColor3 = Color3.fromRGB(0,0,0)
        label.TextColor3 = Color3.fromRGB(255,255,255)
        label.TextScaled = true
        label.Font = Enum.Font.SourceSansBold
        label.TextWrapped = true
        label.Text = senderName .. ": " .. text
        label.Parent = bill

        -- Remove after 30 seconds
        task.delay(30, function()
            if bill then bill:Destroy() end
        end)
    end
end

-- ===== SEND MESSAGE =====
local function sendMessage()
    if box.Text ~= "" then
        displayMessage(player.Name, box.Text)
        box.Text = ""
    end
end

send.MouseButton1Click:Connect(sendMessage)
box.FocusLost:Connect(function(enter)
    if enter then
        if enter then
            sendMessage()
        end
    end
end)

Features & Information

Mq

Community Comments (1)

arguarguJan 14, 2026

ai slop

More Scripts for Universal Scripts