-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. 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 Rscripts 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('● %s', 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"})