Opening an egg is only part of the run: you still need to get the animal back to your base. These two Break and Steal an Egg scripts require no key and offer different approaches: faster manual movement with Anti Knockback from ShrakBlox, or an automated breaking, pickup, and banking loop from Ouroboros. Both worked on our PC and mobile test setups.
Test setup: PC with Potassium and Samsung S25 with Delta · October 9, 2026.
Scripts and test notes
Speed + Anti Knockback
Tested on PC with Potassium and Samsung S25 with Delta on October 9, 2026. Choose this script if you want to collect animals yourself and move faster. During our test, the speed slider increased movement speed without the game teleporting us back to where we started running. The speed change kept working while we carried an animal from a broken egg. Anti Knockback also worked: other players could no longer knock us back with their bats during the test.
- Adjustable Speed (16–400)
- Movement Anti-Cheat Bypass
- Anti Knockback
Details
Functions
- Adjustable Speed (16–400)
- Movement Anti-Cheat Bypass
- Anti Knockback
Change history
- – Added to page!
Script code
local SPEED = 200
local REFRESH_INTERVAL = 0.1
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player = Players.LocalPlayer
assert(player, "Run this script on the client")
assert(game.PlaceId == 114326934417838, "Wrong game")
local modules = player:WaitForChild("PlayerScripts"):WaitForChild("Client"):WaitForChild("Modules")
local controllers = modules.Parent:WaitForChild("Controllers")
local movementLock = require(modules:WaitForChild("MovementLock"))
local slowMode = require(controllers:WaitForChild("SlowModeController"))
local movementRemote = ReplicatedStorage:WaitForChild("SlowModeRemote", 10)
assert(movementRemote and movementRemote:IsA("RemoteEvent"), "Movement remote unavailable")
local environment = getgenv()
local previous = environment.EggSpeedController
if previous and type(previous.Destroy) == "function" then
previous:Destroy()
end
local previousGui = environment.EggSpeedGui
if previousGui and type(previousGui.Destroy) == "function" then
previousGui:Destroy()
end
local antiKnockback
local function startAntiKnockback()
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
assert(player, "Run this script on the client")
assert(game.PlaceId == 114326934417838, "Wrong game")
assert(type(getconnections) == "function", "getconnections is unavailable")
assert(type(getfenv) == "function", "getfenv is unavailable")
local remote = ReplicatedStorage:WaitForChild("CatchFlingRemote", 10)
assert(remote and remote:IsA("RemoteEvent"), "CatchFlingRemote is unavailable")
local environment = getgenv()
local previous = environment.EggAntiKnockbackController
if previous and type(previous.Destroy) == "function" then
previous:Destroy()
end
local controller = { Enabled = false, BlockedFlings = 0 }
local intercepted = {}
local connections = {}
local destroyed = false
local suppressUntil = 0
local lastScan = 0
local function stopKnockback()
local character = player.Character
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if not humanoid or humanoid.Health <= 0 then
return
end
for _, part in ipairs(character:GetChildren()) do
if part:IsA("BasePart") and not part.Anchored then
part.AssemblyLinearVelocity = Vector3.zero
part.AssemblyAngularVelocity = Vector3.zero
end
end
end
local function restoreListeners()
for _, entry in ipairs(intercepted) do
entry.Replacement:Disconnect()
pcall(function()
entry.Original:Enable()
end)
end
table.clear(intercepted)
end
local function isFlingListener(listener)
local ok, matches = pcall(function()
if not listener.Enabled or type(listener.Function) ~= "function" then
return false
end
local owner = getfenv(listener.Function).script
return typeof(owner) == "Instance" and owner.Name == "CatchFlingController"
end)
return ok and matches
end
local function interceptListeners()
for _, listener in ipairs(getconnections(remote.OnClientEvent)) do
if isFlingListener(listener) then
local original = listener.Function
local replacement = remote.OnClientEvent:Connect(function(action, ...)
if destroyed or not controller.Enabled then
return
end
if action == "fling" then
controller.BlockedFlings = controller.BlockedFlings + 1
suppressUntil = os.clock() + 0.35
stopKnockback()
return
end
if action == "release" then
suppressUntil = 0
end
original(action, ...)
end)
local ok, err = pcall(function()
listener:Disable()
end)
if not ok then
replacement:Disconnect()
error(err)
end
table.insert(intercepted, {
Original = listener,
Callback = original,
Replacement = replacement,
})
end
end
end
function controller:SetEnabled(enabled)
if destroyed then
return
end
enabled = enabled == true
if self.Enabled == enabled then
return
end
suppressUntil = 0
if not enabled then
self.Enabled = false
restoreListeners()
return
end
local ok, err = pcall(interceptListeners)
if not ok or #intercepted == 0 then
restoreListeners()
error(err or "CatchFlingController listener not found; wait for the game to load")
end
self.Enabled = true
lastScan = os.clock()
local character = player.Character
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if humanoid and humanoid.Health > 0
and humanoid:GetState() == Enum.HumanoidStateType.Physics then
for _, entry in ipairs(intercepted) do
pcall(entry.Callback, "release")
end
stopKnockback()
end
end
function controller:Destroy()
if destroyed then
return
end
destroyed = true
self.Enabled = false
suppressUntil = 0
for _, connection in ipairs(connections) do
connection:Disconnect()
end
restoreListeners()
if environment.EggAntiKnockbackController == self then
environment.EggAntiKnockbackController = nil
end
end
local function step()
if controller.Enabled and os.clock() < suppressUntil then
stopKnockback()
end
end
controller:SetEnabled(true)
table.insert(connections, RunService.PreSimulation:Connect(step))
table.insert(connections, RunService.PostSimulation:Connect(step))
table.insert(connections, player.CharacterAdded:Connect(function()
suppressUntil = 0
end))
table.insert(connections, RunService.Heartbeat:Connect(function()
if not controller.Enabled or os.clock() - lastScan < 1 then
return
end
lastScan = os.clock()
local ok, err = pcall(interceptListeners)
if not ok then
warn("Anti-knockback listener update failed: " .. tostring(err))
end
end))
environment.EggAntiKnockbackController = controller
return controller
end
local controller = { Speed = SPEED, Enabled = false }
local originalMode = slowMode.IsOn()
local currentMode = originalMode
local refreshing = false
local lastRefresh = -math.huge
local connection
local lastRoot
local destroyed = false
local raycastParams = RaycastParams.new()
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
raycastParams.IgnoreWater = true
environment.EggSpeedController = controller
local function restoreMode()
if refreshing then
refreshing = false
currentMode = originalMode
movementRemote:FireServer(originalMode)
lastRefresh = -math.huge
end
end
function controller:SetSpeed(value)
assert(type(value) == "number" and value > 0 and value < math.huge,
"Speed must be a positive finite number")
self.Speed = value
end
local function stopVelocity()
if lastRoot and lastRoot.Parent and not lastRoot.Anchored then
local velocity = lastRoot.AssemblyLinearVelocity
lastRoot.AssemblyLinearVelocity = Vector3.new(0, velocity.Y, 0)
end
lastRoot = nil
end
function controller:SetEnabled(value)
if destroyed then
return
end
self.Enabled = value == true
if not self.Enabled then
restoreMode()
stopVelocity()
end
end
function controller:Destroy()
if destroyed then
return
end
destroyed = true
if connection then
connection:Disconnect()
end
restoreMode()
stopVelocity()
if environment.EggSpeedController == self then
environment.EggSpeedController = nil
end
end
connection = RunService.PreSimulation:Connect(function()
if not controller.Enabled then
return
end
local character = player.Character
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
local root = humanoid and humanoid.RootPart
if not root or humanoid.Health <= 0 or root.Anchored
or humanoid.Sit or humanoid.PlatformStand or movementLock.IsLocked()
or humanoid:GetState() == Enum.HumanoidStateType.Physics then
restoreMode()
return
end
local speed = controller.Speed
if type(speed) ~= "number" or speed <= 0 or speed >= math.huge or speed ~= speed then
restoreMode()
return
end
local direction = humanoid.MoveDirection
if direction.Magnitude > 0.01 then
local now = os.clock()
if now - lastRefresh >= REFRESH_INTERVAL then
refreshing = true
currentMode = not currentMode
movementRemote:FireServer(currentMode)
lastRefresh = now
end
else
restoreMode()
end
local floorVelocity = Vector3.zero
if humanoid.FloorMaterial ~= Enum.Material.Air then
raycastParams.FilterDescendantsInstances = { character }
local distance = humanoid.HipHeight + root.Size.Y * 0.5 + 2
local floor = workspace:Raycast(root.Position, Vector3.new(0, -distance, 0), raycastParams)
if floor and floor.Instance:IsA("BasePart") then
floorVelocity = floor.Instance:GetVelocityAtPosition(floor.Position)
end
end
local velocity = root.AssemblyLinearVelocity
root.AssemblyLinearVelocity = Vector3.new(
direction.X * speed + floorVelocity.X,
velocity.Y,
direction.Z * speed + floorVelocity.Z
)
lastRoot = root
end)
local UserInputService = game:GetService("UserInputService")
local MIN_SPEED, MAX_SPEED = 16, 400
local connections = {}
local guiDestroyed = false
local guiController = {}
local function connect(signal, callback)
local listener = signal:Connect(callback)
table.insert(connections, listener)
return listener
end
local function create(className, properties, parent)
local instance = Instance.new(className)
for key, value in pairs(properties) do
instance[key] = value
end
instance.Parent = parent
return instance
end
local function corner(parent, radius)
create("UICorner", { CornerRadius = UDim.new(0, radius) }, parent)
end
local colors = {
Panel = Color3.fromRGB(8, 8, 8),
Surface = Color3.fromRGB(16, 16, 16),
Border = Color3.fromRGB(80, 80, 80),
Text = Color3.fromRGB(235, 235, 235),
Muted = Color3.fromRGB(145, 145, 145),
Accent = Color3.fromRGB(170, 170, 170),
}
local screen = create("ScreenGui", {
Name = "EggSpeedGui",
ResetOnSpawn = false,
ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
DisplayOrder = 100,
}, player:WaitForChild("PlayerGui"))
local panel = create("Frame", {
Name = "Panel",
Size = UDim2.fromOffset(330, 148),
AnchorPoint = Vector2.new(0.5, 0.5),
Position = UDim2.fromScale(0.5, 0.5),
BackgroundColor3 = colors.Panel,
BorderSizePixel = 0,
Active = true,
}, screen)
corner(panel, 6)
create("UIStroke", { Color = colors.Border, Thickness = 1 }, panel)
local header = create("Frame", {
Name = "DragHeader",
Size = UDim2.new(1, -54, 0, 48),
BackgroundTransparency = 1,
Active = true,
}, panel)
create("TextLabel", {
Size = UDim2.new(1, -20, 1, 0),
Position = UDim2.fromOffset(20, 0),
BackgroundTransparency = 1,
Text = "SPEED",
Font = Enum.Font.GothamBold,
TextSize = 14,
TextColor3 = colors.Text,
TextXAlignment = Enum.TextXAlignment.Left,
}, header)
local close = create("TextButton", {
Name = "Close",
Size = UDim2.fromOffset(24, 24),
Position = UDim2.new(1, -44, 0, 12),
BackgroundTransparency = 1,
Text = "×",
Font = Enum.Font.Gotham,
TextSize = 22,
TextColor3 = colors.Muted,
AutoButtonColor = false,
}, panel)
create("Frame", {
Size = UDim2.new(1, -40, 0, 1),
Position = UDim2.fromOffset(20, 48),
BackgroundColor3 = colors.Border,
BorderSizePixel = 0,
}, panel)
local controlRow = create("Frame", {
Name = "ControlRow",
Size = UDim2.new(1, -40, 0, 32),
Position = UDim2.fromOffset(20, 68),
BackgroundTransparency = 1,
}, panel)
create("UIListLayout", {
FillDirection = Enum.FillDirection.Horizontal,
VerticalAlignment = Enum.VerticalAlignment.Center,
SortOrder = Enum.SortOrder.LayoutOrder,
Padding = UDim.new(0, 16),
}, controlRow)
local slider = create("TextButton", {
Name = "Slider",
LayoutOrder = 2,
Size = UDim2.new(1, -88, 0, 32),
BackgroundTransparency = 1,
Text = "",
AutoButtonColor = false,
}, controlRow)
local track = create("Frame", {
AnchorPoint = Vector2.new(0, 0.5),
Size = UDim2.new(1, -12, 0, 4),
Position = UDim2.new(0, 6, 0.5, 0),
BackgroundColor3 = colors.Surface,
BorderSizePixel = 0,
Active = false,
}, slider)
corner(track, 2)
create("UIStroke", { Color = colors.Border, Thickness = 1 }, track)
local fill = create("Frame", {
Size = UDim2.fromScale(0, 1),
BackgroundColor3 = colors.Accent,
BorderSizePixel = 0,
}, track)
corner(fill, 2)
local thumb = create("Frame", {
AnchorPoint = Vector2.new(0.5, 0.5),
Size = UDim2.fromOffset(12, 16),
Position = UDim2.fromScale(0, 0.5),
BackgroundColor3 = colors.Surface,
BorderSizePixel = 0,
ZIndex = 2,
}, track)
corner(thumb, 3)
create("UIStroke", { Color = colors.Accent, Thickness = 1 }, thumb)
local toggle = create("TextButton", {
Name = "Toggle",
LayoutOrder = 1,
Size = UDim2.fromOffset(72, 32),
BackgroundColor3 = colors.Surface,
BorderSizePixel = 0,
Text = "OFF",
Font = Enum.Font.GothamBold,
TextSize = 12,
TextColor3 = colors.Muted,
AutoButtonColor = true,
}, controlRow)
corner(toggle, 4)
local toggleStroke = create("UIStroke", {
Color = colors.Border,
Thickness = 1,
ApplyStrokeMode = Enum.ApplyStrokeMode.Border,
}, toggle)
create("TextLabel", {
Name = "DiscordLink",
AnchorPoint = Vector2.new(0.5, 1),
Size = UDim2.new(1, -40, 0, 18),
Position = UDim2.new(0.5, 0, 1, -16),
BackgroundTransparency = 1,
Text = "https://discord.gg/hEbP6rWKy2",
Font = Enum.Font.Gotham,
TextSize = 12,
TextColor3 = colors.Muted,
TextXAlignment = Enum.TextXAlignment.Center,
}, panel)
local function updateSlider(value)
value = math.clamp(math.floor(value + 0.5), MIN_SPEED, MAX_SPEED)
controller:SetSpeed(value)
local fraction = (value - MIN_SPEED) / (MAX_SPEED - MIN_SPEED)
fill.Size = UDim2.fromScale(fraction, 1)
thumb.Position = UDim2.fromScale(fraction, 0.5)
end
local function setEnabled(enabled)
controller:SetEnabled(enabled)
toggle.Text = controller.Enabled and "ON" or "OFF"
toggle.BackgroundColor3 = colors.Surface
toggle.TextColor3 = controller.Enabled and colors.Text or colors.Muted
toggleStroke.Color = controller.Enabled and colors.Accent or colors.Border
end
function guiController:Destroy()
if guiDestroyed then
return
end
guiDestroyed = true
for _, listener in ipairs(connections) do
listener:Disconnect()
end
controller:Destroy()
if antiKnockback then
antiKnockback:Destroy()
end
screen:Destroy()
if environment.EggSpeedGui == self then
environment.EggSpeedGui = nil
end
end
environment.EggSpeedGui = guiController
connect(close.Activated, function()
guiController:Destroy()
end)
connect(screen.Destroying, function()
guiController:Destroy()
end)
connect(toggle.Activated, function()
setEnabled(not controller.Enabled)
end)
local sliderInput
local draggingSlider = false
local draggingPanel = false
local panelInput
local dragStart
local panelStart
local function sliderAt(position)
if track.AbsoluteSize.X > 0 then
local fraction = math.clamp(
(position.X - track.AbsolutePosition.X) / track.AbsoluteSize.X, 0, 1
)
updateSlider(MIN_SPEED + fraction * (MAX_SPEED - MIN_SPEED))
end
end
connect(slider.InputBegan, function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
draggingSlider = true
sliderInput = input
sliderAt(input.Position)
end
end)
connect(header.InputBegan, function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
draggingPanel = true
panelInput = input
dragStart = input.Position
panelStart = panel.Position
end
end)
connect(UserInputService.InputChanged, function(input)
local mouseMoved = input.UserInputType == Enum.UserInputType.MouseMovement
if draggingSlider and (input == sliderInput
or (sliderInput.UserInputType == Enum.UserInputType.MouseButton1 and mouseMoved)) then
sliderAt(input.Position)
end
if draggingPanel and (input == panelInput
or (panelInput.UserInputType == Enum.UserInputType.MouseButton1 and mouseMoved)) then
local delta = input.Position - dragStart
local viewport = screen.AbsoluteSize
local size = panel.AbsoluteSize
local x = panelStart.X.Scale * viewport.X + panelStart.X.Offset + delta.X
local y = panelStart.Y.Scale * viewport.Y + panelStart.Y.Offset + delta.Y
x = math.clamp(x, size.X * 0.5, math.max(size.X * 0.5, viewport.X - size.X * 0.5))
y = math.clamp(y, size.Y * 0.5, math.max(size.Y * 0.5, viewport.Y - size.Y * 0.5))
panel.Position = UDim2.fromOffset(x, y)
end
end)
connect(UserInputService.InputEnded, function(input)
if input == sliderInput then
draggingSlider = false
sliderInput = nil
end
if input == panelInput then
draggingPanel = false
panelInput = nil
end
end)
updateSlider(SPEED)
setEnabled(false)
local ok, result = pcall(startAntiKnockback)
if not ok then
guiController:Destroy()
error(result, 0)
end
antiKnockback = result
guiController.AntiKnockback = antiKnockback
return guiController
Ouroboros Hub
Tested on PC with Potassium and Samsung S25 with Delta on October 9, 2026. Auto Break moved smoothly from egg to egg and only broke eggs in the zones and rarities we selected. Auto Pick Up & Bank teleported to animals released by eggs we or other players had broken, collected them, and teleported directly to our base. Pickup and banking took priority over breaking eggs. After banking, the script returned to the point it had left and continued breaking eggs. Trail and pickaxe purchases, bat claiming and best-bat selection, pen and treadmill upgrades also worked. Auto Merge combined duplicate animals into eggs, and its placement option placed those eggs for us. Egg ESP and its rarity filters worked, although they added little to our automated route. The controls in the Player section worked, and the Discord webhook sent information as expected.
- Auto Break
- Rarity Filter
- Zone Filter
- +46 more
Details
Functions
- Auto Break
- Rarity Filter
- Zone Filter
- Auto Titanic Egg
- Auto Swing
- Auto Pick Up & Bank
- Target Priority
- Animal Filter
- Mutation Filter
- Minimum KG
- Auto Equip Best
- Auto Claim Index
- Auto Place Eggs
- Auto Hatch
- Auto Merge
- Merge Mode
- Selected Animals
- Only Merge Min KG
- Only Merge Below $/s
- Auto Sell
- Auto Sell Eggs
- Sell Below $/s
- Auto Buy Trails
- Auto Buy Pickaxes
- Auto Buy Demon Shop
- Demon Shop Items
- Auto Claim Bats
- Auto Equip Best Bat
- Auto Upgrade Pen
- Auto Upgrade Treadmill
- Auto Go on Treadmill
- Egg ESP
- Guard ESP
- Prioritize Titanic Egg
- Titanic Egg Tracker
- WalkSpeed
- WalkSpeed Amount
- Infinite Jump
- NoClip
- Instant ProximityPrompt
- Fly
- Fly Speed
- No Gameplay Paused
- Auto Reconnect on Kick
- Disable 3D Rendering
- Ultra Boost FPS
- No Effects
- Hide UI on Start
- Discord Webhook
Change history
- – Added to page!
Script code
loadstring(game:HttpGet("https://raw.githubusercontent.com/joustingmatch/Ouroboros/main/loader.lua"))()
This collection focuses on NO KEY scripts. We chose not to include key-system alternatives because, in our editorial assessment, their lengthy key processes do not offer enough additional value over the keyless options tested here.
