
Key Required VerifiedUniversal
--[[
WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
-- made by aedynjames17 on scriptblox
-- feel free to modify the script or contribute to it
-- new gui coming soon
local Services = {
Players = game:GetService("Players"),
ReplicatedStorage = game:GetService("ReplicatedStorage"),
VirtualInputManager = game:GetService("VirtualInputManager"),
UserInputService = game:GetService("UserInputService"),
TweenService = game:GetService("TweenService"),
RunService = game:GetService("RunService"),
CoreGui = game:GetService("CoreGui")
}
local LocalPlayer = Services.Players.LocalPlayer
pcall(function()
loadstring(game:HttpGet("https://raw.githubusercontent.com/MarsQQ/Unpatchabomb/master/unpatchabomb_english_words", true))()
end)
local WordList = {}
pcall(function()
WordList = loadstring(game:HttpGet("https://raw.githubusercontent.com/jjengu/scripts/refs/heads/main/wordbomb/words.lua"))() or {}
end)
local WordList_Two = {}
pcall(function()
WordList_Two = loadstring(game:HttpGet("https://raw.githubusercontent.com/jjengu/scripts/refs/heads/main/wordbomb/words_two.lua"))() or {}
end)
local WordList_Three = {
"pseudopseudohypoparathyroidism", "floccinaucinihilipilification",
"antidisestablishmentarianism", "supercalifragilisticexpialidocious",
"hexakosioihexekontahexaphobia", "dichlorodiphenyltrichloroethane",
"electroencephalographically", "xenotransplantations",
"counterdemonstrations", "characteristically",
"unconstitutionality", "intercontinental",
"phenomenological", "oversimplification",
"disenfranchisement", "incompatibilities",
"thermodynamically", "magnetohydrodynamics",
"uncharacteristically", "electroencephalogram",
"counterrevolutionary", "internationalization",
"counterproductive", "environmentalists",
"telecommunications", "immunohistochemistry",
"hypercholesterolemia", "incomprehensibilities",
"deinstitutionalization", "psychopharmacological",
"reconceptualizations", "reindustrialization",
"spectroscopically", "standardizations",
"vulnerabilities", "westernization", "xenotransplantation",
"sphenopalatineganglioneuralgia", "duos", "duo",
"immunochemesties", "army", "haha", "hah",
}
local MegaList = {}
local function merge(tbl)
if type(tbl) ~= "table" then return end
for _, v in pairs(tbl) do
if type(v) == "string" then MegaList[#MegaList + 1] = v end
end
end
if type(ENGLISH_WORDS) == "table" then merge(ENGLISH_WORDS) end
merge(WordList)
merge(WordList_Two)
merge(WordList_Three)
local seen = {}
local UniqueMegaList = {}
for _, word in ipairs(MegaList) do
local lower = string.lower(word)
if not seen[lower] then
seen[lower] = true
UniqueMegaList[#UniqueMegaList + 1] = word
end
end
local FinalWordList = UniqueMegaList
local TypoNeighbours = {
a="s", b="v", c="v", d="f", e="w", f="d", g="h", h="j",
i="o", j="h", k="l", l="k", m="n", n="m", o="i", p="o",
q="w", r="t", s="a", t="r", u="y", v="c", w="e", x="z",
y="u", z="x",
}
local Games = Services.ReplicatedStorage:WaitForChild("Network", 10)
if Games then Games = Games:WaitForChild("Games", 10) end
local GameID = "-1"
local UsedWords = {}
local Typing = false
local TypingActive = false
local LastWord = ""
local Settings = {
WordList = 0,
AutoType = false,
AutoJoin = false,
WPM = 120,
WordTypeDelay = 0.3,
HumaniseWPM = true,
ReactionTime = 0.35,
TypoChance = 0.04,
BurstMin = 3,
BurstMax = 7,
MinLen = 1,
MaxLen = 99
}
local burstCounter = 0
local burstTarget = math.random(3, 7)
local function GetLetterDelay()
local base = 60 / (Settings.WPM * 5)
if Settings.HumaniseWPM then
local roll = math.random()
if roll < 0.15 then
base = base * (0.35 + math.random() * 0.25)
elseif roll < 0.80 then
base = base * (0.80 + math.random() * 0.40)
else
base = base * (1.20 + math.random() * 0.60)
end
burstCounter = burstCounter + 1
if burstCounter >= burstTarget then
burstCounter = 0
burstTarget = math.random(Settings.BurstMin, Settings.BurstMax)
base = base + (0.04 + math.random() * 0.08)
end
end
return math.max(base, 0.005)
end
local alreadyUsed = {}
local function tableItemExists(array, val)
for _, v in pairs(array) do if v == val then return true end end
return false
end
local function findWord(str)
local best, bestLen = nil, 0
local lowerStr = string.lower(str)
for _, v in ipairs(FinalWordList) do
if string.find(string.lower(v), lowerStr, 1, true) and not tableItemExists(alreadyUsed, v) then
if #v >= Settings.MinLen and #v <= Settings.MaxLen and #v > bestLen then
best = v
bestLen = #v
end
end
end
if best then table.insert(alreadyUsed, best) end
return best
end
local function FindWordAuto(l)
if not l or l == "" then return nil end
local lowerL = string.lower(l)
local best, bestLen = nil, 0
for _, v in ipairs(FinalWordList) do
local lv = string.lower(v)
if string.find(lv, lowerL, 1, true)
and not table.find(UsedWords, string.upper(v))
and string.upper(v) ~= LastWord
and #v >= Settings.MinLen
and #v <= Settings.MaxLen
and #v > bestLen
then
best = v
bestLen = #v
end
end
if best then
table.insert(UsedWords, string.upper(best))
return string.upper(best)
end
return nil
end
local function GetTurn()
local s, r = pcall(function()
for _, v in pairs(getgc()) do
if type(v) == "function" and debug.getinfo(v).name == "updateInfoFrame" then
for __, vv in ipairs(debug.getupvalues(v)) do
if type(vv) == "table" and vv.PlayerID ~= nil then return vv.PlayerID end
end
end
end
end)
if s and r then return r end
return nil
end
local function GetLetters()
local s, r = pcall(function()
for _, v in pairs(getgc()) do
if type(v) == "function" and debug.getinfo(v).name == "updateInfoFrame" then
for __, vv in pairs(debug.getupvalues(v)) do
if type(vv) == "table" and vv.Prompt ~= nil then return vv.Prompt end
end
end
end
end)
if s and r then return r end
local PlayerGui = LocalPlayer:FindFirstChild("PlayerGui")
if PlayerGui then
local PromptLbl = PlayerGui:FindFirstChild("PromptLabel", true)
if PromptLbl then return PromptLbl.Text end
end
return ""
end
local function SimulateKey(character)
local keyCode
if character == "\n" or character == "\r" then
keyCode = Enum.KeyCode.Return
else
pcall(function() keyCode = Enum.KeyCode[string.upper(character)] end)
end
if keyCode then
Services.VirtualInputManager:SendKeyEvent(true, keyCode, false, game)
task.wait(0.01)
Services.VirtualInputManager:SendKeyEvent(false, keyCode, false, game)
end
end
local function SimulateBackspace()
Services.VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.Backspace, false, game)
task.wait(0.01)
Services.VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.Backspace, false, game)
end
if Services.CoreGui:FindFirstChild("Unpatchabomb") then
Services.CoreGui.Unpatchabomb:Destroy()
end
local Unpatchabomb = Instance.new("ScreenGui")
Unpatchabomb.Name = "Unpatchabomb"
Unpatchabomb.Parent = Services.CoreGui
Unpatchabomb.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
Unpatchabomb.ResetOnSpawn = false
local OuterFrame = Instance.new("Frame")
OuterFrame.Name = "OuterFrame"
OuterFrame.Parent = Unpatchabomb
OuterFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
OuterFrame.BorderSizePixel = 0
OuterFrame.Position = UDim2.new(0.5, -160, 0.5, -240)
OuterFrame.Size = UDim2.new(0, 320, 0, 0)
OuterFrame.ClipsDescendants = true
OuterFrame.BackgroundTransparency = 1
Instance.new("UICorner", OuterFrame).CornerRadius = UDim.new(0, 8)
local TopFrame = Instance.new("Frame")
TopFrame.Parent = OuterFrame
TopFrame.BackgroundColor3 = Color3.fromRGB(12, 12, 12)
TopFrame.BorderSizePixel = 0
TopFrame.Size = UDim2.new(1, 0, 0, 28)
TopFrame.BackgroundTransparency = 1
Instance.new("UICorner", TopFrame).CornerRadius = UDim.new(0, 8)
local T1 = Instance.new("TextLabel")
T1.Parent = TopFrame
T1.BackgroundTransparency = 1
T1.Size = UDim2.new(0.5, 0, 1, 0)
T1.Position = UDim2.new(0.04, 0, 0, 0)
T1.Font = Enum.Font.GothamBold
T1.Text = "UnpatchaBomb β‘ 4th of July! π"
T1.TextColor3 = Color3.fromRGB(255, 255, 255)
T1.TextSize = 14
T1.TextXAlignment = Enum.TextXAlignment.Left
local T2 = Instance.new("TextLabel")
T2.Parent = TopFrame
T2.BackgroundTransparency = 1
T2.Size = UDim2.new(0.4, 0, 1, 0)
T2.Position = UDim2.new(0.34, 0, 0, 0)
T2.Font = Enum.Font.Gotham
T2.TextColor3 = Color3.fromRGB(200, 200, 200)
T2.TextSize = 14
T2.TextXAlignment = Enum.TextXAlignment.Left
local MinimizeButton = Instance.new("TextButton")
MinimizeButton.Parent = TopFrame
MinimizeButton.BackgroundTransparency = 1
MinimizeButton.Position = UDim2.new(1, -28, 0, 0)
MinimizeButton.Size = UDim2.new(0, 28, 1, 0)
MinimizeButton.Font = Enum.Font.GothamBold
MinimizeButton.Text = "β"
MinimizeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
MinimizeButton.TextSize = 18
local IntroFrame = Instance.new("Frame")
IntroFrame.Parent = OuterFrame
IntroFrame.BackgroundColor3 = Color3.fromRGB(22, 22, 22)
IntroFrame.BorderSizePixel = 0
IntroFrame.Position = UDim2.new(0, 0, 0, 28)
IntroFrame.Size = UDim2.new(1, 0, 1, -28)
IntroFrame.ZIndex = 5
local function MakeIntroLabel(posY, sizeY, text, font)
local l = Instance.new("TextLabel")
l.Parent = IntroFrame
l.BackgroundTransparency = 1
l.Position = UDim2.new(0, 0, posY, 0)
l.Size = UDim2.new(1, 0, sizeY, 0)
l.Font = font or Enum.Font.Gotham
l.Text = text
l.TextColor3 = Color3.fromRGB(255, 255, 255)
l.TextScaled = true
l.ZIndex = 5
return l
end
MakeIntroLabel(0.38, 0.15, "UNPATCHABOMB", Enum.Font.GothamBold)
MakeIntroLabel(0.54, 0.08, "PRO EDITION")
local LoadingLabel = MakeIntroLabel(0.76, 0.08, "Loading...")
task.spawn(function()
while LoadingLabel and LoadingLabel.Parent do
LoadingLabel.Text = "Loading." ; task.wait(0.15)
LoadingLabel.Text = "Loading.." ; task.wait(0.15)
LoadingLabel.Text = "Loading..."; task.wait(0.15)
end
end)
local MainFrame = Instance.new("Frame")
MainFrame.Parent = OuterFrame
MainFrame.BackgroundColor3 = Color3.fromRGB(22, 22, 22)
MainFrame.BorderSizePixel = 0
MainFrame.Position = UDim2.new(0, 0, 0, 28)
MainFrame.Size = UDim2.new(1, 0, 1, -28)
MainFrame.ClipsDescendants = true
MainFrame.BackgroundTransparency = 1
local PatrioticGradient = Instance.new("UIGradient")
PatrioticGradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(180, 20, 40)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(240, 240, 240)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(20, 60, 160))
})
PatrioticGradient.Rotation = 90
PatrioticGradient.Enabled = false
PatrioticGradient.Parent = OuterFrame
local StarOverlay = Instance.new("ImageLabel")
StarOverlay.Parent = OuterFrame
StarOverlay.BackgroundTransparency = 1
StarOverlay.Image = "rbxassetid://60768979"
StarOverlay.ImageColor3 = Color3.fromRGB(255, 255, 255)
StarOverlay.ImageTransparency = 0.4
StarOverlay.ScaleType = Enum.ScaleType.Tile
StarOverlay.TileSize = UDim2.new(0, 64, 0, 64)
StarOverlay.Size = UDim2.new(1, 0, 1, 0)
StarOverlay.Position = UDim2.new(0, 0, 0, 0)
StarOverlay.ZIndex = 0
StarOverlay.Visible = false
local FireworkOverlay = Instance.new("ImageLabel")
FireworkOverlay.Parent = OuterFrame
FireworkOverlay.BackgroundTransparency = 1
FireworkOverlay.Image = "rbxassetid://5028857084"
FireworkOverlay.ImageColor3 = Color3.fromRGB(255, 255, 255)
FireworkOverlay.ImageTransparency = 0.7
FireworkOverlay.Size = UDim2.new(1.2, 0, 1.2, 0)
FireworkOverlay.Position = UDim2.new(-0.1, 0, -0.1, 0)
FireworkOverlay.ZIndex = 1
FireworkOverlay.Visible = false
Services.TweenService:Create(
OuterFrame,
TweenInfo.new(0.6, Enum.EasingStyle.Back, Enum.EasingDirection.Out),
{Size = UDim2.new(0, 320, 0, 480),
Position = UDim2.new(0.5, -160, 0.5, -240),
BackgroundTransparency = 0}
):Play()
task.spawn(function()
for i = 1, 10 do
MainFrame.BackgroundTransparency = 1 - i/10
TopFrame.BackgroundTransparency = 1 - i/10
task.wait(0.03)
end
end)
local function MakeLabel(parent, posY, sizeY, text, font)
local l = Instance.new("TextLabel")
l.Parent = parent
l.BackgroundTransparency = 1
l.Position = UDim2.new(0.02, 0, posY, 0)
l.Size = UDim2.new(0.96, 0, sizeY, 0)
l.Font = font or Enum.Font.Gotham
l.Text = text
l.TextColor3 = Color3.fromRGB(255, 255, 255)
l.TextScaled = true
return l
end
local function MakeButton(parent, posY, sizeY, text, color)
local b = Instance.new("TextButton")
b.Parent = parent
b.BackgroundColor3 = color or Color3.fromRGB(35, 35, 35)
b.BorderSizePixel = 0
b.Position = UDim2.new(0.02, 0, posY, 0)
b.Size = UDim2.new(0.96, 0, sizeY, 0)
b.Font = Enum.Font.GothamBold
b.Text = text
b.TextColor3 = Color3.fromRGB(255, 255, 255)
b.TextScaled = true
Instance.new("UICorner", b).CornerRadius = UDim.new(0, 4)
b.InputBegan:Connect(function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then
Services.TweenService:Create(b, TweenInfo.new(0.08, Enum.EasingStyle.Quad, Enum.EasingDirection.Out),
{Size = UDim2.new(0.96, 0, sizeY * 0.95, 0)}):Play()
end
end)
b.InputEnded:Connect(function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then
Services.TweenService:Create(b, TweenInfo.new(0.08, Enum.EasingStyle.Quad, Enum.EasingDirection.Out),
{Size = UDim2.new(0.96, 0, sizeY, 0)}):Play()
end
end)
return b
end
local function MakeTextBox(parent, posY, sizeY, placeholder)
local tb = Instance.new("TextBox")
tb.Parent = parent
tb.BackgroundColor3 = Color3.fromRGB(12, 12, 12)
tb.BorderSizePixel = 0
tb.Position = UDim2.new(0.02, 0, posY, 0)
tb.Size = UDim2.new(0.96, 0, sizeY, 0)
tb.Font = Enum.Font.GothamBold
tb.PlaceholderText = placeholder
tb.Text = ""
tb.TextColor3 = Color3.fromRGB(255, 255, 255)
tb.TextScaled = true
tb.ClearTextOnFocus = true
Instance.new("UICorner", tb).CornerRadius = UDim.new(0, 4)
return tb
end
local function MakeSmallTextBox(parent, posX, posY, sizeX, sizeY, placeholder)
local tb = Instance.new("TextBox")
tb.Parent = parent
tb.BackgroundColor3 = Color3.fromRGB(12, 12, 12)
tb.BorderSizePixel = 0
tb.Position = UDim2.new(posX, 0, posY, 0)
tb.Size = UDim2.new(sizeX, 0, sizeY, 0)
tb.Font = Enum.Font.GothamBold
tb.PlaceholderText = placeholder
tb.Text = ""
tb.TextColor3 = Color3.fromRGB(255, 255, 255)
tb.TextScaled = true
tb.ClearTextOnFocus = true
Instance.new("UICorner", tb).CornerRadius = UDim.new(0, 4)
return tb
end
local WordText = MakeLabel(MainFrame, 0.01, 0.06, "UNPATCHABOMB", Enum.Font.GothamBold)
local LetterBox = MakeTextBox(MainFrame, 0.08, 0.06, "Type letters + Enter to auto-type")
local StatusLabel = MakeLabel(MainFrame, 0.15, 0.06, "Status: Waiting for round...")
StatusLabel.TextColor3 = Color3.fromRGB(180, 180, 180)
local AutoTypeToggle = MakeButton(MainFrame, 0.22, 0.06, "Auto Type: OFF", Color3.fromRGB(40, 40, 40))
local AutoJoinToggle = MakeButton(MainFrame, 0.29, 0.06, "Auto Join: OFF", Color3.fromRGB(40, 40, 40))
local WPMBox = MakeTextBox(MainFrame, 0.36, 0.06, "Typing WPM (default: 120)")
local JitterToggle = MakeButton(MainFrame, 0.43, 0.06, "Humanise WPM: ON", Color3.fromRGB(40, 80, 40))
local TypoPresets = {0, 0.02, 0.04, 0.08, 0.12, 0.20}
local TypoIndex = 3
local TypoButton = MakeButton(MainFrame, 0.50, 0.06,
string.format("Typo Chance: %d%%", math.floor(TypoPresets[TypoIndex] * 100)),
Color3.fromRGB(80, 40, 40))
local MinLenBox = MakeSmallTextBox(MainFrame, 0.02, 0.57, 0.47, 0.06, "Min Length (1)")
local MaxLenBox = MakeSmallTextBox(MainFrame, 0.51, 0.57, 0.47, 0.06, "Max Length (99)")
local OldGUIButton = MakeButton(MainFrame, 0.64, 0.06, "Switch Theme: Patriotic", Color3.fromRGB(50, 50, 50))
local HowToUseText = MakeLabel(MainFrame, 0.75, 0.1,
"Modern UI Active\nMin/Max len set via textboxes")
HowToUseText.TextColor3 = Color3.fromRGB(140, 140, 140)
local function SetStatus(msg) StatusLabel.Text = "Status: " .. msg end
local TypeBox
local function LinkTypeBox()
local GameUI = LocalPlayer.PlayerGui:WaitForChild("GameUI", 5)
if GameUI then
TypeBox = GameUI:FindFirstChild("Typebox", true)
GameUI.DescendantAdded:Connect(function(c)
if c.Name == "Typebox" then
TypeBox = c
TypeBox:GetPropertyChangedSignal("Visible"):Connect(function()
if Settings.AutoType then task.spawn(TryTyping) end
end)
end
end)
end
end
task.spawn(LinkTypeBox)
local function TypeWord(word)
if Typing then return end
Typing = true
burstCounter = 0
burstTarget = math.random(Settings.BurstMin, Settings.BurstMax)
SetStatus(string.format("Typing '%s' @ %d WPM (typo: %d%%)",
word, Settings.WPM, math.floor(Settings.TypoChance * 100)))
if TypeBox then pcall(function() TypeBox:CaptureFocus() end) end
local i = 1
while i <= #word do
local char = string.sub(word, i, i)
if Settings.TypoChance > 0 and math.random() < Settings.TypoChance then
local lower = string.lower(char)
local typoKey = TypoNeighbours[lower] or lower
SimulateKey(typoKey)
task.wait(GetLetterDelay())
task.wait(0.04 + math.random() * 0.08)
SimulateBackspace()
task.wait(0.03 + math.random() * 0.05)
SimulateKey(char)
else
SimulateKey(char)
end
task.wait(GetLetterDelay())
i = i + 1
end
task.wait(0.05)
SimulateKey("\n")
SetStatus("Submitted: " .. word)
Typing = false
end
function TryTyping()
if not Settings.AutoType or TypingActive then return end
TypingActive = true
while GetTurn() ~= LocalPlayer.UserId do
if not Settings.AutoType then TypingActive = false return end
task.wait(0.1)
end
if not Settings.AutoType then TypingActive = false return end
local Word, attempts = nil, 0
repeat
task.wait()
local detectedLetters = GetLetters()
if detectedLetters and detectedLetters ~= "" then
LetterBox.Text = detectedLetters
Word = FindWordAuto(detectedLetters)
attempts = attempts + 1
if not Settings.AutoType then TypingActive = false return end
end
until Word or attempts >= 10
if Word then
LastWord = Word
task.wait(Settings.WordTypeDelay)
if not Typing then TypeWord(Word) end
task.wait(Settings.WordTypeDelay)
if GetTurn() == LocalPlayer.UserId and Settings.AutoType then
SetStatus("Still my turn β retryingβ¦")
LastWord = ""
TypingActive = false
TryTyping()
return
end
else
SetStatus("No word found for: " .. GetLetters())
end
TypingActive = false
end
task.spawn(function()
local lastPrompt = ""
while task.wait(0.25) do
if Settings.AutoType and GetTurn() == LocalPlayer.UserId and not Typing and not TypingActive then
local currentPrompt = GetLetters() or ""
if currentPrompt ~= "" and currentPrompt ~= lastPrompt then
lastPrompt = currentPrompt
task.spawn(TryTyping)
end
elseif GetTurn() ~= LocalPlayer.UserId then
lastPrompt = ""
end
end
end)
LetterBox.FocusLost:Connect(function(enterPressed)
if not enterPressed then return end
local sub = LetterBox.Text
if not sub or sub == "" then
sub = GetLetters()
if not sub or sub == "" then WordText.Text = "Error: empty input." return end
end
WordText.Text = sub .. " β Searching..."
task.wait(0.1)
local word = FindWordAuto(sub) or findWord(sub)
if word then
WordText.Text = "Typing: '" .. word .. "'..."
task.spawn(function()
TypeWord(word)
WordText.Text = "Done: '" .. word .. "'"
end)
else
WordText.Text = "No word found :("
end
end)
AutoTypeToggle.MouseButton1Click:Connect(function()
Settings.AutoType = not Settings.AutoType
local on = Settings.AutoType
AutoTypeToggle.Text = "Auto Type: " .. (on and "ON" or "OFF")
AutoTypeToggle.BackgroundColor3 = on and Color3.fromRGB(40, 80, 40) or Color3.fromRGB(40, 40, 40)
SetStatus("Auto Type " .. (on and "Enabled" or "Disabled"))
if not on then TypingActive = false end
if on then task.spawn(TryTyping) end
end)
AutoJoinToggle.MouseButton1Click:Connect(function()
Settings.AutoJoin = not Settings.AutoJoin
local on = Settings.AutoJoin
AutoJoinToggle.Text = "Auto Join: " .. (on and "ON" or "OFF")
AutoJoinToggle.BackgroundColor3 = on and Color3.fromRGB(40, 80, 40) or Color3.fromRGB(40, 40, 40)
SetStatus("Auto Join " .. (on and "Enabled" or "Disabled"))
if on and Games then
pcall(function()
for i = -1, -1000, -1 do Games.GameEvent:FireServer(i, "JoinGame") end
end)
end
end)
WPMBox.FocusLost:Connect(function()
local n = tonumber(WPMBox.Text)
if n then
Settings.WPM = math.clamp(n, 10, 9999)
SetStatus(string.format("WPM β %d (%.4fs/char)", Settings.WPM, 60 / (Settings.WPM * 5)))
else
SetStatus("Invalid WPM β enter a number.")
end
end)
MinLenBox.FocusLost:Connect(function()
local n = tonumber(MinLenBox.Text)
if n then
Settings.MinLen = math.clamp(n, 1, 99)
SetStatus("Min Length β " .. Settings.MinLen)
else
Settings.MinLen = 1
SetStatus("Min Length β Default (1)")
end
end)
MaxLenBox.FocusLost:Connect(function()
local n = tonumber(MaxLenBox.Text)
if n then
Settings.MaxLen = math.clamp(n, 1, 99)
SetStatus("Max Length β " .. Settings.MaxLen)
else
Settings.MaxLen = 99
SetStatus("Max Length β Default (99)")
end
end)
JitterToggle.MouseButton1Click:Connect(function()
Settings.HumaniseWPM = not Settings.HumaniseWPM
local on = Settings.HumaniseWPM
JitterToggle.Text = "Humanise WPM: " .. (on and "ON" or "OFF")
JitterToggle.BackgroundColor3 = on and Color3.fromRGB(40, 80, 40) or Color3.fromRGB(40, 40, 40)
SetStatus("WPM jitter " .. (on and "ON" or "OFF"))
end)
TypoButton.MouseButton1Click:Connect(function()
TypoIndex = (TypoIndex % #TypoPresets) + 1
Settings.TypoChance = TypoPresets[TypoIndex]
TypoButton.Text = string.format("Typo Chance: %d%%", math.floor(Settings.TypoChance * 100))
StatusLabel.Text = string.format("Status: Typo chance β %d%%", math.floor(Settings.TypoChance * 100))
end)
local currentTheme = "Patriotic"
local function ApplyTheme(theme)
currentTheme = theme
if theme == "Patriotic" then
PatrioticGradient.Enabled = true
StarOverlay.Visible = true
FireworkOverlay.Visible = true
OuterFrame.BackgroundColor3 = Color3.fromRGB(10, 10, 20)
TopFrame.BackgroundColor3 = Color3.fromRGB(10, 10, 25)
MainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 30)
WordText.TextColor3 = Color3.fromRGB(255, 255, 255)
LetterBox.BackgroundColor3 = Color3.fromRGB(10, 10, 20)
StatusLabel.TextColor3 = Color3.fromRGB(220, 220, 220)
AutoTypeToggle.BackgroundColor3 = Color3.fromRGB(180, 30, 50)
AutoJoinToggle.BackgroundColor3 = Color3.fromRGB(30, 80, 160)
JitterToggle.BackgroundColor3 = Settings.HumaniseWPM and Color3.fromRGB(40, 120, 60) or Color3.fromRGB(40, 40, 40)
TypoButton.BackgroundColor3 = Color3.fromRGB(160, 40, 60)
WPMBox.BackgroundColor3 = Color3.fromRGB(10, 10, 25)
MinLenBox.BackgroundColor3 = Color3.fromRGB(10, 10, 25)
MaxLenBox.BackgroundColor3 = Color3.fromRGB(10, 10, 25)
OldGUIButton.BackgroundColor3 = Color3.fromRGB(20, 60, 140)
OldGUIButton.Text = "Switch Theme: Modern"
HowToUseText.TextColor3 = Color3.fromRGB(230, 230, 230)
HowToUseText.Text = "Patriotic UI Active\nMin/Max len set via textboxes"
T1.TextColor3 = Color3.fromRGB(255, 255, 255)
T2.TextColor3 = Color3.fromRGB(230, 230, 230)
MinimizeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
else
PatrioticGradient.Enabled = false
StarOverlay.Visible = false
FireworkOverlay.Visible = false
OuterFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
TopFrame.BackgroundColor3 = Color3.fromRGB(12, 12, 12)
MainFrame.BackgroundColor3 = Color3.fromRGB(22, 22, 22)
WordText.TextColor3 = Color3.fromRGB(255, 255, 255)
LetterBox.BackgroundColor3 = Color3.fromRGB(12, 12, 12)
StatusLabel.TextColor3 = Color3.fromRGB(180, 180, 180)
AutoTypeToggle.BackgroundColor3 = Settings.AutoType and Color3.fromRGB(40, 80, 40) or Color3.fromRGB(40, 40, 40)
AutoJoinToggle.BackgroundColor3 = Settings.AutoJoin and Color3.fromRGB(40, 80, 40) or Color3.fromRGB(40, 40, 40)
JitterToggle.BackgroundColor3 = Settings.HumaniseWPM and Color3.fromRGB(40, 80, 40) or Color3.fromRGB(40, 40, 40)
TypoButton.BackgroundColor3 = Color3.fromRGB(80, 40, 40)
WPMBox.BackgroundColor3 = Color3.fromRGB(12, 12, 12)
MinLenBox.BackgroundColor3 = Color3.fromRGB(12, 12, 12)
MaxLenBox.BackgroundColor3 = Color3.fromRGB(12, 12, 12)
OldGUIButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
OldGUIButton.Text = "Switch Theme: Patriotic"
HowToUseText.TextColor3 = Color3.fromRGB(140, 140, 140)
HowToUseText.Text = "Modern UI Active\nMin/Max len set via textboxes"
T1.TextColor3 = Color3.fromRGB(255, 255, 255)
T2.TextColor3 = Color3.fromRGB(200, 200, 200)
MinimizeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
end
end
ApplyTheme("Patriotic")
OldGUIButton.MouseButton1Click:Connect(function()
if currentTheme == "Patriotic" then
ApplyTheme("Modern")
SetStatus("Switched to Modern UI")
else
ApplyTheme("Patriotic")
SetStatus("Switched to Patriotic UI")
end
end)
do
local dragging, dragInput, dragStart, startPos
TopFrame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = OuterFrame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then dragging = false end
end)
end
end)
TopFrame.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
dragInput = input
end
end)
Services.UserInputService.InputChanged:Connect(function(input)
if input == dragInput and dragging then
local d = input.Position - dragStart
OuterFrame.Position = UDim2.new(
startPos.X.Scale, startPos.X.Offset + d.X,
startPos.Y.Scale, startPos.Y.Offset + d.Y
)
end
end)
end
local minimized = false
MinimizeButton.MouseButton1Click:Connect(function()
minimized = not minimized
local targetSize = minimized and UDim2.new(0, 320, 0, 28) or UDim2.new(0, 320, 0, 480)
local targetBodySize = minimized and UDim2.new(1, 0, 0, 0) or UDim2.new(1, 0, 1, -28)
local glow = Instance.new("ImageLabel")
glow.Parent = OuterFrame
glow.BackgroundTransparency = 1
glow.Image = "rbxassetid://5028857084"
glow.ImageColor3 = Color3.fromRGB(255, 255, 255)
glow.Size = UDim2.new(1, 20, 1, 20)
glow.Position = UDim2.new(0, -10, 0, -10)
glow.ImageTransparency = 1
Services.TweenService:Create(glow, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out),
{ImageTransparency = 0.7}):Play()
task.delay(0.4, function() glow:Destroy() end)
Services.TweenService:Create(OuterFrame, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Size = targetSize}):Play()
Services.TweenService:Create(MainFrame, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Size = targetBodySize}):Play()
Services.TweenService:Create(IntroFrame, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Size = targetBodySize}):Play()
MinimizeButton.Text = minimized and "+" or "β"
end)
task.delay(2, function()
Services.TweenService:Create(IntroFrame, TweenInfo.new(0.5, Enum.EasingStyle.Quad, Enum.EasingDirection.Out),
{Position = UDim2.new(0, 0, 1, 0)}):Play()
end)
if Games then
local registerGame = Games:FindFirstChild("RegisterGame")
if registerGame then
registerGame.OnClientEvent:Connect(function(int)
GameID = int
UsedWords = {}
LastWord = ""
SetStatus("Game registered β ID: " .. int)
if Settings.AutoJoin then
pcall(function() Games.GameEvent:FireServer(int, "JoinGame") end)
end
task.wait(1)
if Settings.AutoType then task.spawn(TryTyping) end
end)
end
end
starting now, unpatchaBomb will auto-update.
this is so i dont have to continue making new versions
@Wortexios Seems as if your GitHub may be disabled, or who ever owns the account: jjengu
@Experienced_Coder my account on GitHub is @aedynjames17, so that isn't mine, thanks.
@Wortexios I apologize, do you plan to upload them on your own account? Or is this script partly managed by another developer or person with a developer type of role, or?
@Experienced_Coder i make all of these myself, they are open-src so that you can modify them to your heart's content
auto type does not work
@Tsuki2202 it does, however, your executor must support require. solara and xeno won't work. get Madium or Velocity.
Also, I could not locate your GitHub account with that username, and I recommend putting your code into a Loadstring on GitHub, then post it on Pastebin and Pastefy as fallbacks for your script, I had to do that, and I receive more users, because if GitHub goes down, or my account receives a suspension or something similar, it loads Pastebin and Pastefy as a backup, if you need, I can friend you on Discord or something similar, and give you some code to do that! Just let me know, always happy to help.
@Experienced_Coder my github account was terminated
this dude deserves a verified badge fr π₯Ί
@Wortexios Lol, you're lowkey funny, I can't lie, but also, I love that you included the source code like that so the users can modify them how ever they want, I love that, and I guess it doesn't really matter since Delta users will just run it anyway πππ
@Experienced_Coder * skids haha. yea most of my projects are free/keyless and all that cuz idc about the income i guess? i just code for the fun of it. most of my time is spent in roblox studio anyway
xeno and delta users
new version coming very soon (v4.3), with new UI, new plugins, and more... π
NOTE: As of now, the script is currently broken, i am working on a fix