Description
ONLY TESTED ON PC/REAL executor. SORRY ABOUT THAT MOBILE - Auto Play Shuffle - Auto Pick Cup {use solver} - Auto Place Egg - Auto Collect Animal Cash - Auto Pet Egg - Auto Open Hatched Eggs - Auto Open Lucky Block - Auto Equip Best Animals - Auto Place Animal - Auto Level Up Animals - Auto Buy Next Cup - Auto Equip Best Cup - Auto Buy Next Dealer - Auto Equip Best Dealer - Auto Upgrade {Tourist, Base, Dealer, MovementSpeed} - Auto Use Potion {Luck, Cash} - Auto Rebirth - Auto Claim Quest - Sell All Animals - Claim Offline Earnings - Claim Daily Reward - Claim Group Reward - Claim Free Item - Claim Playtime Reward - Redeem Code
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. Deal with caution.
--
-- Stay safe:
-- • Never log in on unofficial Roblox sites or lookalike domains.
-- • Real Roblox links use roblox.com (check the .com ending).
-- • Treat fake Roblox login / "claim reward" pages as phishing.
-- [[ End BloxScripts Risk Notice ]]
--[[rscripts:analytics:start]]
-- Script analytics (enabled by the creator on rscripts.net).
-- Runs in its own thread and cannot affect the script below.
task.spawn(function()
pcall(function()
loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6ab97405274757e7fd7c80c4"))()
end)
end)
--[[rscripts:analytics:end]]
-- Shuffle an Egg | like my rscripts if it works. @hidevin
-- PlaceId lock: 79226825467411
if game.PlaceId ~= 79226825467411 then
warn("[ShuffleEgg] Wrong game. Expected 79226825467411, got " .. tostring(game.PlaceId))
return
end
local repo = "https://raw.githubusercontent.com/joustingmatch/ObsidianUltra/main/"
local Library = loadstring(game:HttpGet(repo .. "Library.lua"))()
local ThemeManager = loadstring(game:HttpGet(repo .. "addons/ThemeManager.lua"))()
local SaveManager = loadstring(game:HttpGet(repo .. "addons/SaveManager.lua"))()
local Options = Library.Options
local Toggles = Library.Toggles
local Labels = Library.Labels
-- Reload-safe liveness: under live-reload STATE.alive() turns false for replaced
-- copies, so stale loops exit instead of stacking forever next to the new copy.
local function _alive()
if type(STATE) == "table" and type(STATE.alive) == "function" then
local ok, v = pcall(STATE.alive)
return ok and v == true
end
return not Library.Unloaded
end
Library.ForceCheckbox = false
Library.ShowToggleFrameInKeybinds = true
-- ================= STATE / HELPERS =================
local Players = game:GetService("Players")
local RS = game:GetService("ReplicatedStorage")
local TeleportService = game:GetService("TeleportService")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local LocalPlayer = Players.LocalPlayer
local Remotes = RS:WaitForChild("Remotes")
-- Passive inbound tap: record server sequence + result as player attributes (no hooks).
pcall(function()
Remotes.GameHandShake.OnClientEvent:Connect(function(a, b)
if a == "ShuffleSequence" and type(b) == "table" and type(b.Sequence) == "table" then
pcall(function() LocalPlayer:SetAttribute("SHU_Seq", table.concat(b.Sequence, "+")) end)
elseif a == "RevealResult" and type(b) == "table" then
pcall(function()
LocalPlayer:SetAttribute("SHU_Correct", tonumber(b.CorrectCup) or 0)
LocalPlayer:SetAttribute("SHU_Won", b.Won == true)
end)
end
end)
end)
local RED = "#ff3232"
local GREEN = "#60d876"
local ORANGE = "#ffb020"
local function dot(color, text)
return string.format('<font color="%s">● %s</font>', color, text)
end
local function setStatus(idx, color, text)
pcall(function()
if Labels[idx] then Labels[idx]:SetText(dot(color, text)) end
end)
end
local function money()
local ok, v = pcall(function() return LocalPlayer.leaderstats.Money.Value end)
return ok and v or 0
end
local function getMine()
local ok, res = pcall(function()
for _, m in ipairs(workspace:FindFirstChild("Base"):GetChildren()) do
if m:GetAttribute("Owner") == LocalPlayer.Name then return m end
end
return nil
end)
return ok and res or nil
end
local function myAnimals()
local mine = getMine()
if not mine then return {} end
local f = mine:FindFirstChild("Animals")
return f and f:GetChildren() or {}
end
local function myEggs()
local mine = getMine()
if not mine then return {} end
local f = mine:FindFirstChild("Eggs")
return f and f:GetChildren() or {}
end
local EGG_IDS = {"basic_egg","frogs_egg","bats_egg","tigers_egg","trex_egg","snails_egg","capybara_egg","osctrich_egg","snake_egg","sphinx_egg","mouse_egg","polarbear_egg","seal_egg","gorilla_egg","mamut_egg","talon_egg","flame_egg","angelic_egg","unicorn_egg","dragon_egg"}
local CUP_LADDER = {"Red","Blue","Green","Orange","Pink Studs","Orange Studs","Babushka","Nuclear","Radioactive","Jester","Weight","Prestige Weight"}
local DEALER_LADDER = {"Default","Devil","Angel","Galaxy","Golden","Rainbow","Candy","Glitch","Cybrpg","Sea","Cosmic"}
local CUP_IDS = CUP_LADDER
local DEALER_IDS = DEALER_LADDER
local PICK_MAP = {Left = 1, Middle = 2, Right = 3}
local function eggPrice(id)
local ok, cfg = pcall(function() return require(RS.Configs.EggsConfig) end)
if ok and cfg then
local got = nil
pcall(function()
if cfg.Get then got = cfg.Get(id) end
if not got and cfg.CONFIG then got = cfg.CONFIG[id] end
end)
if got and got.price then return got.price end
end
return 100
end
-- ================= WINDOW =================
local Window = Library:CreateWindow({
Title = "",
Footer = "Shuffle an Egg | like my rscripts if it works. @hidevin",
Icon = "ghost",
NotifySide = "Right",
ShowCustomCursor = true,
Center = true,
AutoShow = true,
Resizable = true,
})
local Tabs = {
Info = Window:AddTab("Info", "info"),
Main = Window:AddTab("Main", "gamepad-2"),
Farming = Window:AddTab("Farming", "dices"),
Inventory = Window:AddTab("Inventory", "package"),
Rebirth = Window:AddTab("Rebirth", "refresh-cw"),
Misc = Window:AddTab("Misc", "gift"),
Player = Window:AddTab("Player", "person-standing"),
Settings = Window:AddTab("Settings", "settings"),
}
-- ================= INFO TAB =================
local UserBox = Tabs.Info:AddLeftGroupbox("User", "user")
UserBox:AddLabel("User - " .. LocalPlayer.Name, true)
UserBox:AddLabel("UserId: " .. tostring(LocalPlayer.UserId), true)
UserBox:AddLabel("Executor: Real", true)
UserBox:AddButton({Text = "Copy Username", Func = function()
pcall(function() (setclipboard or toclipboard)(LocalPlayer.Name) end)
Library:Notify({Title = "Copied", Description = "Username copied", Time = 3, Type = "Success"})
end})
UserBox:AddButton({Text = "Copy Profile Link", Func = function()
pcall(function() (setclipboard or toclipboard)("https://www.roblox.com/users/" .. LocalPlayer.UserId) end)
Library:Notify({Title = "Copied", Description = "Profile link copied", Time = 3, Type = "Success"})
end})
local SessionBox = Tabs.Info:AddRightGroupbox("Session", "signal")
SessionBox:AddLabel("Game: Shuffle an Egg", true)
SessionBox:AddLabel("Players: " .. #Players:GetPlayers(), true)
SessionBox:AddLabel("JobId: " .. string.sub(game.JobId, 1, 18) .. "...", true)
SessionBox:AddLabel("Ping: ...", true, "PingLabel")
SessionBox:AddButton({Text = "Rejoin Place", Func = function()
TeleportService:Teleport(game.PlaceId)
end})
SessionBox:AddButton({Text = "Copy Job ID", Func = function()
pcall(function() (setclipboard or toclipboard)(game.JobId) end)
end})
task.spawn(function()
while _alive() do
task.wait(5)
pcall(function()
local ping = game:GetService("Stats").Network.ServerStatsItem["Data Ping"]:GetValue()
if Labels.PingLabel then Labels.PingLabel:SetText("Ping: " .. math.floor(ping) .. " ms") end
end)
end
end)
-- ================= MAIN DASHBOARD (status mirror only) =================
local DashL = Tabs.Main:AddLeftGroupbox("Shuffle", "dices")
DashL:AddLabel("status", true, "StPlay")
DashL:AddLabel("status", true, "StPick")
DashL:AddLabel("status", true, "StCollect")
DashL:AddLabel("status", true, "StPet")
local DashR = Tabs.Main:AddRightGroupbox("Progress", "trending-up")
DashR:AddLabel("status", true, "StEggs")
DashR:AddLabel("status", true, "StLucky")
DashR:AddLabel("status", true, "StEquip")
DashR:AddLabel("status", true, "StUpg")
DashR:AddLabel("status", true, "StRebirth")
for _, s in ipairs({"StPlay","StPick","StCollect","StPet","StEggs","StLucky","StEquip","StUpg","StRebirth"}) do
setStatus(s, RED, "idle")
end
-- ================= FARMING TAB + SUBTABS =================
local SubShuffle = Tabs.Farming:AddSubTab("Shuffle", "dices")
local SubIncome = Tabs.Farming:AddSubTab("Income", "coins")
local SubEggs = Tabs.Farming:AddSubTab("Eggs", "egg")
local ShufPlay = SubShuffle:AddLeftGroupbox("Auto Shuffle", "play")
ShufPlay:AddLabel("idle", true, "LPlay")
ShufPlay:AddToggle("AutoPlay", {Text = "Auto Play Shuffle", Default = false})
ShufPlay:AddToggle("AutoPick", {Text = "Auto Pick Cup", Default = false})
ShufPlay:AddDropdown("PickCup", {Text = "Cup to pick", Values = {"Left","Middle","Right","Solver (perm math)"}, Default = "Solver (perm math)", Multi = false, Searchable = false, MaxVisibleDropdownItems = 4, Expandable = false})
ShufPlay:AddLabel("Server rolls the egg (SelectResult); client choice is ignored.", true)
local IncCol = SubIncome:AddLeftGroupbox("Cash", "coins")
IncCol:AddLabel("idle", true, "LCollect")
IncCol:AddToggle("AutoCollect", {Text = "Auto Collect Animal Cash", Default = false})
local IncPet = SubIncome:AddRightGroupbox("Petting", "heart")
IncPet:AddLabel("idle", true, "LPet")
IncPet:AddToggle("AutoPet", {Text = "Auto Pet Egg", Default = false})
local EggHatch = SubEggs:AddLeftGroupbox("Hatching", "egg")
EggHatch:AddLabel("idle", true, "LOpen")
EggHatch:AddToggle("AutoOpenEggs", {Text = "Auto Open Hatched Eggs", Default = false})
EggHatch:AddLabel("idle", true, "LPlaceEgg")
EggHatch:AddToggle("AutoPlaceEgg", {Text = "Auto Place Egg (tight grid)", Default = false})
EggHatch:AddDropdown("PlaceEggName", {Text = "Eggs to place", Values = EGG_IDS, Default = {"basic_egg"}, Multi = true, Searchable = true, SelectAllButtons = true, MaxVisibleDropdownItems = 8, Expandable = true})
local EggLucky = SubEggs:AddRightGroupbox("Lucky Block", "clover")
EggLucky:AddLabel("idle", true, "LLucky")
EggLucky:AddToggle("AutoLucky", {Text = "Auto Open Lucky Block", Default = false})
-- ================= INVENTORY TAB + SUBTABS =================
local SubAnimals = Tabs.Inventory:AddSubTab("Animals", "paw-print")
local SubCups = Tabs.Inventory:AddSubTab("Cups", "cup-soda")
local SubDealers = Tabs.Inventory:AddSubTab("Dealers", "users")
local SubUpg = Tabs.Inventory:AddSubTab("Upgrades", "trending-up")
local AnEq = SubAnimals:AddLeftGroupbox("Equipment", "swords")
AnEq:AddLabel("idle", true, "LEquip")
AnEq:AddToggle("AutoEquipBest", {Text = "Auto Equip Best Animals", Default = false})
AnEq:AddToggle("AutoPlace", {Text = "Auto Place Animal", Default = false})
local AnLvl = SubAnimals:AddRightGroupbox("Levels", "arrow-up")
AnLvl:AddLabel("idle", true, "LLevel")
AnLvl:AddToggle("AutoLevelUp", {Text = "Auto Level Up Animals", Default = false})
local CupBuy = SubCups:AddLeftGroupbox("Buy Cup", "shopping-cart")
CupBuy:AddLabel("idle", true, "LBuyCup")
CupBuy:AddLabel("Buys next unowned cup up the luck ladder.", true)
CupBuy:AddToggle("AutoBuyCup", {Text = "Auto Buy Next Cup", Default = false})
local CupEq = SubCups:AddRightGroupbox("Equip Cup", "check")
CupEq:AddLabel("idle", true, "LEquipCup")
CupEq:AddToggle("AutoEquipCup", {Text = "Auto Equip Best Cup", Default = false})
local DeBuy = SubDealers:AddLeftGroupbox("Buy Dealer", "shopping-cart")
DeBuy:AddLabel("idle", true, "LBuyDealer")
DeBuy:AddLabel("Buys next unowned dealer up the luck ladder.", true)
DeBuy:AddToggle("AutoBuyDealer", {Text = "Auto Buy Next Dealer", Default = false})
local DeEq = SubDealers:AddRightGroupbox("Equip Dealer", "check")
DeEq:AddLabel("idle", true, "LEquipDealer")
DeEq:AddToggle("AutoEquipDealer", {Text = "Auto Equip Best Dealer", Default = false})
local UpBox = SubUpg:AddLeftGroupbox("Upgrades", "trending-up")
UpBox:AddLabel("idle", true, "LUpg")
UpBox:AddToggle("AutoUpgTourist", {Text = "Auto Upgrade Tourist", Default = false})
UpBox:AddToggle("AutoUpgBase", {Text = "Auto Upgrade Base", Default = false})
UpBox:AddToggle("AutoUpgDealer", {Text = "Auto Upgrade Dealer", Default = false})
UpBox:AddToggle("AutoUpgSpeed", {Text = "Auto Upgrade MovementSpeed", Default = false})
-- ================= REBIRTH TAB =================
local RbBox = Tabs.Rebirth:AddLeftGroupbox("Rebirth", "refresh-cw")
RbBox:AddLabel("idle", true, "LRebirth")
RbBox:AddToggle("AutoRebirth", {Text = "Auto Rebirth", Default = false})
local RbInfo = Tabs.Rebirth:AddRightGroupbox("Info", "info")
RbInfo:AddLabel("Cost scales per rebirth (50K first). Fires server-validated, one attempt per 8s.", true)
-- ================= MISC TAB + SUBTABS =================
local SubPot = Tabs.Misc:AddSubTab("Potions", "flask-conical")
local SubClaim = Tabs.Misc:AddSubTab("Claims", "gift")
local PotBox = SubPot:AddLeftGroupbox("Potions", "flask-conical")
PotBox:AddLabel("idle", true, "LPotion")
PotBox:AddToggle("AutoPotion", {Text = "Auto Use Potion", Default = false})
PotBox:AddDropdown("PotionKind", {Text = "Potion", Values = {"Luck","Cash"}, Default = "Luck", Multi = true, Searchable = false, MaxVisibleDropdownItems = 2, Expandable = false})
local ClAuto = SubClaim:AddLeftGroupbox("Auto Claim", "sparkles")
ClAuto:AddLabel("idle", true, "LQuest")
ClAuto:AddToggle("AutoQuest", {Text = "Auto Claim Quest", Default = false})
local ClBtn = SubClaim:AddRightGroupbox("One-Time Claims", "gift")
ClBtn:AddButton({Text = "Sell All Animals", Func = function()
pcall(function() Remotes.SellAnimal:FireServer("SellAllAnimals") end)
Library:Notify({Title = "Sell", Description = "Sell-all fired", Time = 3, Type = "Info"})
end})
ClBtn:AddButton({Text = "Claim Offline Earnings", Func = function()
pcall(function() Remotes.ClaimOffline:FireServer() end)
end})
ClBtn:AddButton({Text = "Claim Daily Reward", Func = function()
pcall(function() Remotes.DailyRewards:FireServer("Claim") end)
end})
ClBtn:AddButton({Text = "Claim Group Reward", Func = function()
pcall(function() Remotes.ClaimGroupReward:FireServer() end)
end})
ClBtn:AddButton({Text = "Claim Free Item", Func = function()
pcall(function() Remotes.ClaimFreeItem:FireServer() end)
end})
ClBtn:AddButton({Text = "Claim Playtime Reward", Func = function()
pcall(function() Remotes.FreeRewardPlayTime:FireServer() end)
end})
local CodeBox = SubClaim:AddLeftGroupbox("Code", "ticket")
CodeBox:AddInput("RedeemCode", {Text = "Code", Default = "", Placeholder = "enter code..."})
CodeBox:AddButton({Text = "Redeem Code", Func = function()
local c = Options.RedeemCode and Options.RedeemCode.Value or ""
if c ~= "" then pcall(function() Remotes.CodeRemote:FireServer(c) end) end
end})
-- ================= PLAYER TAB =================
local MovBox = Tabs.Player:AddLeftGroupbox("Movement", "footprints")
MovBox:AddToggle("WalkToggle", {Text = "WalkSpeed", Default = false})
MovBox:AddSlider("WalkAmount", {Text = "WalkSpeed Amount", Default = 32, Min = 16, Max = 250, Rounding = 0, Suffix = ""})
MovBox:AddToggle("InfJump", {Text = "Infinite Jump", Default = false})
MovBox:AddToggle("NoClip", {Text = "NoClip", Default = false})
MovBox:AddToggle("InstPrompt", {Text = "Instant ProximityPrompt", Default = false})
local FlyBox = Tabs.Player:AddRightGroupbox("Flight", "plane")
FlyBox:AddToggle("FlyToggle", {Text = "Fly", Default = false})
FlyBox:AddSlider("FlyAmount", {Text = "Fly Speed", Default = 60, Min = 10, Max = 400, Rounding = 0, Suffix = ""})
-- ================= SETTINGS TAB =================
local MenuBox = Tabs.Settings:AddLeftGroupbox("Menu", "wrench")
MenuBox:AddToggle("AntiAFK", {Text = "Anti-AFK", Default = true})
MenuBox:AddToggle("NoPause", {Text = "No Gameplay Paused", Default = true})
MenuBox:AddToggle("AutoRejoin", {Text = "Auto Reconnect on Kick", Default = false})
MenuBox:AddToggle("NoRender", {Text = "Disable 3D Rendering", Default = false})
MenuBox:AddToggle("FPSBoost", {Text = "FPS Boost", Default = false})
MenuBox:AddToggle("HideUI", {Text = "Hide UI On Start", Default = false})
MenuBox:AddLabel("Menu bind"):AddKeyPicker("MenuKeybind", {Default = "RightShift", Mode = "Toggle", NoUI = true, Text = "Menu keybind"})
local ScriptBox = Tabs.Settings:AddLeftGroupbox("Script", "scroll-text")
ScriptBox:AddButton({Text = "Unload Script", Func = function() Library:Unload() end})
-- ================= WIRING: automation loops =================
local function loopWhile(toggleIdx, interval, fn, labelIdx, dashIdx, runText)
Toggles[toggleIdx]:OnChanged(function()
local on = Toggles[toggleIdx].Value
if Labels[labelIdx] then setStatus(labelIdx, on and GREEN or RED, on and runText or "idle") end
if dashIdx then setStatus(dashIdx, on and GREEN or RED, on and runText or "idle") end
if not on then return end
task.spawn(function()
while Toggles[toggleIdx].Value and _alive() do
local ok, res = pcall(fn)
if not ok then
setStatus(labelIdx, ORANGE, "error, retrying")
if dashIdx then setStatus(dashIdx, ORANGE, "error, retrying") end
elseif res == "wait" then
setStatus(labelIdx, ORANGE, "standby")
if dashIdx then setStatus(dashIdx, ORANGE, "standby") end
else
setStatus(labelIdx, GREEN, runText)
if dashIdx then setStatus(dashIdx, GREEN, runText) end
end
task.wait(interval)
end
setStatus(labelIdx, RED, "idle")
if dashIdx then setStatus(dashIdx, RED, "idle") end
end)
end)
end
-- Auto Play: real dealer prompt flow (client anims only play on this path) + StartShuffle
local function promptPlay()
local fired = false
pcall(function()
local mine = getMine()
local dc = mine and mine:FindFirstChild("DealerContainer", true)
if dc then
for _, d in ipairs(dc:GetDescendants()) do
if d:IsA("ProximityPrompt") and d.ActionText == "Play Game!" then
fireproximityprompt(d)
fired = true
break
end
end
end
end)
return fired
end
loopWhile("AutoPlay", 8, function()
if LocalPlayer:GetAttribute("SHU_SolverBusy") then return "wait" end
pcall(function() Remotes.GameHandShake:FireServer("Play") end)
task.wait(0.4)
pcall(function() Remotes.GameHandShake:FireServer("Select") end)
task.wait(0.4)
pcall(function() Remotes.GameHandShake:FireServer("StartShuffle") end)
end, "LPlay", "StPlay", "shuffling")
-- Auto Pick: fixed spam (1s) or Solver (full tracked cycle)
Toggles.AutoPick:OnChanged(function()
local on = Toggles.AutoPick.Value
if not on then setStatus("LPlay", RED, "idle") setStatus("StPick", RED, "idle") return end
task.spawn(function()
local mode = Options.PickCup and Options.PickCup.Value or "Solver (perm math)"
if type(mode) == "table" then for k in pairs(mode) do mode = k break end end
if tostring(mode) ~= "Solver (perm math)" then
setStatus("LPlay", GREEN, "picking") setStatus("StPick", GREEN, "picking")
local n = PICK_MAP[tostring(mode)] or 2
while Toggles.AutoPick.Value and _alive() do
pcall(function() Remotes.GameHandShake:FireServer("PickCup", n) end)
task.wait(1)
end
else
setStatus("LPlay", GREEN, "solving") setStatus("StPick", GREEN, "solving")
while Toggles.AutoPick.Value and _alive() do
pcall(function() LocalPlayer:SetAttribute("SHU_SolverBusy", true) end)
local gBase = LocalPlayer.GamesPlayed.Value
local ok = pcall(function()
-- perm-solver: egg starts under Cup2, each anim is a fixed
-- slot swap (Shuffle1&2: 2<->3, Shuffle3&4: 1<->2, Shuffle5&6: 1<->3).
-- Compose over the server sequence, pick Cup2's final slot.
local PERMS = {
[1] = {1, 3, 2}, [2] = {1, 3, 2}, [3] = {2, 1, 3},
[4] = {2, 1, 3}, [5] = {3, 2, 1}, [6] = {3, 2, 1},
}
-- v2 recipe: own game via raw remotes (no menu/prompt flow)
pcall(function() LocalPlayer.Game.Selected.Value = "" end)
pcall(function() LocalPlayer:SetAttribute("SHU_Seq", "") end)
Remotes.GameHandShake:FireServer("Play")
task.wait(0.5)
Remotes.GameHandShake:FireServer("Select")
local tW = tick()
while LocalPlayer.Game.Selected.Value == "" and tick() - tW < 8 do task.wait(0.2) end
task.wait(1.2)
if LocalPlayer.Game.Selected.Value == "" then
pcall(function() Remotes.GameHandShake:FireServer("ExitGame") end)
return
end
Remotes.GameHandShake:FireServer("StartShuffle")
local tS, seq = tick(), ""
while tick() - tS < 15 do
task.wait(0.5)
if not Toggles.AutoPick.Value or not _alive() then return end
seq = LocalPlayer:GetAttribute("SHU_Seq") or ""
if seq ~= "" then break end
end
local pick = 2
if seq ~= "" then
local arr = {"Cup1", "Cup2", "Cup3"}
local valid = true
for token in string.gmatch(seq, "Shuffle(%d)") do
local perm = PERMS[tonumber(token)]
if not perm then valid = false break end
local n = {}
for i = 1, 3 do n[i] = arr[perm[i]] end
arr = n
end
if valid then
for i = 1, 3 do
if arr[i] == "Cup2" then pick = i break end
end
end
end
pcall(function()
LocalPlayer:SetAttribute("SHU_Pick", pick)
LocalPlayer:SetAttribute("SHU_DBG", "perm pick=" .. pick .. " seq=" .. tostring(seq))
end)
Remotes.GameHandShake:FireServer("PickCup", pick)
end)
pcall(function() LocalPlayer:SetAttribute("SHU_SolverBusy", false) end)
if not ok then
setStatus("LPlay", ORANGE, "error, retrying") setStatus("StPick", ORANGE, "error, retrying")
end
-- serialize: next game only after this one resolves (prevents orphan pile-up)
local t0 = tick()
local resolved = false
while Toggles.AutoPick.Value and _alive() and tick() - t0 < 60 do
if LocalPlayer.GamesPlayed.Value > gBase then resolved = true break end
task.wait(0.5)
end
if resolved then
task.wait(4)
else
pcall(function() Remotes.GameHandShake:FireServer("ExitGame") end)
task.wait(2)
end
end
end
pcall(function() LocalPlayer:SetAttribute("SHU_SolverBusy", false) end)
setStatus("LPlay", RED, "idle") setStatus("StPick", RED, "idle")
end)
end)
-- NOTE: server rolls the played egg (SelectResult overwrites client Selected) - no select automation.
-- Auto Collect (1s fixed)
loopWhile("AutoCollect", 1, function()
local list = myAnimals()
if #list == 0 then return "wait" end
local n = 0
for _, pod in ipairs(list) do
if pod:GetAttribute("Animal") and pod:GetAttribute("Animal") ~= "" then
pcall(function() Remotes.CollectMoney:FireServer(pod) end)
n = n + 1
task.wait(0.08)
end
end
if n == 0 then return "wait" end
end, "LCollect", "StCollect", "collecting")
-- Auto Pet (1.2s fixed)
loopWhile("AutoPet", 1.2, function()
local eggs = myEggs()
if #eggs == 0 then return "wait" end
for _, e in ipairs(eggs) do
pcall(function() Remotes.PetEgg:FireServer(e.Name) end)
task.wait(0.1)
end
end, "LPet", "StPet", "petting")
-- Auto Open Hatched Eggs (5s fixed)
loopWhile("AutoOpenEggs", 5, function()
local eggs = myEggs()
if #eggs == 0 then return "wait" end
local opened = false
for _, e in ipairs(eggs) do
local hatch = e:GetAttribute("HatchAt") or 0
if hatch - os.time() < 1 then
pcall(function() Remotes.OpenEgg:FireServer(e.Name) end)
opened = true
task.wait(0.3)
end
end
if not opened then return "wait" end
end, "LOpen", "StEggs", "opening")
-- Auto Place Egg: tight 5-stud grid on biggest plot floor (3s fixed, one per cycle)
Toggles.AutoPlaceEgg:OnChanged(function()
local on = Toggles.AutoPlaceEgg.Value
setStatus("LPlaceEgg", on and GREEN or RED, on and "placing" or "idle")
setStatus("StEggs", on and GREEN or RED, on and "placing" or "idle")
if not on then return end
task.spawn(function()
while Toggles.AutoPlaceEgg.Value and _alive() do
local res = (function()
local sel = Options.PlaceEggName and Options.PlaceEggName.Value
local ids = {}
if type(sel) == "table" then for k in pairs(sel) do table.insert(ids, tostring(k)) end
elseif type(sel) == "string" then ids = {sel} end
if #ids == 0 then ids = {"basic_egg"} end
local mine = getMine()
if not mine then return "wait" end
local eggsF = mine:FindFirstChild("Eggs")
if not eggsF then return "wait" end
local cap = mine:GetAttribute("EggCapacity") or 10
if #eggsF:GetChildren() >= cap then return "wait" end
local big, best = nil, 0
local plot = mine:FindFirstChild("Plot")
if plot then
for _, d in ipairs(plot:GetDescendants()) do
if d:IsA("BasePart") and d.Name == "Floor" then
local a = d.Size.X * d.Size.Z
if a > best then best, big = a, d end
end
end
end
if not big then return "wait" end
local top = big.Position.Y + big.Size.Y / 2
local placed = eggsF:GetChildren()
for _, dz in ipairs({-25, -20}) do
for _, dx in ipairs({-25, -20, -15, -10, -5}) do
local x, z = big.Position.X + dx, big.Position.Z + dz
local free = true
for _, e in ipairs(placed) do
local p = e.Position
local ddx, ddz = p.X - x, p.Z - z
if ddx * ddx + ddz * ddz < 25 then free = false break end
end
if free then
local tool = nil
for _, want in ipairs(ids) do
for _, t in ipairs(LocalPlayer.Backpack:GetChildren()) do
if t:IsA("Tool") and t.Name == want and t:FindFirstChild("UID") then tool = t break end
end
if tool then break end
if LocalPlayer.Character then
for _, t in ipairs(LocalPlayer.Character:GetChildren()) do
if t:IsA("Tool") and t.Name == want and t:FindFirstChild("UID") then tool = t break end
end
end
if tool then break end
end
if not tool then return "wait" end
local id = tool.Name
pcall(function() Remotes.PlaceEgg:FireServer(id, Vector3.new(x, top, z), tool.UID.Value) end)
return
end
end
end
return "wait"
end)()
if res == "wait" then
setStatus("LPlaceEgg", ORANGE, "standby")
setStatus("StEggs", ORANGE, "standby")
else
setStatus("LPlaceEgg", GREEN, "placing")
end
task.wait(3)
end
setStatus("LPlaceEgg", RED, "idle")
end)
end)
-- Auto Lucky Block (3s fixed)
loopWhile("AutoLucky", 3, function()
local found = false
for _, pod in ipairs(myAnimals()) do
local an = tostring(pod:GetAttribute("Animal") or "")
if string.find(an, "Block") or pod:GetAttribute("LuckyBlock") then
pcall(function() Remotes.OpenLuckyBlock:FireServer(pod, an) end)
found = true
end
end
if not found then return "wait" end
end, "LLucky", "StLucky", "opening")
-- Auto Equip Best (6s fixed)
loopWhile("AutoEquipBest", 6, function()
pcall(function() Remotes.EquipBestAnimals:FireServer() end)
end, "LEquip", "StEquip", "equipping")
-- Auto Place (3s fixed)
loopWhile("AutoPlace", 3, function()
local mine = getMine()
if not mine then return "wait" end
local animals = mine:FindFirstChild("Animals")
if not animals then return "wait" end
local emptyPod = nil
for _, pod in ipairs(animals:GetChildren()) do
local an = pod:GetAttribute("Animal")
if not an or an == "" then emptyPod = pod break end
end
if not emptyPod then return "wait" end
local tool = nil
for _, t in ipairs(LocalPlayer.Backpack:GetChildren()) do
if t:IsA("Tool") and t:FindFirstChild("UID") then tool = t break end
end
if not tool and LocalPlayer.Character then
for _, t in ipairs(LocalPlayer.Character:GetChildren()) do
if t:IsA("Tool") and t:FindFirstChild("UID") then tool = t break end
end
end
if not tool then return "wait" end
local uid = tool.UID.Value
pcall(function() Remotes.PlaceAnimal:FireServer("Request", emptyPod, {Name = tool.Name, UID = uid}) end)
end, "LEquip", "StEquip", "placing")
-- Auto Level Up (6s fixed)
loopWhile("AutoLevelUp", 6, function()
local list = myAnimals()
if #list == 0 then return "wait" end
for _, pod in ipairs(list) do
if pod:GetAttribute("Animal") and pod:GetAttribute("Animal") ~= "" then
pcall(function() Remotes.LevelUpAnimal:FireServer(pod) end)
task.wait(0.2)
end
end
end, "LLevel", nil, "leveling")
-- Auto Buy Next Cup: first ladder cup not owned (8s fixed)
loopWhile("AutoBuyCup", 8, function()
local owned = {}
pcall(function()
for _, c in ipairs(LocalPlayer:FindFirstChild("Cups"):GetChildren()) do owned[c.Name] = true end
end)
for _, name in ipairs(CUP_LADDER) do
if not owned[name] then
pcall(function() Remotes.BuyCup:FireServer(name) end)
return
end
end
return "wait"
end, "LBuyCup", nil, "buying cup")
-- Auto Equip Best Cup: highest-luck owned (5s enforce)
loopWhile("AutoEquipCup", 5, function()
local owned = {}
pcall(function()
for _, c in ipairs(LocalPlayer:FindFirstChild("Cups"):GetChildren()) do owned[c.Name] = true end
end)
for i = #CUP_LADDER, 1, -1 do
if owned[CUP_LADDER[i]] then
pcall(function() Remotes.EquipCup:FireServer(CUP_LADDER[i]) end)
return
end
end
return "wait"
end, "LEquipCup", nil, "equipping cup")
-- Auto Buy Next Dealer (8s fixed)
loopWhile("AutoBuyDealer", 8, function()
local owned = {}
pcall(function()
for _, c in ipairs(LocalPlayer:FindFirstChild("OwnedDealers"):GetChildren()) do owned[c.Name] = true end
end)
for _, name in ipairs(DEALER_LADDER) do
if not owned[name] then
pcall(function() Remotes.BuyDealer:FireServer(name) end)
return
end
end
return "wait"
end, "LBuyDealer", nil, "buying dealer")
-- Auto Equip Best Dealer (5s enforce)
loopWhile("AutoEquipDealer", 5, function()
local owned = {}
pcall(function()
for _, c in ipairs(LocalPlayer:FindFirstChild("OwnedDealers"):GetChildren()) do owned[c.Name] = true end
end)
for i = #DEALER_LADDER, 1, -1 do
if owned[DEALER_LADDER[i]] then
pcall(function() Remotes.EquipDealer:FireServer(DEALER_LADDER[i]) end)
return
end
end
return "wait"
end, "LEquipDealer", nil, "equipping dealer")
-- Upgrades (6s fixed each)
local function upgLoop(idx, key)
Toggles[idx]:OnChanged(function()
local on = Toggles[idx].Value
setStatus("LUpg", on and GREEN or RED, on and ("upgrading " .. key) or "idle")
setStatus("StUpg", on and GREEN or RED, on and ("upgrading " .. key) or "idle")
if not on then return end
task.spawn(function()
while Toggles[idx].Value and _alive() do
pcall(function() Remotes.Upgrade:FireServer(key) end)
task.wait(6)
end
setStatus("LUpg", RED, "idle")
end)
end)
end
upgLoop("AutoUpgTourist", "Tourist")
upgLoop("AutoUpgBase", "Base")
upgLoop("AutoUpgDealer", "Dealer")
upgLoop("AutoUpgSpeed", "MovementSpeed")
-- Auto Rebirth (8s fixed)
loopWhile("AutoRebirth", 8, function()
pcall(function() Remotes.Rebirth:FireServer("Rebirth") end)
end, "LRebirth", "StRebirth", "rebirthing")
-- Auto Potion (10s fixed)
loopWhile("AutoPotion", 10, function()
local v = Options.PotionKind and Options.PotionKind.Value or {Luck = true}
local kinds = {}
if type(v) == "table" then for k in pairs(v) do table.insert(kinds, k) end
elseif type(v) == "string" then kinds = {v} end
for _, k in ipairs(kinds) do
pcall(function() Remotes.UsePotion:FireServer(k) end)
task.wait(0.3)
end
end, "LPotion", nil, "using potion")
-- Auto Quest (10s fixed): claim completed Daily/Hourly by index
loopWhile("AutoQuest", 10, function()
local ok, data = pcall(function() return Remotes.GetQuestData:InvokeServer() end)
if not ok or type(data) ~= "table" then return "wait" end
local fired = false
for _, scope in ipairs({"Daily", "Hourly"}) do
local list = data[scope]
if type(list) == "table" then
for i, q in ipairs(list) do
if type(q) == "table" and q.completed and not q.claimed then
pcall(function() Remotes.ClaimQuest:FireServer(scope, i) end)
fired = true
task.wait(0.3)
elseif type(q) == "table" and q.id and q.completed and not q.claimed then
pcall(function() Remotes.ClaimQuest:FireServer(scope, i) end)
fired = true
task.wait(0.3)
end
end
end
end
if not fired then return "wait" end
end, "LQuest", nil, "claiming quests")
-- ================= WIRING: player =================
Toggles.WalkToggle:OnChanged(function()
if Toggles.WalkToggle.Value then
task.spawn(function()
while Toggles.WalkToggle.Value and _alive() do
pcall(function()
local c = LocalPlayer.Character
local h = c and c:FindFirstChildOfClass("Humanoid")
if h then h.WalkSpeed = Options.WalkAmount.Value end
end)
task.wait(0.3)
end
pcall(function()
local c = LocalPlayer.Character
local h = c and c:FindFirstChildOfClass("Humanoid")
if h then h.WalkSpeed = 16 end
end)
end)
end
end)
Options.WalkAmount:OnChanged(function()
if Toggles.WalkToggle.Value then
pcall(function()
local h = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
if h then h.WalkSpeed = Options.WalkAmount.Value end
end)
end
end)
Toggles.InfJump:OnChanged(function()
if Toggles.InfJump.Value then
getgenv().__SHU_INF = UIS.JumpRequest:Connect(function()
pcall(function()
local h = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
if h then h:ChangeState(Enum.HumanoidStateType.Jumping) end
end)
end)
else
pcall(function() if getgenv().__SHU_INF then getgenv().__SHU_INF:Disconnect() getgenv().__SHU_INF = nil end end)
end
end)
Toggles.NoClip:OnChanged(function()
task.spawn(function()
while Toggles.NoClip.Value and _alive() do
pcall(function()
local c = LocalPlayer.Character
if c then for _, p in ipairs(c:GetDescendants()) do
if p:IsA("BasePart") then p.CanCollide = false end
end end
end)
RunService.Stepped:Wait()
end
end)
end)
Toggles.InstPrompt:OnChanged(function()
local function fast(p)
pcall(function() if p:IsA("ProximityPrompt") then p.HoldDuration = 0 end end)
end
if Toggles.InstPrompt.Value then
for _, p in ipairs(workspace:GetDescendants()) do fast(p) end
getgenv().__SHU_PP = workspace.DescendantAdded:Connect(fast)
else
pcall(function() if getgenv().__SHU_PP then getgenv().__SHU_PP:Disconnect() getgenv().__SHU_PP = nil end end)
end
end)
Toggles.FlyToggle:OnChanged(function()
if Toggles.FlyToggle.Value then
task.spawn(function()
local bg, bv = nil, nil
pcall(function()
local hrp = LocalPlayer.Character and LocalPlayer.Character:WaitForChild("HumanoidRootPart")
bg = Instance.new("BodyGyro") bg.P = 9000 bg.MaxTorque = Vector3.new(9e9, 9e9, 9e9) bg.CFrame = hrp.CFrame bg.Parent = hrp
bv = Instance.new("BodyVelocity") bv.MaxForce = Vector3.new(9e9, 9e9, 9e9) bv.Velocity = Vector3.new() bv.Parent = hrp
end)
getgenv().__SHU_FLY = {bg, bv}
while Toggles.FlyToggle.Value and _alive() do
pcall(function()
local hrp = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
local cam = workspace.CurrentCamera
if hrp and bg and bv then
local dir = Vector3.new()
if UIS:IsKeyDown(Enum.KeyCode.W) then dir = dir + cam.CFrame.LookVector end
if UIS:IsKeyDown(Enum.KeyCode.S) then dir = dir - cam.CFrame.LookVector end
if UIS:IsKeyDown(Enum.KeyCode.A) then dir = dir - cam.CFrame.RightVector end
if UIS:IsKeyDown(Enum.KeyCode.D) then dir = dir + cam.CFrame.RightVector end
if UIS:IsKeyDown(Enum.KeyCode.Space) then dir = dir + Vector3.new(0, 1, 0) end
if UIS:IsKeyDown(Enum.KeyCode.LeftShift) then dir = dir - Vector3.new(0, 1, 0) end
local sp = Options.FlyAmount.Value
bv.Velocity = dir.Magnitude > 0 and dir.Unit * sp or Vector3.new()
bg.CFrame = cam.CFrame
end
end)
RunService.RenderStepped:Wait()
end
pcall(function()
if getgenv().__SHU_FLY then for _, o in ipairs(getgenv().__SHU_FLY) do if o then o:Destroy() end end getgenv().__SHU_FLY = nil end
end)
end)
end
end)
-- ================= WIRING: settings =================
Toggles.AntiAFK:OnChanged(function()
if Toggles.AntiAFK.Value then
getgenv().__SHU_AFK = LocalPlayer.Idled:Connect(function()
pcall(function() game:GetService("VirtualUser"):CaptureController() game:GetService("VirtualUser"):ClickButton2(Vector2.new()) end)
end)
else
pcall(function() if getgenv().__SHU_AFK then getgenv().__SHU_AFK:Disconnect() getgenv().__SHU_AFK = nil end end)
end
end)
if Toggles.AntiAFK.Value then
getgenv().__SHU_AFK = LocalPlayer.Idled:Connect(function()
pcall(function() game:GetService("VirtualUser"):CaptureController() game:GetService("VirtualUser"):ClickButton2(Vector2.new()) end)
end)
end
Toggles.NoPause:OnChanged(function()
if Toggles.NoPause.Value then
task.spawn(function()
pcall(function()
local rg = game:GetService("CoreGui"):FindFirstChild("RobloxGui")
local cp = rg and rg:FindFirstChild("CoreScripts") and rg.CoreScripts:FindFirstChild("NetworkPause")
if cp then cp:Destroy() end
end)
getgenv().__SHU_NP = game:GetService("CoreGui").DescendantAdded:Connect(function(d)
if d.Name == "NetworkPause" then pcall(function() d:Destroy() end) end
end)
end)
else
pcall(function() if getgenv().__SHU_NP then getgenv().__SHU_NP:Disconnect() getgenv().__SHU_NP = nil end end)
end
end)
if Toggles.NoPause.Value then
pcall(function()
local rg = game:GetService("CoreGui"):FindFirstChild("RobloxGui")
local cp = rg and rg:FindFirstChild("CoreScripts") and rg.CoreScripts:FindFirstChild("NetworkPause")
if cp then cp:Destroy() end
end)
end
Toggles.AutoRejoin:OnChanged(function()
if Toggles.AutoRejoin.Value then
getgenv().__SHU_RJ = game:GetService("GuiService").ErrorMessageChanged:Connect(function(msg)
if string.find(string.lower(tostring(msg)), "kick") or string.find(tostring(msg), "disconnect") then
task.wait(2)
TeleportService:Teleport(game.PlaceId)
end
end)
else
pcall(function() if getgenv().__SHU_RJ then getgenv().__SHU_RJ:Disconnect() getgenv().__SHU_RJ = nil end end)
end
end)
Toggles.NoRender:OnChanged(function()
pcall(function() RunService:Set3dRenderingEnabled(not Toggles.NoRender.Value) end)
end)
Toggles.FPSBoost:OnChanged(function()
if not Toggles.FPSBoost.Value then return end
task.spawn(function()
pcall(function()
local Lighting = game:GetService("Lighting")
local Terrain = workspace:FindFirstChildOfClass("Terrain")
if Terrain then Terrain.WaterWaveSize = 0 Terrain.WaterWaveSpeed = 0 Terrain.WaterReflectance = 0 Terrain.WaterTransparency = 0 end
Lighting.GlobalShadows = false
pcall(function() Lighting.FogEnd = 9e9 end)
pcall(function() settings().Rendering.QualityLevel = 1 end)
for _, v in ipairs(game:GetDescendants()) do
pcall(function()
if v:IsA("BasePart") then v.Material = Enum.Material.Plastic v.Reflectance = 0 v.CastShadow = false
elseif v:IsA("Decal") or v:IsA("Texture") then v.Transparency = 1
elseif v:IsA("ParticleEmitter") or v:IsA("Trail") then v.Lifetime = NumberRange.new(0)
elseif v:IsA("PostEffect") then v.Enabled = false
end
end)
end
end)
end)
end)
Toggles.HideUI:OnChanged(function()
if Toggles.HideUI.Value then Library:Toggle() end
end)
Library.ToggleKeybind = Options.MenuKeybind
-- ================= MANAGERS =================
ThemeManager:SetLibrary(Library)
SaveManager:SetLibrary(Library)
SaveManager:IgnoreThemeSettings()
SaveManager:SetIgnoreIndexes({"MenuKeybind", "PickCup"})
ThemeManager:SetFolder("MyScriptHub")
SaveManager:SetFolder("MyScriptHub/Shuffle an Egg")
ThemeManager:SetDefaultTheme(ThemeManager.BuiltInThemes["Quartz"][2])
ThemeManager:SaveDefault("Quartz")
SaveManager:BuildConfigSection(Tabs.Settings)
ThemeManager:ApplyToTab(Tabs.Settings)
SaveManager:LoadAutoloadConfig()
Library:OnUnload(function()
print("[ShuffleEgg] Unloaded")
end)
Library:Notify({Title = "Shuffle an Egg", Description = "Hub loaded", Time = 4, Type = "Success"})
Review the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.


Your community, in one place