Wacky Bats Script (Delta Mobile) – Utility Hub: Infinite Hit, Noclip 18 7 No Key

Wacky Bats Script (Delta Mobile) – Utility Hub: Infinite Hit, Noclip

Wacky Bats · Roblox
Play
No key Mobile friendly Working · Nov 4
Report

Description

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.

Tested With
DeltaCodexArceus XFluxusPC executors
Script CodeWacky Bats Utility Hub (diejndms)
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()
Game pageWacky Bats · 1 script on this siteRoblox ›

More Wacky Bats scripts

See all
Get Delta Script first on GoogleAdd us as a preferred source to see our new scripts in your Google results.
Add Delta Script on Google

Leave a Reply

Your email address will not be published. Required fields are marked *