local gui = Instance.new("ScreenGui") gui.Name = "e" .. math.random(1e9, 2e9) gui.ResetOnSpawn = false gui.Parent = gethui() or game.CoreGui local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 520, 0, 320) frame.Position = UDim2.new(0.3, 0, 0.2, 0) frame.BackgroundColor3 = Color3.fromRGB(28, 28, 28) frame.Active = true frame.Draggable = true frame.Parent = gui Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 8) local title = Instance.new("TextLabel") title.Text = "Brainfuck Converter" title.Size = UDim2.new(1, -40, 0, 30) title.Position = UDim2.new(0, 10, 0, 0) title.BackgroundTransparency = 1 title.TextColor3 = Color3.new(1,1,1) title.Font = Enum.Font.GothamBold title.TextSize = 18 title.TextXAlignment = Enum.TextXAlignment.Left title.Parent = frame local close = Instance.new("TextButton") close.Text = "X" close.Size = UDim2.new(0, 30, 0, 30) close.Position = UDim2.new(1, -30, 0, 0) close.BackgroundTransparency = 1 close.TextColor3 = Color3.fromRGB(255, 60, 60) close.Parent = frame close.MouseButton1Click:Connect(function() gui:Destroy() end) local scroll = Instance.new("ScrollingFrame") scroll.Size = UDim2.new(0.94, 0, 0.70, 0) scroll.Position = UDim2.new(0.03, 0, 0.12, 0) scroll.CanvasSize = UDim2.new(0, 0, 3, 0) scroll.ScrollBarThickness = 6 scroll.BorderSizePixel = 0 scroll.BackgroundColor3 = Color3.fromRGB(35,35,35) scroll.Parent = frame Instance.new("UICorner", scroll).CornerRadius = UDim.new(0, 6) local textbox = Instance.new("TextBox") textbox.Size = UDim2.new(1, -10, 3, 0) textbox.Position = UDim2.new(0, 5, 0, 0) textbox.MultiLine = true textbox.ClearTextOnFocus = false textbox.TextWrapped = false textbox.TextYAlignment = Enum.TextYAlignment.Top textbox.TextXAlignment = Enum.TextXAlignment.Left textbox.Font = Enum.Font.Code textbox.TextSize = 14 textbox.TextColor3 = Color3.new(1,1,1) textbox.BackgroundTransparency = 1 textbox.Text = "-- paste text or brainfuck here" textbox.Parent = scroll local convert = Instance.new("TextButton") convert.Size = UDim2.new(0, 120, 0, 30) convert.Position = UDim2.new(0.03, 0, 0.85, 0) convert.Text = "Convert" convert.Font = Enum.Font.GothamBold convert.TextSize = 12 convert.TextColor3 = Color3.new(1,1,1) convert.BackgroundColor3 = Color3.fromRGB(60,60,60) convert.Parent = frame Instance.new("UICorner", convert).CornerRadius = UDim.new(0, 5) local cMode = Instance.new("TextButton") cMode.Size = UDim2.new(0, 120, 0, 30) cMode.Position = UDim2.new(0.47, 0, 0.85, 0) cMode.Text = "Mode: To BF" cMode.Font = Enum.Font.GothamBold cMode.TextSize = 12 cMode.TextColor3 = Color3.new(1,1,1) cMode.BackgroundColor3 = Color3.fromRGB(45,45,45) cMode.Parent = frame Instance.new("UICorner", cMode).CornerRadius = UDim.new(0,5) local cMethod = Instance.new("TextButton") cMethod.Size = UDim2.new(0, 120, 0, 30) cMethod.Position = UDim2.new(0.73, 0, 0.85, 0) cMethod.Text = "Method: Delta" cMethod.Font = Enum.Font.GothamBold cMethod.TextSize = 12 cMethod.TextColor3 = Color3.new(1,1,1) cMethod.BackgroundColor3 = Color3.fromRGB(45,45,45) cMethod.Parent = frame Instance.new("UICorner", cMethod).CornerRadius = UDim.new(0,5) local Mode, Method = "TO_BF", "DELTA" cMode.MouseButton1Click:Connect(function() if Mode == "TO_BF" then Mode = "TO_TEXT" cMode.Text = "Mode: To Text" else Mode = "TO_BF" cMode.Text = "Mode: To BF" end end) cMethod.MouseButton1Click:Connect(function() if Method == "DELTA" then Method = "RESET" cMethod.Text = "Method: Reset Cell" else Method = "DELTA" cMethod.Text = "Method: Delta" end end) local function bconvert(input) if Mode == "TO_BF" then local out, cur = {}, 0 for i = 1, #input do local b = string.byte(input, i) if Method == "RESET" then out[#out+1] = "[-]" .. string.rep("+", b) .. "." else local diff = b - cur if diff > 0 then out[#out+1] = string.rep("+", diff) elseif diff < 0 then out[#out+1] = string.rep("-", -diff) end out[#out+1] = "." cur = b end end return table.concat(out) else local tape, ptr, ip, out = {}, 1, 1, {} local jump, stack = {}, {} for i = 1, #input do local c = input:sub(i,i) if c == "[" then table.insert(stack, i) elseif c == "]" then local j = table.remove(stack) jump[i], jump[j] = j, i end end while ip <= #input do local c = input:sub(ip,ip); tape[ptr] = tape[ptr] or 0 if c == ">" then ptr += 1 elseif c == "<" then ptr = math.max(1, ptr-1) elseif c == "+" then tape[ptr] = (tape[ptr]+1)%256 elseif c == "-" then tape[ptr] = (tape[ptr]-1)%256 elseif c == "." then out[#out+1] = string.char(tape[ptr]) elseif c == "[" and tape[ptr]==0 then ip = jump[ip] elseif c == "]" and tape[ptr]~=0 then ip = jump[ip] end ip += 1 end return table.concat(out) end end convert.MouseButton1Click:Connect(function() textbox.Text = bconvert(textbox.Text) end)