-- 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 = "[" .. toAesthetic(user) .. "]: " .. 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.")