local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") -- Create ScreenGui local screenGui = Instance.new("ScreenGui") screenGui.Name = "UnicodeConverterGUI" screenGui.ResetOnSpawn = false screenGui.Parent = playerGui -- Main Frame local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 320, 0, 150) frame.Position = UDim2.new(0.5, -160, 0.35, -75) frame.AnchorPoint = Vector2.new(0.5, 0.5) frame.BackgroundColor3 = Color3.fromRGB(30,30,40) frame.BorderSizePixel = 0 frame.Active = true frame.Parent = screenGui -- Title bar (drag handle) local titleBar = Instance.new("TextLabel") titleBar.Size = UDim2.new(1,0,0,30) titleBar.Position = UDim2.new(0,0,0,0) titleBar.BackgroundColor3 = Color3.fromRGB(45,45,55) titleBar.Text = "Unicode Hex → Character" titleBar.TextColor3 = Color3.new(1,1,1) titleBar.Font = Enum.Font.GothamBold titleBar.TextSize = 18 titleBar.Parent = frame -- Hex Input local input = Instance.new("TextBox") input.Size = UDim2.new(1,-20,0,36) input.Position = UDim2.new(0,10,0,40) input.PlaceholderText = "Enter hex (e.g., 1F600)" input.BackgroundColor3 = Color3.fromRGB(60,60,75) input.TextColor3 = Color3.fromRGB(1,1,1) input.Font = Enum.Font.Gotham input.TextSize = 18 input.Parent = frame -- Convert button local convertBtn = Instance.new("TextButton") convertBtn.Size = UDim2.new(0.4,0,0,30) convertBtn.Position = UDim2.new(0.05,0,0,90) convertBtn.Text = "Convert" convertBtn.Font = Enum.Font.GothamSemibold convertBtn.TextSize = 16 convertBtn.BackgroundColor3 = Color3.fromRGB(95,95,120) convertBtn.TextColor3 = Color3.new(1,1,1) convertBtn.Parent = frame -- Result TextBox (selectable) local resultBox = Instance.new("TextBox") resultBox.Size = UDim2.new(0.55,0,0,36) resultBox.Position = UDim2.new(0.45,5,0,90) resultBox.Text = "" resultBox.PlaceholderText = "Result" resultBox.BackgroundColor3 = Color3.fromRGB(40,40,50) resultBox.TextColor3 = Color3.fromRGB(1,1,1) resultBox.Font = Enum.Font.GothamBold resultBox.TextSize = 22 resultBox.TextEditable = false -- selectable but not editable resultBox.Parent = frame -- ===== Hex → Unicode function ===== local function sanitizeHex(s) if not s then return nil end s = s:gsub("^U%+", ""):gsub("^0x", ""):gsub("%s+","") return s end local function hexToChar(hexStr) local s = sanitizeHex(hexStr) if not s or s == "" then return nil end local num = tonumber(s,16) if not num then return nil end return utf8.char(num) end -- Convert button function convertBtn.MouseButton1Click:Connect(function() local char = hexToChar(input.Text) if char then resultBox.Text = char else resultBox.Text = "Invalid hex" end end) -- Enter key also converts input.FocusLost:Connect(function(enterPressed) if enterPressed then local char = hexToChar(input.Text) if char then resultBox.Text = char else resultBox.Text = "Invalid hex" end end end) -- ===== Dragging ===== local dragging = false local dragStart = Vector2.new() local startPos = UDim2.new() titleBar.InputBegan:Connect(function(inputObj) if inputObj.UserInputType == Enum.UserInputType.MouseButton1 or inputObj.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = inputObj.Position startPos = frame.Position inputObj.Changed:Connect(function() if inputObj.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) UserInputService.InputChanged:Connect(function(inputObj) if dragging and (inputObj.UserInputType == Enum.UserInputType.MouseMovement or inputObj.UserInputType == Enum.UserInputType.Touch) then local delta = inputObj.Position - dragStart frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) -- ===== Initial example ===== input.Text = "1F600" resultBox.Text = hexToChar(input.Text) or ""