
Universal Script – protoshamsher v2 remake
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local playerGui = player:FindFirstChildOfClass("PlayerGui") or player:WaitForChild("PlayerGui")
local old = playerGui:FindFirstChild("ProtoSmasher")
if old then old:Destroy() end
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "ProtoSmasher"
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
pcall(function() ScreenGui.Parent = game:GetService("CoreGui") end)
if not ScreenGui.Parent then ScreenGui.Parent = playerGui end
local themes = {
Red = { bg = Color3.fromRGB(25, 10, 10), border = Color3.fromRGB(200, 40, 40), accent = Color3.fromRGB(220, 50, 50) },
Black = { bg = Color3.fromRGB(18, 18, 18), border = Color3.fromRGB(80, 80, 80), accent = Color3.fromRGB(120, 120, 120) },
White = { bg = Color3.fromRGB(40, 40, 40), border = Color3.fromRGB(220, 220, 220), accent = Color3.fromRGB(255, 255, 255) },
Blue = { bg = Color3.fromRGB(10, 15, 30), border = Color3.fromRGB(50, 100, 200), accent = Color3.fromRGB(70, 130, 230) },
}
local currentTheme = "Black"
local autoExecute = false
local rainbowConn = nil
local Main = Instance.new("Frame")
Main.Name = "Main"
Main.Parent = ScreenGui
Main.BackgroundColor3 = themes.Black.bg
Main.BorderColor3 = themes.Black.border
Main.BorderSizePixel = 2
Main.Position = UDim2.new(0.5, -225, 0.5, -200)
Main.Size = UDim2.new(0, 450, 0, 400)
Main.Active = true
Main.Draggable = true
Main.ClipsDescendants = true
local TitleBar = Instance.new("Frame")
TitleBar.Parent = Main
TitleBar.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
TitleBar.BorderSizePixel = 0
TitleBar.Size = UDim2.new(1, 0, 0, 26)
local Title = Instance.new("TextLabel")
Title.Parent = TitleBar
Title.BackgroundTransparency = 1
Title.Position = UDim2.new(0, 10, 0, 0)
Title.Size = UDim2.new(0, 180, 1, 0)
Title.Font = Enum.Font.SourceSans
Title.Text = "ProtoSmasher v2"
Title.TextColor3 = Color3.fromRGB(220, 220, 220)
Title.TextSize = 14
Title.TextXAlignment = Enum.TextXAlignment.Left
local MinBtn = Instance.new("TextButton")
MinBtn.Parent = TitleBar
MinBtn.BackgroundTransparency = 1
MinBtn.Position = UDim2.new(1, -50, 0, 0)
MinBtn.Size = UDim2.new(0, 25, 1, 0)
MinBtn.Font = Enum.Font.SourceSans
MinBtn.Text = "—"
MinBtn.TextColor3 = Color3.fromRGB(200, 200, 200)
MinBtn.TextSize = 14
local CloseBtn = Instance.new("TextButton")
CloseBtn.Parent = TitleBar
CloseBtn.BackgroundTransparency = 1
CloseBtn.Position = UDim2.new(1, -25, 0, 0)
CloseBtn.Size = UDim2.new(0, 25, 1, 0)
CloseBtn.Font = Enum.Font.SourceSans
CloseBtn.Text = "×"
CloseBtn.TextColor3 = Color3.fromRGB(200, 200, 200)
CloseBtn.TextSize = 16
local Editor = Instance.new("Frame")
Editor.Parent = Main
Editor.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
Editor.BorderSizePixel = 0
Editor.Position = UDim2.new(0, 4, 0, 30)
Editor.Size = UDim2.new(1, -8, 0, 245)
local LineNum = Instance.new("TextLabel")
LineNum.Parent = Editor
LineNum.BackgroundTransparency = 1
LineNum.Position = UDim2.new(0, 6, 0, 4)
LineNum.Size = UDim2.new(0, 16, 1, -8)
LineNum.Font = Enum.Font.Code
LineNum.Text = "1"
LineNum.TextColor3 = Color3.fromRGB(100, 100, 100)
LineNum.TextSize = 13
LineNum.TextYAlignment = Enum.TextYAlignment.Top
local TextBox = Instance.new("TextBox")
TextBox.Parent = Editor
TextBox.BackgroundTransparency = 1
TextBox.Position = UDim2.new(0, 26, 0, 4)
TextBox.Size = UDim2.new(1, -30, 1, -8)
TextBox.ClearTextOnFocus = false
TextBox.Font = Enum.Font.Code
TextBox.MultiLine = true
TextBox.Text = ""
TextBox.TextColor3 = Color3.fromRGB(220, 220, 220)
TextBox.TextSize = 13
TextBox.TextXAlignment = Enum.TextXAlignment.Left
TextBox.TextYAlignment = Enum.TextYAlignment.Top
TextBox.TextWrapped = false
TextBox:GetPropertyChangedSignal("Text"):Connect(function()
local lines = 1
for _ in TextBox.Text:gmatch("\n") do lines = lines + 1 end
local s = ""
for i = 1, math.max(lines, 1) do s = s .. i .. "\n" end
LineNum.Text = s
end)
local BtnBar = Instance.new("Frame")
BtnBar.Parent = Main
BtnBar.BackgroundTransparency = 1
BtnBar.Position = UDim2.new(0, 4, 0, 283)
BtnBar.Size = UDim2.new(1, -8, 0, 36)
local function makeBtn(name, x)
local b = Instance.new("TextButton")
b.Parent = BtnBar
b.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
b.BorderColor3 = Color3.fromRGB(200, 200, 200)
b.BorderSizePixel = 1
b.Position = UDim2.new(0, x, 0, 2)
b.Size = UDim2.new(0, 100, 0, 32)
b.Font = Enum.Font.SourceSansBold
b.Text = name
b.TextColor3 = Color3.fromRGB(230, 230, 230)
b.TextSize = 14
return b
end
local ExecBtn = makeBtn("EXECUTE", 8)
local OpenBtn = makeBtn("OPEN", 118)
local ClearBtn = makeBtn("CLEAR", 228)
local InjectBtn = makeBtn("INJECT", 338)
local BottomArea = Instance.new("Frame")
BottomArea.Parent = Main
BottomArea.BackgroundColor3 = Color3.fromRGB(55, 55, 55)
BottomArea.BorderSizePixel = 0
BottomArea.Position = UDim2.new(0, 0, 0, 328)
BottomArea.Size = UDim2.new(1, 0, 0, 72)
local ThemeBtn = Instance.new("TextButton")
ThemeBtn.Parent = BottomArea
ThemeBtn.BackgroundColor3 = Color3.fromRGB(240, 240, 240)
ThemeBtn.BorderColor3 = Color3.fromRGB(100, 100, 100)
ThemeBtn.BorderSizePixel = 1
ThemeBtn.Position = UDim2.new(0, 10, 1, -28)
ThemeBtn.Size = UDim2.new(0, 200, 0, 22)
ThemeBtn.Font = Enum.Font.SourceSans
ThemeBtn.Text = " Theme: Black ▼"
ThemeBtn.TextColor3 = Color3.fromRGB(30, 30, 30)
ThemeBtn.TextSize = 13
ThemeBtn.TextXAlignment = Enum.TextXAlignment.Left
local ColorMenu = Instance.new("Frame")
ColorMenu.Parent = Main
ColorMenu.BackgroundColor3 = Color3.fromRGB(240, 240, 240)
ColorMenu.BorderColor3 = Color3.fromRGB(100, 100, 100)
ColorMenu.BorderSizePixel = 1
ColorMenu.Position = UDim2.new(0, 10, 1, -150)
ColorMenu.Size = UDim2.new(0, 200, 0, 120)
ColorMenu.Visible = false
ColorMenu.ZIndex = 10
local function colorOption(name, y)
local b = Instance.new("TextButton")
b.Parent = ColorMenu
b.BackgroundColor3 = Color3.fromRGB(240, 240, 240)
b.BorderSizePixel = 0
b.Position = UDim2.new(0, 0, 0, y)
b.Size = UDim2.new(1, 0, 0, 24)
b.Font = Enum.Font.SourceSans
b.Text = " " .. name
b.TextColor3 = Color3.fromRGB(30, 30, 30)
b.TextSize = 13
b.TextXAlignment = Enum.TextXAlignment.Left
b.ZIndex = 11
return b
end
local RedOpt = colorOption("Red", 0)
local BlackOpt = colorOption("Black", 24)
local WhiteOpt = colorOption("White", 48)
local BlueOpt = colorOption("Blue", 72)
local RainbowOpt = colorOption("Rainbow", 96)
local SettingsBtn = Instance.new("TextButton")
SettingsBtn.Parent = BottomArea
SettingsBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
SettingsBtn.BorderColor3 = Color3.fromRGB(150, 150, 150)
SettingsBtn.BorderSizePixel = 1
SettingsBtn.Position = UDim2.new(0, 230, 1, -30)
SettingsBtn.Size = UDim2.new(0, 100, 0, 24)
SettingsBtn.Font = Enum.Font.SourceSansBold
SettingsBtn.Text = "Settings"
SettingsBtn.TextColor3 = Color3.fromRGB(220, 220, 220)
SettingsBtn.TextSize = 13
local function stopRainbow()
if rainbowConn then
rainbowConn:Disconnect()
rainbowConn = nil
end
end
local function applyTheme(name)
stopRainbow()
if name == "Rainbow" then
currentTheme = "Rainbow"
ThemeBtn.Text = " Theme: Rainbow ▼"
ColorMenu.Visible = false
local hue = 0
rainbowConn = RunService.RenderStepped:Connect(function(dt)
hue = (hue + dt * 0.15) % 1
local c = Color3.fromHSV(hue, 0.7, 0.9)
Main.BorderColor3 = c
for _, btn in ipairs({ExecBtn, OpenBtn, ClearBtn, InjectBtn}) do
btn.BorderColor3 = c
end
end)
print("[ProtoSmasher]: Theme → Rainbow")
return
end
local t = themes[name]
if not t then return end
currentTheme = name
Main.BackgroundColor3 = t.bg
Main.BorderColor3 = t.border
TitleBar.BackgroundColor3 = Color3.fromRGB(
math.clamp(t.bg.R * 255 + 12, 0, 255) / 255,
math.clamp(t.bg.G * 255 + 12, 0, 255) / 255,
math.clamp(t.bg.B * 255 + 12, 0, 255) / 255
)
for _, btn in ipairs({ExecBtn, OpenBtn, ClearBtn, InjectBtn}) do
btn.BorderColor3 = t.accent
end
ThemeBtn.Text = " Theme: " .. name .. " ▼"
ColorMenu.Visible = false
print("[ProtoSmasher]: Theme → " .. name)
end
ThemeBtn.MouseButton1Click:Connect(function()
ColorMenu.Visible = not ColorMenu.Visible
end)
RedOpt.MouseButton1Click:Connect(function() applyTheme("Red") end)
BlackOpt.MouseButton1Click:Connect(function() applyTheme("Black") end)
WhiteOpt.MouseButton1Click:Connect(function() applyTheme("White") end)
BlueOpt.MouseButton1Click:Connect(function() applyTheme("Blue") end)
RainbowOpt.MouseButton1Click:Connect(function() applyTheme("Rainbow") end)
local function runCode()
local code = TextBox.Text
if code == "" or code:match("^%s*$") then return end
local chunk, err = loadstring(code)
if chunk then
local ok, msg = pcall(chunk)
if not ok then warn("[ProtoSmasher]: " .. tostring(msg)) end
else
warn("[ProtoSmasher]: " .. tostring(err))
end
end
ExecBtn.MouseButton1Click:Connect(runCode)
InjectBtn.MouseButton1Click:Connect(runCode)
ClearBtn.MouseButton1Click:Connect(function() TextBox.Text = "" end)
OpenBtn.MouseButton1Click:Connect(function() print("[ProtoSmasher]: Open") end)
-- Settings (tylko Auto Execute)
local settingsWin = nil
local function closeSettings()
if settingsWin then settingsWin:Destroy() settingsWin = nil end
end
local function openSettings()
if settingsWin then closeSettings() return end
local win = Instance.new("Frame")
win.Name = "SettingsWin"
win.Parent = ScreenGui
win.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
win.BorderColor3 = Color3.fromRGB(100, 100, 100)
win.BorderSizePixel = 2
win.Position = UDim2.new(0.5, -130, 0.5, -60)
win.Size = UDim2.new(0, 260, 0, 100)
win.Active = true
win.Draggable = true
win.ZIndex = 30
settingsWin = win
local stBar = Instance.new("Frame")
stBar.Parent = win
stBar.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
stBar.BorderSizePixel = 0
stBar.Size = UDim2.new(1, 0, 0, 24)
stBar.ZIndex = 31
local stTitle = Instance.new("TextLabel")
stTitle.Parent = stBar
stTitle.BackgroundTransparency = 1
stTitle.Position = UDim2.new(0, 8, 0, 0)
stTitle.Size = UDim2.new(1, -32, 1, 0)
stTitle.Font = Enum.Font.SourceSans
stTitle.Text = "Settings"
stTitle.TextColor3 = Color3.fromRGB(220, 220, 220)
stTitle.TextSize = 13
stTitle.TextXAlignment = Enum.TextXAlignment.Left
stTitle.ZIndex = 32
local stClose = Instance.new("TextButton")
stClose.Parent = stBar
stClose.BackgroundTransparency = 1
stClose.Position = UDim2.new(1, -24, 0, 0)
stClose.Size = UDim2.new(0, 24, 1, 0)
stClose.Font = Enum.Font.SourceSans
stClose.Text = "×"
stClose.TextColor3 = Color3.fromRGB(200, 200, 200)
stClose.TextSize = 14
stClose.ZIndex = 32
stClose.MouseButton1Click:Connect(closeSettings)
local autoRow = Instance.new("Frame")
autoRow.Parent = win
autoRow.BackgroundColor3 = Color3.fromRGB(40, 40, 45)
autoRow.BorderSizePixel = 0
autoRow.Position = UDim2.new(0, 10, 0, 36)
autoRow.Size = UDim2.new(1, -20, 0, 36)
autoRow.ZIndex = 31
local autoLbl = Instance.new("TextLabel")
autoLbl.Parent = autoRow
autoLbl.BackgroundTransparency = 1
autoLbl.Position = UDim2.new(0, 10, 0, 0)
autoLbl.Size = UDim2.new(1, -50, 1, 0)
autoLbl.Font = Enum.Font.SourceSans
autoLbl.Text = "Auto Execute"
autoLbl.TextColor3 = Color3.fromRGB(220, 220, 220)
autoLbl.TextSize = 13
autoLbl.TextXAlignment = Enum.TextXAlignment.Left
autoLbl.ZIndex = 32
local autoToggle = Instance.new("TextButton")
autoToggle.Parent = autoRow
autoToggle.Size = UDim2.new(0, 28, 0, 28)
autoToggle.Position = UDim2.new(1, -34, 0.5, -14)
autoToggle.BackgroundColor3 = autoExecute and Color3.fromRGB(40, 180, 60) or Color3.fromRGB(200, 40, 40)
autoToggle.BorderSizePixel = 0
autoToggle.Text = ""
autoToggle.ZIndex = 32
autoToggle.MouseButton1Click:Connect(function()
autoExecute = not autoExecute
if autoExecute then
autoToggle.BackgroundColor3 = Color3.fromRGB(40, 180, 60)
runCode()
print("[ProtoSmasher]: Auto Execute ON")
else
autoToggle.BackgroundColor3 = Color3.fromRGB(200, 40, 40)
print("[ProtoSmasher]: Auto Execute OFF")
end
end)
end
SettingsBtn.MouseButton1Click:Connect(openSettings)
MinBtn.MouseButton1Click:Connect(function()
Main.Visible = not Main.Visible
end)
CloseBtn.MouseButton1Click:Connect(function()
stopRainbow()
closeSettings()
ScreenGui:Destroy()
end)
print("[ProtoSmasher v2]: Loaded")How to Execute Universal Script – protoshamsher v2 remake
Step 1: Copy Code: Click the Copy Code button in the viewer above to grab the clean Lua loadstring.
Step 2: Launch Executor: Open a compatible, unpatched executor. If you need one, check our Roblox Executors Directory.
Step 3: Join Experience: Launch Roblox and join Universal Script.
Step 4: Attach & Run: Attach/inject your executor into the Roblox process, paste the code into the script tab, and press Execute.
Created By
View Author ProfileFeatures & Information
Script Changelog (1)
Community Comments (0)
No comments yet for this script.
Frequently Asked Questions
How do I execute Universal Script – protoshamsher v2 remake in Roblox?
To run Universal Script – protoshamsher v2 remake, copy the Lua loadstring from the code viewer above, launch Roblox and join Universal Script, attach a working executor (such as Potassium, Solara, or Delta from our Executors directory), paste the code into your executor console, and click Execute.
Is Universal Script – protoshamsher v2 remake keyless or does it require an access key?
Universal Script – protoshamsher v2 remake requires an access key. You can retrieve the official key directly using the Get Script Key link provided above.
Is Universal Script – protoshamsher v2 remake currently safe and working?
This script is active and operational. Always test scripts using a secondary (alt) Roblox account to safeguard your main profile against anti-cheat bans.


![Ez Hub [Open Source] [150+ games] - Verified script for Universal Script](https://media.kocakz.me/b74a9ac15370ba766b2fa9531f17c9dad2c0befb2b951693ae723e4c7d2c3fb6.webp)

![[KEYLESS] Moondiety Script | 20+ supported Games - Verified script for Universal Script](https://media.kocakz.me/6834c33a36c9fbe66afae4c6754c2b80386ce636b2f972464a95866f4b6a42eb.webp)

