
Key RequiredUniversal

-- pattern, then text, then tmkx ma.
local lp = game:GetService("Players").LocalPlayer
local uis = game:GetService("UserInputService")
local ts = game:GetService("TweenService")
-- 1. THE FONT CONVERTER (ᴀʙᴄᴅᴇ)
local function toAesthetic(text)
local map = {["a"]="ᴀ", ["b"]="ʙ", ["c"]="ᴄ", ["d"]="ᴅ", ["e"]="ᴇ", ["f"]="ғ", ["g"]="ɢ", ["h"]="ʜ", ["i"]="ɪ", ["j"]="ᴊ", ["k"]="ᴋ", ["l"]="ʟ", ["m"]="ᴍ", ["n"]="ɴ", ["o"]="ᴏ", ["p"]="ᴘ", ["q"]="ǫ", ["r"]="ʀ", ["s"]="s", ["t"]="ᴛ", ["u"]="ᴜ", ["v"]="ᴠ", ["w"]="ᴡ", ["x"]="x", ["y"]="ʏ", ["z"]="ᴢ"}
local res = ""
for i = 1, #text do
local c = text:sub(i,i):lower()
res = res .. (map[c] or c)
end
return res
end
-- 2. GUI CREATION
if lp.PlayerGui:FindFirstChild("SamDev_v2") then lp.PlayerGui.SamDev_v2:Destroy() end
local sg = Instance.new("ScreenGui", lp.PlayerGui)
sg.Name = "SamDev_v2"
local main = Instance.new("Frame", sg)
main.Size = UDim2.new(0, 380, 0, 280)
main.Position = UDim2.new(0.5, -190, 0.5, -140)
main.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
main.BorderSizePixel = 0
Instance.new("UICorner", main).CornerRadius = UDim.new(0, 10)
-- RAINBOW BORDER (Aesthetic)
local stroke = Instance.new("UIStroke", main)
stroke.Thickness = 3
stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
task.spawn(function()
while task.wait(0.05) do
local hue = tick() % 5 / 5
stroke.Color = Color3.fromHSV(hue, 1, 1)
end
end)
-- Top Bar (Draggable Area)
local topBar = Instance.new("Frame", main)
topBar.Size = UDim2.new(1, 0, 0, 40)
topBar.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
topBar.BorderSizePixel = 0
Instance.new("UICorner", topBar)
local title = Instance.new("TextLabel", topBar)
title.Size = UDim2.new(1, 0, 1, 0)
title.Position = UDim2.new(0, 15, 0, 0)
title.BackgroundTransparency = 1
title.Text = toAesthetic("SamDev Chat v2")
title.TextColor3 = Color3.new(1, 1, 1)
title.Font = Enum.Font.GothamBold
title.TextSize = 16
title.TextXAlignment = "Left"
-- Chat Area
local scroll = Instance.new("ScrollingFrame", main)
scroll.Size = UDim2.new(0.9, 0, 0.65, 0)
scroll.Position = UDim2.new(0.05, 0, 0.18, 0)
scroll.BackgroundTransparency = 1
scroll.CanvasSize = UDim2.new(0, 0, 0, 0)
scroll.AutomaticCanvasSize = Enum.AutomaticSize.Y
scroll.ScrollBarThickness = 2
Instance.new("UIListLayout", scroll).VerticalAlignment = "Bottom"
-- Input
local input = Instance.new("TextBox", main)
input.Size = UDim2.new(0.9, 0, 0, 40)
input.Position = UDim2.new(0.05, 0, 0.82, 0)
input.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
input.TextColor3 = Color3.new(1, 1, 1)
input.PlaceholderText = "Type message..."
input.Text = ""
Instance.new("UICorner", input)
-- 3. THE FIXED DRAGGING LOGIC
local dragging, dragInput, dragStart, startPos
local function update(input)
local delta = input.Position - dragStart
main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
topBar.InputBegan:Connect(function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = inp.Position
startPos = main.Position
inp.Changed:Connect(function()
if inp.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
uis.InputChanged:Connect(function(inp)
if dragging and (inp.UserInputType == Enum.UserInputType.MouseMovement or inp.UserInputType == Enum.UserInputType.Touch) then
update(inp)
end
end)
-- 4. MESSAGING SYSTEM
local function addMsg(user, text)
local l = Instance.new("TextLabel", scroll)
l.Size = UDim2.new(1, 0, 0, 25)
l.BackgroundTransparency = 1
l.TextColor3 = Color3.new(1, 1, 1)
l.RichText = true
l.TextXAlignment = "Left"
l.Text = "<b>[" .. toAesthetic(user) .. "]:</b> " .. text
scroll.CanvasPosition = Vector2.new(0, 99999)
end
input.FocusLost:Connect(function(enter)
if enter and input.Text ~= "" then
addMsg(lp.DisplayName, input.Text)
input.Text = ""
end
end)
-- tmkx ma.
addMsg("SYSTEM", "Draggable & Rainbow Glow Enabled.")No comments yet for this script.



