Zika Hub Wacky Bats script keyless – Auto spam
🏏 Wacky Bats 💥 Keyless
Zika Hub Wacky Bats script keyless – Auto spam
👤 alexriderr 👁 135 views ❤️ 0 likes ⏱ Jul 25, 2026
This script is developed by **Zika Hub** and includes useful automation features to enhance your gameplay. It offers **Auto Spam** for continuous actions and a **Follow Player** feature that automatically tracks a selected player in-game. These functions work together to make gameplay more convenient while reducing repetitive manual actions.
✨ Features
Auto Spam Infinite Jump Walk Speed Loop Speed Auto Follow Follow Distance ESP ESP Color
📋 Script Code
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()

local Window = Rayfield:CreateWindow({
    Name = "Zika Hub | Use Starstruck Bat",
    LoadingTitle = "Zika Hub",
    LoadingSubtitle = "beta script",
    ConfigurationSaving = {
        Enabled = true,
        FolderName = "ZikaHub",
        FileName = "StarstruckConfig"
    },
    Discord = {
        Enabled = false,
    },
    KeySystem = false,
})

local Roles = {
    Owner = {"RiPNdIPMaKSiM"},
    Dev   = {"MieHideyoshi"},
    Admin = {"Achronath"},
}

local AdminList = {}
for role, users in pairs(Roles) do
    for _, name in ipairs(users) do
        AdminList[name:lower()] = role
    end
end

local function getPlayerRole(player)
    return AdminList[player.Name:lower()]
end

local function isStaff(player)
    return AdminList[player.Name:lower()] ~= nil
end

local function serverHop()
    Rayfield:Notify({
        Title = "Zika Hub",
        Content = "Staff detected! Server hopping...",
        Duration = 4,
        Image = 4483362458,
    })
    task.wait(2)
    local TeleportService = game:GetService("TeleportService")
    local placeId = game.PlaceId
    pcall(function()
        local HttpService = game:GetService("HttpService")
        local url = "https://games.roblox.com/v1/games/" .. placeId .. "/servers/Public?sortOrder=Asc&limit=100"
        local response = HttpService:JSONDecode(game:HttpGet(url))
        local currentJobId = game.JobId
        for _, server in ipairs(response.data) do
            if server.id ~= currentJobId and server.playing  followDistance then
            selfHum:MoveTo(targetRoot.Position)
        end
    end)
end

local function stopFollow()
    if followConn then
        followConn:Disconnect()
        followConn = nil
    end
    local selfChar = LocalPlayer.Character
    if selfChar then
        local selfHum = selfChar:FindFirstChildOfClass("Humanoid")
        local selfRoot = selfChar:FindFirstChild("HumanoidRootPart")
        if selfHum and selfRoot then
            selfHum:MoveTo(selfRoot.Position)
        end
    end
end

local antiVoidEnabled = false
local antiVoidPart = nil
local antiVoidConn = nil
local ANTI_VOID_Y = 30

function createAntiVoidPart()
    if antiVoidPart then return end
    antiVoidPart = Instance.new("Part")
    antiVoidPart.Name = "ZikaAntiVoid"
    antiVoidPart.Size = Vector3.new(4096, 4, 4096)
    antiVoidPart.Anchored = true
    antiVoidPart.CanCollide = true
    antiVoidPart.Transparency = 1
    antiVoidPart.Material = Enum.Material.SmoothPlastic
    antiVoidPart.CastShadow = false
    antiVoidPart.Position = Vector3.new(0, ANTI_VOID_Y - 2, 0)
    antiVoidPart.Parent = workspace
end

function destroyAntiVoidPart()
    if antiVoidPart then
        antiVoidPart:Destroy()
        antiVoidPart = nil
    end
end

local function startAntiVoid()
    createAntiVoidPart()
    antiVoidConn = RunService.Heartbeat:Connect(function()
        if not antiVoidEnabled then return end
        local char = LocalPlayer.Character
        if not char then return end
        local hrp = char:FindFirstChild("HumanoidRootPart")
        local hum = char:FindFirstChildOfClass("Humanoid")
        if not hrp or not hum then return end
        if antiVoidPart then
            antiVoidPart.Position = Vector3.new(hrp.Position.X, ANTI_VOID_Y - 2, hrp.Position.Z)
        end
        if hrp.Position.Y  0 then
                        line.Visible = true
                        line.Color = espColor
                        line.From = screenBottom
                        line.To = Vector2.new(screenPos.X, screenPos.Y)
                    else
                        line.Visible = false
                    end
                end
                if nameTag then
                    if onScreen and screenPos.Z > 0 then
                        local dist = math.floor((targetRoot.Position - selfRoot.Position).Magnitude)
                        nameTag.Visible = true
                        nameTag.Text = player.Name .. " [" .. dist .. "m]"
                        nameTag.Color = espColor
                        nameTag.Position = Vector2.new(screenPos.X, screenPos.Y - 18)
                    else
                        nameTag.Visible = false
                    end
                end
            else
                if line then line.Visible = false end
                if nameTag then nameTag.Visible = false end
            end
        end
    end)
end

local function stopESP()
    if espUpdateConn then
        espUpdateConn:Disconnect()
        espUpdateConn = nil
    end
    for _, player in ipairs(Players:GetPlayers()) do
        removeESPFromPlayer(player)
    end
    espObjects = {}
end

LocalPlayer.CharacterAdded:Connect(function(newChar)
    local hum = newChar:WaitForChild("Humanoid", 5)
    if hum and loopSpeedEnabled then
        hum.WalkSpeed = math.clamp(loopSpeedValue, 0, 500)
    end
    if antiVoidEnabled then
        task.wait(0.5)
        destroyAntiVoidPart()
        createAntiVoidPart()
    end
    if espEnabled then
        task.wait(0.5)
        for _, player in ipairs(Players:GetPlayers()) do
            if player ~= LocalPlayer then
                removeESPFromPlayer(player)
                setupESPForPlayer(player)
            end
        end
    end
end)

local playerListGui = Instance.new("ScreenGui")
playerListGui.Name = "ZikaFollowList"
playerListGui.ResetOnSpawn = false
playerListGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
playerListGui.Parent = game:GetService("CoreGui")

local listFrame = Instance.new("Frame")
listFrame.Name = "ListFrame"
listFrame.Size = UDim2.new(0, 230, 0, 320)
listFrame.Position = UDim2.new(0, 10, 0.5, -160)
listFrame.BackgroundColor3 = Color3.fromRGB(18, 12, 28)
listFrame.BorderSizePixel = 0
listFrame.Visible = false
listFrame.Parent = playerListGui

local listCorner = Instance.new("UICorner")
listCorner.CornerRadius = UDim.new(0, 10)
listCorner.Parent = listFrame

local listStroke = Instance.new("UIStroke")
listStroke.Color = Color3.fromRGB(120, 60, 200)
listStroke.Thickness = 1.5
listStroke.Parent = listFrame

local listTitle = Instance.new("TextLabel")
listTitle.Size = UDim2.new(1, 0, 0, 32)
listTitle.BackgroundColor3 = Color3.fromRGB(90, 40, 160)
listTitle.BorderSizePixel = 0
listTitle.Text = "   Select Follow Target"
listTitle.TextColor3 = Color3.new(1, 1, 1)
listTitle.TextSize = 13
listTitle.Font = Enum.Font.GothamBold
listTitle.TextXAlignment = Enum.TextXAlignment.Left
listTitle.Parent = listFrame

local titleCorner = Instance.new("UICorner")
titleCorner.CornerRadius = UDim.new(0, 10)
titleCorner.Parent = listTitle

local titleFix = Instance.new("Frame")
titleFix.Size = UDim2.new(1, 0, 0.5, 0)
titleFix.Position = UDim2.new(0, 0, 0.5, 0)
titleFix.BackgroundColor3 = Color3.fromRGB(90, 40, 160)
titleFix.BorderSizePixel = 0
titleFix.Parent = listTitle

local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 28, 0, 28)
closeBtn.Position = UDim2.new(1, -32, 0, 2)
closeBtn.BackgroundTransparency = 1
closeBtn.Text = "✕"
closeBtn.TextColor3 = Color3.new(1, 1, 1)
closeBtn.TextSize = 14
closeBtn.Font = Enum.Font.GothamBold
closeBtn.ZIndex = 5
closeBtn.Parent = listFrame
closeBtn.MouseButton1Click:Connect(function()
    listFrame.Visible = false
end)

local scrollFrame = Instance.new("ScrollingFrame")
scrollFrame.Size = UDim2.new(1, -8, 1, -40)
scrollFrame.Position = UDim2.new(0, 4, 0, 36)
scrollFrame.BackgroundTransparency = 1
scrollFrame.BorderSizePixel = 0
scrollFrame.ScrollBarThickness = 3
scrollFrame.ScrollBarImageColor3 = Color3.fromRGB(120, 60, 200)
scrollFrame.Parent = listFrame

local listLayout = Instance.new("UIListLayout")
listLayout.Padding = UDim.new(0, 4)
listLayout.Parent = scrollFrame

local function getAvatarThumb(userId)
    local success, result = pcall(function()
        return Players:GetUserThumbnailAsync(userId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size48x48)
    end)
    return success and result or "rbxassetid://0"
end

local function clearList()
    for _, c in ipairs(scrollFrame:GetChildren()) do
        if c:IsA("Frame") then c:Destroy() end
    end
end

local function buildPlayerList()
    clearList()
    local playerList = Players:GetPlayers()
    local count = 0
    for _, player in ipairs(playerList) do
        if player == LocalPlayer then continue end
        count = count + 1
        local row = Instance.new("Frame")
        row.Size = UDim2.new(1, -4, 0, 48)
        row.BackgroundColor3 = Color3.fromRGB(30, 18, 48)
        row.BorderSizePixel = 0
        row.Parent = scrollFrame
        local rowCorner = Instance.new("UICorner")
        rowCorner.CornerRadius = UDim.new(0, 7)
        rowCorner.Parent = row
        local avatar = Instance.new("ImageLabel")
        avatar.Size = UDim2.new(0, 38, 0, 38)
        avatar.Position = UDim2.new(0, 5, 0.5, -19)
        avatar.BackgroundColor3 = Color3.fromRGB(50, 30, 80)
        avatar.BorderSizePixel = 0
        avatar.Image = getAvatarThumb(player.UserId)
        avatar.Parent = row
        local avatarCorner = Instance.new("UICorner")
        avatarCorner.CornerRadius = UDim.new(0, 5)
        avatarCorner.Parent = avatar
        local nameLabel = Instance.new("TextLabel")
        nameLabel.Size = UDim2.new(1, -60, 0, 20)
        nameLabel.Position = UDim2.new(0, 50, 0, 7)
        nameLabel.BackgroundTransparency = 1
        nameLabel.Text = player.Name
        nameLabel.TextColor3 = Color3.new(1, 1, 1)
        nameLabel.TextSize = 12
        nameLabel.Font = Enum.Font.GothamBold
        nameLabel.TextXAlignment = Enum.TextXAlignment.Left
        nameLabel.TextTruncate = Enum.TextTruncate.AtEnd
        nameLabel.Parent = row
        local selectBtn = Instance.new("TextButton")
        selectBtn.Size = UDim2.new(1, -60, 0, 16)
        selectBtn.Position = UDim2.new(0, 50, 0, 27)
        selectBtn.BackgroundTransparency = 1
        selectBtn.Text = "Select"
        selectBtn.TextColor3 = Color3.fromRGB(160, 100, 255)
        selectBtn.TextSize = 11
        selectBtn.Font = Enum.Font.Gotham
        selectBtn.TextXAlignment = Enum.TextXAlignment.Left
        selectBtn.Parent = row
        local captured = player
        selectBtn.MouseButton1Click:Connect(function()
            followTarget = captured
            listFrame.Visible = false
            Rayfield:Notify({
                Title = "Auto Follow",
                Content = "Now targeting: " .. captured.Name,
                Duration = 3,
                Image = 4483362458,
            })
            if followEnabled then startFollow() end
        end)
        row.MouseEnter:Connect(function()
            row.BackgroundColor3 = Color3.fromRGB(55, 30, 90)
        end)
        row.MouseLeave:Connect(function()
            row.BackgroundColor3 = Color3.fromRGB(30, 18, 48)
        end)
    end
    scrollFrame.CanvasSize = UDim2.new(0, 0, 0, count * 52)
end

Players.PlayerAdded:Connect(function(player)
    if listFrame.Visible then buildPlayerList() end
    if espEnabled then
        player.CharacterAdded:Connect(function()
            task.wait(0.5)
            if espEnabled then setupESPForPlayer(player) end
        end)
    end
end)

Players.PlayerRemoving:Connect(function(p)
    removeESPFromPlayer(p)
    if p == followTarget then
        followTarget = nil
        followEnabled = false
        stopFollow()
        Rayfield:Notify({
            Title = "Auto Follow",
            Content = "Follow target left the server.",
            Duration = 4,
            Image = 4483362458,
        })
    end
    if listFrame.Visible then buildPlayerList() end
end)

local MainTab = Window:CreateTab("Bat Spam", 73344818906607)
local MovementTab = Window:CreateTab("Movement", 112970412232530)
local ESPTab = Window:CreateTab("ESP", 140545092050303)
local AntiAdminTab = Window:CreateTab("Anti Admin", 119988957645009)

MainTab:CreateToggle({
    Name = "Auto Spam",
    CurrentValue = false,
    Flag = "AutoSpamFlag",
    Callback = function(Value)
        isSpamming = Value
        if Value then
            startSpam()
            game:GetService("StarterGui"):SetCore("SendNotification", {
                Title = "Zika Hub",
                Text = "Use starstruck bat",
                Duration = 5,
            })
        else
            stopSpam()
        end
    end,
})

MainTab:CreateButton({
    Name = "Re-detect Starstruck Bat",
    Callback = function()
        checkStarstruckBat()
    end,
})

MovementTab:CreateToggle({
    Name = "Infinite Jump",
    CurrentValue = false,
    Flag = "InfiniteJumpFlag",
    Callback = function(Value)
        infiniteJumpEnabled = Value
    end,
})

MovementTab:CreateSlider({
    Name = "Walk Speed",
    Range = {0, 500},
    Increment = 1,
    Suffix = "sp",
    CurrentValue = 16,
    Flag = "WalkSpeedFlag",
    Callback = function(Value)
        loopSpeedValue = Value
        if not loopSpeedEnabled then
            applySpeed(Value)
        end
    end,
})

MovementTab:CreateToggle({
    Name = "Loop Speed",
    CurrentValue = false,
    Flag = "LoopSpeedFlag",
    Callback = function(Value)
        loopSpeedEnabled = Value
        if Value then
            startLoopSpeed()
            Rayfield:Notify({
                Title = "Loop Speed",
                Content = "Loop Speed enabled at " .. loopSpeedValue .. " sp.",
                Duration = 3,
                Image = 4483362458,
            })
        else
            stopLoopSpeed()
            Rayfield:Notify({
                Title = "Loop Speed",
                Content = "Loop Speed disabled. Speed reset to 16.",
                Duration = 3,
                Image = 4483362458,
            })
        end
    end,
})

MovementTab:CreateDivider()

MovementTab:CreateToggle({
    Name = "Auto Follow",
    CurrentValue = false,
    Flag = "AutoFollowFlag",
    Callback = function(Value)
        followEnabled = Value
        if Value then
            if not followTarget then
                buildPlayerList()
                listFrame.Visible = true
                Rayfield:Notify({
                    Title = "Auto Follow",
                    Content = "Select a player to follow from the list.",
                    Duration = 4,
                    Image = 4483362458,
                })
            else
                startFollow()
            end
        else
            stopFollow()
        end
    end,
})

MovementTab:CreateSlider({
    Name = "Follow Distance",
    Range = {1, 50},
    Increment = 1,
    Suffix = "st",
    CurrentValue = 5,
    Flag = "FollowDistFlag",
    Callback = function(Value)
        followDistance = Value
    end,
})

MovementTab:CreateButton({
    Name = "Select Follow Target",
    Callback = function()
        buildPlayerList()
        listFrame.Visible = true
    end,
})

MovementTab:CreateButton({
    Name = "Clear Follow Target",
    Callback = function()
        followTarget = nil
        stopFollow()
        Rayfield:Notify({
            Title = "Auto Follow",
            Content = "Follow target cleared.",
            Duration = 3,
            Image = 4483362458,
        })
    end,
})

MovementTab:CreateDivider()

MovementTab:CreateToggle({
    Name = "Anti Void",
    CurrentValue = false,
    Flag = "AntiVoidFlag",
    Callback = function(Value)
        antiVoidEnabled = Value
        if Value then
            startAntiVoid()
            Rayfield:Notify({
                Title = "Anti Void",
                Content = "Anti Void enabled.",
                Duration = 3,
                Image = 4483362458,
            })
        else
            stopAntiVoid()
            Rayfield:Notify({
                Title = "Anti Void",
                Content = "Anti Void disabled.",
                Duration = 3,
                Image = 4483362458,
            })
        end
    end,
})

MovementTab:CreateInput({
    Name = "Void Y Level",
    PlaceholderText = "Default: 30",
    RemoveTextAfterFocusLost = false,
    Flag = "AntiVoidYFlag",
    Callback = function(Value)
        local num = tonumber(Value)
        if num then
            ANTI_VOID_Y = num
            if antiVoidPart then
                antiVoidPart.Position = Vector3.new(antiVoidPart.Position.X, ANTI_VOID_Y - 2, antiVoidPart.Position.Z)
            end
        end
    end,
})

ESPTab:CreateToggle({
    Name = "ESP",
    CurrentValue = false,
    Flag = "ESPFlag",
    Callback = function(Value)
        espEnabled = Value
        if Value then
            startESP()
            Rayfield:Notify({
                Title = "ESP",
                Content = "ESP enabled.",
                Duration = 3,
                Image = 4483362458,
            })
        else
            stopESP()
            Rayfield:Notify({
                Title = "ESP",
                Content = "ESP disabled.",
                Duration = 3,
                Image = 4483362458,
            })
        end
    end,
})

ESPTab:CreateColorPicker({
    Name = "ESP Color",
    Color = Color3.fromRGB(255, 50, 50),
    Flag = "ESPColorFlag",
    Callback = function(Value)
        espColor = Value
    end,
})

AntiAdminTab:CreateLabel("Roles: Owner / Admin / Dev")
AntiAdminTab:CreateLabel("Auto-alerts and hops when staff joins!")

checkForAdmins()
checkStarstruckBat()
Rayfield:LoadConfiguration()
🎮 Similar Scripts
💬 Comments (0)
Login to post a comment
No comments yet. Be the first!
Script Info
Game 🏏 Wacky Bats 💥
TypeKeyless
Authoralexriderr
Views135
Likes0
PublishedJul 25, 2026
🎮 Play Game on Roblox
🕐 Recent Scripts
Monochrome script keyless | esp: off/on, refresh code
Monochrome script keyless | esp: off/on, refresh code
MONOCHROME👁️ • 👁 6
Keyless
Pull an egg script keyless | auto train, auto dumbells
Pull an egg script keyless | auto train, auto dumbells
Pull An Egg • 👁 7
Keyless
Anime dice script keyless | auto roll, auto collect money,
Anime dice script keyless | auto roll, auto collect money,
Anime Dice • 👁 9
Keyless
The veil [BETA] script keyless | auto farm npcs, auto equip weapon
The veil [BETA] script keyless | auto farm npcs, auto equip weapon
The Veil • 👁 10
Keyless
Merge an SCP script keyless | auto merge, auto rebirth
Merge an SCP script keyless | auto merge, auto rebirth
Merge an SCP • 👁 12
Keyless