18 7 No KeyWacky Bats Script (Delta Mobile) – Utility Hub: Infinite Hit, Noclip
Wacky Bats · RobloxDescription
Wacky Bats Utility Hub is a Wacky Bats script you can run in Delta on Android, iOS or PC. It includes infinite hit, speed mode, fps guardian and more. Use the hiding spot with noclip and freeze for best results. Created by diejndms. No key.
Key Features
- Infinite Hit
- Speed modes from Slow to Extreme
- FPS Guardian turns Infinite Hit off on low FPS
- Rejoin server
- Hiding spot teleport
- Freeze in place
- Noclip
Wacky Bats is pure ragdoll chaos: grab a bat, launch your friends across the map and chase a killstreak. The Wacky Bats script from diejndms (Utility Hub) packs a repeat-fire loop, an anti-lag guard and a hideout into one purple window.
Main tab
Infinite Hit is the headline switch. It’s worth knowing what’s behind it: the loop repeatedly fires the game’s DailyRewardsEvent remote with the Day 7 argument rather than swinging a bat. Whatever it earns depends on how the server answers those calls. Speed Modes sets the pace in five steps, from SLOW (one call every 0.1 s) to EXTREME (25 calls every frame). FPS Guardian watches your framerate and stops the loop if it falls to 1–5 FPS, so a phone doesn’t lock up. Rejoin drops you back into the same server instantly.
Safe Spot tab
This tab has three tools: teleport to a fixed safe position, Freeze (anchors your character so nothing can knock you around) and Noclip. The hub’s own tip says to use them in that order: teleport, Freeze ON, Noclip ON. That keeps you parked while the loop runs.
Getting started
There’s no loader. What you see in the code box is the full script, and it waits for the game to load before building the menu. Run it in Delta, and the console prints “Hub loaded (no key system)”. Left Ctrl hides or shows the window on PC. The tested executors are Delta, Codex, Arceus X, Fluxus and generic PC ones.
FAQ
Will I get banned? The game’s description says cheaters are banned instantly with no appeals, so use an alt account if you try this.
Which speed mode should I use? Start on FAST, which is the default, with FPS Guardian on. INSANE and EXTREME send far more calls and are the ones most likely to lag you or get noticed.
Bat tip: run the loop from the safe spot, not in the middle of a fight. Other players’ bats and ragdoll knockback can’t move you there once Freeze is on, and you won’t lose a killstreak to a random hit while you’re looking at the menu.
repeat task.wait() until game:IsLoaded()
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
repeat task.wait() until LocalPlayer and LocalPlayer:FindFirstChild("PlayerGui")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local UserInputService = game:GetService("UserInputService")
local TeleportService = game:GetService("TeleportService")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local Event = ReplicatedStorage:WaitForChild("Remotes"):WaitForChild("DailyRewardsEvent")
--================ CONFIG ================
local TOGGLE_KEY = Enum.KeyCode.LeftControl
local isLoopActive = false
local isFpsGuardianEnabled = false
local MIN_FPS_THRESHOLD = 1
local MAX_FPS_THRESHOLD = 5
local fpsBuffer = {}
local BUFFER_SIZE = 8
local currentFps = 60
local speedModes = {"SLOW", "MEDIUM", "FAST", "INSANE", "EXTREME"}
local currentSpeedIndex = 3
-- Safe Spot
local SAFE_POSITION = Vector3.new(109.671204, 18.410908, 28.585752)
local isFrozen = false
local isNoclip = false
local noclipConnection = nil
-- Forward declarations
local ToggleButton, GuardianStatusButton, SpeedButton, FpsLabelText
local FreezeButton, NoclipButton
local updateLoopUIState, updateGuardianUIState, updateFreezeUI, updateNoclipUI
local MainContent, SafeSpotContent, MainTab, SafeSpotTab
--================ HIT LOOP ================
local function runHitLoop()
while isLoopActive and LocalPlayer and LocalPlayer.Parent == Players do
local mode = speedModes[currentSpeedIndex]
if mode == "SLOW" then
Event:FireServer("Day7", 7)
task.wait(0.1)
elseif mode == "MEDIUM" then
Event:FireServer("Day7", 7)
task.wait(0.03)
elseif mode == "FAST" then
Event:FireServer("Day7", 7)
task.wait()
elseif mode == "INSANE" then
for i = 1, 5 do Event:FireServer("Day7", 7) end
task.wait()
elseif mode == "EXTREME" then
for i = 1, 25 do Event:FireServer("Day7", 7) end
task.wait()
end
end
end
--================ FPS GUARDIAN ================
RunService.Heartbeat:Connect(function(deltaTime)
local instantFps = 1 / deltaTime
table.insert(fpsBuffer, instantFps)
if #fpsBuffer > BUFFER_SIZE then
table.remove(fpsBuffer, 1)
end
local sum = 0
for _, v in ipairs(fpsBuffer) do
sum += v
end
currentFps = math.floor((sum / #fpsBuffer) * 10) / 10
if FpsLabelText then
FpsLabelText.Text = "Current Framerate: " .. currentFps .. " FPS"
end
if isFpsGuardianEnabled and isLoopActive then
if currentFps >= MIN_FPS_THRESHOLD and currentFps <= MAX_FPS_THRESHOLD then
isLoopActive = false
if updateLoopUIState then updateLoopUIState() end
warn("[FPS Guardian]: Loop stopped at " .. currentFps .. " FPS")
end
end
end)
--================ SAFE SPOT FUNCTIONS ================
local function teleportToSafeSpot()
local char = LocalPlayer.Character
if not char then
char = LocalPlayer.CharacterAdded:Wait()
end
local hrp = char:WaitForChild("HumanoidRootPart", 5)
if hrp then
hrp.CFrame = CFrame.new(SAFE_POSITION)
end
end
local function setFreeze(state)
isFrozen = state
local char = LocalPlayer.Character
if char and char:FindFirstChild("HumanoidRootPart") then
char.HumanoidRootPart.Anchored = state
end
if updateFreezeUI then updateFreezeUI() end
end
local function setNoclip(state)
isNoclip = state
if noclipConnection then
noclipConnection:Disconnect()
noclipConnection = nil
end
if state then
noclipConnection = RunService.Stepped:Connect(function()
local char = LocalPlayer.Character
if char then
for _, part in pairs(char:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
end
end
end
end)
end
if updateNoclipUI then updateNoclipUI() end
end
-- Keep freeze/noclip working after respawn
LocalPlayer.CharacterAdded:Connect(function(char)
task.wait(0.5)
if isFrozen then
local hrp = char:FindFirstChild("HumanoidRootPart")
if hrp then hrp.Anchored = true end
end
if isNoclip then
setNoclip(true)
end
end)
--================ MAIN HUB GUI ================
local function createMainHub()
local gui = Instance.new("ScreenGui")
gui.Name = "WackyBatsHub"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = true
pcall(function() gui.Parent = game:GetService("CoreGui") end)
if not gui.Parent then
gui.Parent = LocalPlayer.PlayerGui
end
-- Mobile button
local mobileBtn = Instance.new("TextButton")
mobileBtn.Size = UDim2.fromOffset(52,52)
mobileBtn.Position = UDim2.new(1,-70,1,-70)
mobileBtn.BackgroundColor3 = Color3.fromRGB(30,30,36)
mobileBtn.Text = "⏻"
mobileBtn.TextColor3 = Color3.fromRGB(147,51,234)
mobileBtn.Font = Enum.Font.GothamBold
mobileBtn.TextSize = 26
mobileBtn.Visible = false
mobileBtn.Parent = gui
Instance.new("UICorner", mobileBtn).CornerRadius = UDim.new(1,0)
Instance.new("UIStroke", mobileBtn).Color = Color3.fromRGB(147,51,234)
-- Main Frame
local main = Instance.new("Frame")
main.Size = UDim2.fromOffset(420, 460)
main.Position = UDim2.new(0.5,0,0.5,0)
main.AnchorPoint = Vector2.new(0.5,0.5)
main.BackgroundColor3 = Color3.fromRGB(22,22,26)
main.BorderSizePixel = 0
main.Active = true
main.Draggable = true
main.Parent = gui
Instance.new("UICorner", main).CornerRadius = UDim.new(0,16)
Instance.new("UIStroke", main).Color = Color3.fromRGB(50,50,60)
-- Title
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1,-90,0,42)
title.Position = UDim2.fromOffset(18,0)
title.BackgroundTransparency = 1
title.Text = "🦇 Wacky Bats Utility Hub"
title.Font = Enum.Font.GothamBold
title.TextSize = 17
title.TextColor3 = Color3.new(1,1,1)
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = main
local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.fromOffset(32,32)
closeBtn.Position = UDim2.new(1,-42,0,6)
closeBtn.BackgroundTransparency = 1
closeBtn.Text = "✕"
closeBtn.TextColor3 = Color3.fromRGB(160,160,170)
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextSize = 18
closeBtn.Parent = main
--================ TABS ================
local tabBar = Instance.new("Frame")
tabBar.Size = UDim2.new(1, -30, 0, 34)
tabBar.Position = UDim2.fromOffset(15, 42)
tabBar.BackgroundTransparency = 1
tabBar.Parent = main
local function createTab(text, x)
local btn = Instance.new("TextButton")
btn.Size = UDim2.fromOffset(100, 32)
btn.Position = UDim2.fromOffset(x, 0)
btn.BackgroundColor3 = Color3.fromRGB(40, 40, 48)
btn.Text = text
btn.Font = Enum.Font.GothamBold
btn.TextSize = 13
btn.TextColor3 = Color3.fromRGB(180, 180, 190)
btn.AutoButtonColor = false
btn.Parent = tabBar
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8)
return btn
end
MainTab = createTab("Main", 0)
SafeSpotTab = createTab("Safe Spot", 110)
-- Content containers
MainContent = Instance.new("Frame")
MainContent.Size = UDim2.new(1, 0, 1, -90)
MainContent.Position = UDim2.fromOffset(0, 82)
MainContent.BackgroundTransparency = 1
MainContent.Parent = main
SafeSpotContent = Instance.new("Frame")
SafeSpotContent.Size = UDim2.new(1, 0, 1, -90)
SafeSpotContent.Position = UDim2.fromOffset(0, 82)
SafeSpotContent.BackgroundTransparency = 1
SafeSpotContent.Visible = false
SafeSpotContent.Parent = main
local function switchTab(tab)
if tab == "Main" then
MainContent.Visible = true
SafeSpotContent.Visible = false
MainTab.BackgroundColor3 = Color3.fromRGB(147, 51, 234)
MainTab.TextColor3 = Color3.new(1,1,1)
SafeSpotTab.BackgroundColor3 = Color3.fromRGB(40, 40, 48)
SafeSpotTab.TextColor3 = Color3.fromRGB(180, 180, 190)
else
MainContent.Visible = false
SafeSpotContent.Visible = true
SafeSpotTab.BackgroundColor3 = Color3.fromRGB(147, 51, 234)
SafeSpotTab.TextColor3 = Color3.new(1,1,1)
MainTab.BackgroundColor3 = Color3.fromRGB(40, 40, 48)
MainTab.TextColor3 = Color3.fromRGB(180, 180, 190)
end
end
MainTab.MouseButton1Click:Connect(function() switchTab("Main") end)
SafeSpotTab.MouseButton1Click:Connect(function() switchTab("Safe Spot") end)
switchTab("Main")
--================ HELPER ================
local function makeCard(parent, name, desc, y)
local card = Instance.new("Frame")
card.Size = UDim2.new(1, -30, 0, 64)
card.Position = UDim2.fromOffset(15, y)
card.BackgroundColor3 = Color3.fromRGB(30,30,36)
card.BorderSizePixel = 0
card.Parent = parent
Instance.new("UICorner", card).CornerRadius = UDim.new(0, 10)
local n = Instance.new("TextLabel")
n.Size = UDim2.new(1, -120, 0, 20)
n.Position = UDim2.fromOffset(14, 10)
n.BackgroundTransparency = 1
n.Text = name
n.Font = Enum.Font.GothamBold
n.TextSize = 14
n.TextColor3 = Color3.new(1,1,1)
n.TextXAlignment = Enum.TextXAlignment.Left
n.Parent = card
local d = Instance.new("TextLabel")
d.Size = UDim2.new(1, -120, 0, 16)
d.Position = UDim2.fromOffset(14, 32)
d.BackgroundTransparency = 1
d.Text = desc
d.Font = Enum.Font.Gotham
d.TextSize = 11
d.TextColor3 = Color3.fromRGB(160,160,170)
d.TextXAlignment = Enum.TextXAlignment.Left
d.Parent = card
return card
end
--================ MAIN TAB CONTENT ================
local c1 = makeCard(MainContent, "Infinite Hit", "Automatically hit without distance limits.", 8)
ToggleButton = Instance.new("TextButton")
ToggleButton.Size = UDim2.fromOffset(92, 26)
ToggleButton.Position = UDim2.new(1, -106, 0.5, 0)
ToggleButton.AnchorPoint = Vector2.new(0, 0.5)
ToggleButton.BackgroundColor3 = Color3.fromRGB(200,50,50)
ToggleButton.Text = "Disabled"
ToggleButton.Font = Enum.Font.GothamBold
ToggleButton.TextSize = 11
ToggleButton.TextColor3 = Color3.new(1,1,1)
ToggleButton.Parent = c1
Instance.new("UICorner", ToggleButton).CornerRadius = UDim.new(0, 7)
local c2 = makeCard(MainContent, "Speed Modes", "SLOW → MEDIUM → FAST → INSANE → EXTREME", 80)
SpeedButton = Instance.new("TextButton")
SpeedButton.Size = UDim2.fromOffset(92, 26)
SpeedButton.Position = UDim2.new(1, -106, 0.5, 0)
SpeedButton.AnchorPoint = Vector2.new(0, 0.5)
SpeedButton.BackgroundColor3 = Color3.fromRGB(147,51,234)
SpeedButton.Text = "FAST"
SpeedButton.Font = Enum.Font.GothamBold
SpeedButton.TextSize = 11
SpeedButton.TextColor3 = Color3.new(1,1,1)
SpeedButton.Parent = c2
Instance.new("UICorner", SpeedButton).CornerRadius = UDim.new(0, 7)
local c3 = makeCard(MainContent, "FPS Guardian", "Auto stops loop when FPS drops to 1-5", 152)
GuardianStatusButton = Instance.new("TextButton")
GuardianStatusButton.Size = UDim2.fromOffset(92, 26)
GuardianStatusButton.Position = UDim2.new(1, -106, 0.5, 0)
GuardianStatusButton.AnchorPoint = Vector2.new(0, 0.5)
GuardianStatusButton.BackgroundColor3 = Color3.fromRGB(200,50,50)
GuardianStatusButton.Text = "Guardian OFF"
GuardianStatusButton.Font = Enum.Font.GothamBold
GuardianStatusButton.TextSize = 10
GuardianStatusButton.TextColor3 = Color3.new(1,1,1)
GuardianStatusButton.Parent = c3
Instance.new("UICorner", GuardianStatusButton).CornerRadius = UDim.new(0, 7)
local c4 = makeCard(MainContent, "Emergency Rejoin", "Rejoin the same server instantly", 224)
local RejoinBtn = Instance.new("TextButton")
RejoinBtn.Size = UDim2.fromOffset(92, 26)
RejoinBtn.Position = UDim2.new(1, -106, 0.5, 0)
RejoinBtn.AnchorPoint = Vector2.new(0, 0.5)
RejoinBtn.BackgroundColor3 = Color3.fromRGB(0,120,215)
RejoinBtn.Text = "Rejoin"
RejoinBtn.Font = Enum.Font.GothamBold
RejoinBtn.TextSize = 11
RejoinBtn.TextColor3 = Color3.new(1,1,1)
RejoinBtn.Parent = c4
Instance.new("UICorner", RejoinBtn).CornerRadius = UDim.new(0, 7)
-- FPS Label
FpsLabelText = Instance.new("TextLabel")
FpsLabelText.Size = UDim2.new(1, -30, 0, 18)
FpsLabelText.Position = UDim2.fromOffset(15, 300)
FpsLabelText.BackgroundTransparency = 1
FpsLabelText.Text = "Current Framerate: 60 FPS"
FpsLabelText.Font = Enum.Font.Gotham
FpsLabelText.TextSize = 12
FpsLabelText.TextColor3 = Color3.fromRGB(160,160,170)
FpsLabelText.TextXAlignment = Enum.TextXAlignment.Left
FpsLabelText.Parent = MainContent
--================ SAFE SPOT TAB CONTENT ================
local s1 = makeCard(SafeSpotContent, "Teleport to Safe Spot", "Teleport to the saved safe position", 8)
local TpBtn = Instance.new("TextButton")
TpBtn.Size = UDim2.fromOffset(92, 26)
TpBtn.Position = UDim2.new(1, -106, 0.5, 0)
TpBtn.AnchorPoint = Vector2.new(0, 0.5)
TpBtn.BackgroundColor3 = Color3.fromRGB(147, 51, 234)
TpBtn.Text = "Teleport"
TpBtn.Font = Enum.Font.GothamBold
TpBtn.TextSize = 11
TpBtn.TextColor3 = Color3.new(1,1,1)
TpBtn.Parent = s1
Instance.new("UICorner", TpBtn).CornerRadius = UDim.new(0, 7)
local s2 = makeCard(SafeSpotContent, "Freeze", "Anchor character so nothing can move you", 80)
FreezeButton = Instance.new("TextButton")
FreezeButton.Size = UDim2.fromOffset(92, 26)
FreezeButton.Position = UDim2.new(1, -106, 0.5, 0)
FreezeButton.AnchorPoint = Vector2.new(0, 0.5)
FreezeButton.BackgroundColor3 = Color3.fromRGB(200,50,50)
FreezeButton.Text = "Freeze OFF"
FreezeButton.Font = Enum.Font.GothamBold
FreezeButton.TextSize = 11
FreezeButton.TextColor3 = Color3.new(1,1,1)
FreezeButton.Parent = s2
Instance.new("UICorner", FreezeButton).CornerRadius = UDim.new(0, 7)
local s3 = makeCard(SafeSpotContent, "Noclip", "Disable collisions so you stay in place", 152)
NoclipButton = Instance.new("TextButton")
NoclipButton.Size = UDim2.fromOffset(92, 26)
NoclipButton.Position = UDim2.new(1, -106, 0.5, 0)
NoclipButton.AnchorPoint = Vector2.new(0, 0.5)
NoclipButton.BackgroundColor3 = Color3.fromRGB(200,50,50)
NoclipButton.Text = "Noclip OFF"
NoclipButton.Font = Enum.Font.GothamBold
NoclipButton.TextSize = 11
NoclipButton.TextColor3 = Color3.new(1,1,1)
NoclipButton.Parent = s3
Instance.new("UICorner", NoclipButton).CornerRadius = UDim.new(0, 7)
local info = Instance.new("TextLabel")
info.Size = UDim2.new(1, -30, 0, 40)
info.Position = UDim2.fromOffset(15, 230)
info.BackgroundTransparency = 1
info.Text = "Tip: Teleport → turn Freeze ON → turn Noclip ON\nThis keeps you locked at the safe spot."
info.Font = Enum.Font.Gotham
info.TextSize = 12
info.TextColor3 = Color3.fromRGB(140, 140, 150)
info.TextXAlignment = Enum.TextXAlignment.Left
info.TextYAlignment = Enum.TextYAlignment.Top
info.Parent = SafeSpotContent
--================ LOGIC ================
updateLoopUIState = function()
if isLoopActive then
ToggleButton.Text = "Enabled"
ToggleButton.BackgroundColor3 = Color3.fromRGB(45,185,85)
else
ToggleButton.Text = "Disabled"
ToggleButton.BackgroundColor3 = Color3.fromRGB(200,50,50)
end
end
updateGuardianUIState = function()
if isFpsGuardianEnabled then
GuardianStatusButton.Text = "Guardian ON"
GuardianStatusButton.BackgroundColor3 = Color3.fromRGB(45,185,85)
else
GuardianStatusButton.Text = "Guardian OFF"
GuardianStatusButton.BackgroundColor3 = Color3.fromRGB(200,50,50)
end
end
updateFreezeUI = function()
if isFrozen then
FreezeButton.Text = "Freeze ON"
FreezeButton.BackgroundColor3 = Color3.fromRGB(45,185,85)
else
FreezeButton.Text = "Freeze OFF"
FreezeButton.BackgroundColor3 = Color3.fromRGB(200,50,50)
end
end
updateNoclipUI = function()
if isNoclip then
NoclipButton.Text = "Noclip ON"
NoclipButton.BackgroundColor3 = Color3.fromRGB(45,185,85)
else
NoclipButton.Text = "Noclip OFF"
NoclipButton.BackgroundColor3 = Color3.fromRGB(200,50,50)
end
end
local function toggleHitLoop()
if isLoopActive then
isLoopActive = false
updateLoopUIState()
else
isLoopActive = true
updateLoopUIState()
task.spawn(runHitLoop)
end
end
local function toggleGuardian()
isFpsGuardianEnabled = not isFpsGuardianEnabled
updateGuardianUIState()
end
local function cycleSpeed()
currentSpeedIndex = currentSpeedIndex % #speedModes + 1
SpeedButton.Text = speedModes[currentSpeedIndex]
end
local function doRejoin()
if #Players:GetPlayers() <= 1 then
TeleportService:Teleport(game.PlaceId, LocalPlayer)
else
TeleportService:TeleportToPlaceInstance(game.PlaceId, game.JobId, LocalPlayer)
end
end
local function toggleUI()
main.Visible = not main.Visible
mobileBtn.Visible = not main.Visible
end
-- Connections
ToggleButton.MouseButton1Click:Connect(toggleHitLoop)
SpeedButton.MouseButton1Click:Connect(cycleSpeed)
GuardianStatusButton.MouseButton1Click:Connect(toggleGuardian)
RejoinBtn.MouseButton1Click:Connect(doRejoin)
TpBtn.MouseButton1Click:Connect(teleportToSafeSpot)
FreezeButton.MouseButton1Click:Connect(function()
setFreeze(not isFrozen)
end)
NoclipButton.MouseButton1Click:Connect(function()
setNoclip(not isNoclip)
end)
closeBtn.MouseButton1Click:Connect(toggleUI)
mobileBtn.MouseButton1Click:Connect(toggleUI)
UserInputService.InputBegan:Connect(function(input, gpe)
if gpe then return end
if input.KeyCode == TOGGLE_KEY then
toggleUI()
end
end)
print("[Wacky Bats] Hub loaded (no key system)")
end
--================ START ================
createMainHub()


