-- [[ 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 ]] local Rayfield = loadstring(game:HttpGet("https://sirius.menu/rayfield"))() local Window = Rayfield:CreateWindow({ Name = "Clone Hub", LoadingTitle = "Clone Hub", LoadingSubtitle = "Clone Mining Tycoon", ConfigurationSaving = {Enabled = false} }) local player = game:GetService("Players").LocalPlayer local rs = game:GetService("ReplicatedStorage") local camera = workspace.CurrentCamera local oreData = require(rs.Data.OreData.OreData) local function fmt(n) local s = tostring(math.floor(n)); local r = "" while #s > 3 do r = "," .. s:sub(-3) .. r; s = s:sub(1, -4) end return "$" .. s .. r end local cartData = require(rs.Data.VehicleMinecarts.ContainerMinecartData) local function getContainerInfo() local data = rs.Remotes.UIDataRequests.GetMinecartVehicleContainerData:InvokeServer() local totalValue = 0 local fullContainers = 0 local unlockedContainers = 0 if type(data) == "table" then for _, c in ipairs(data) do if c.Unlocked then unlockedContainers = unlockedContainers + 1 local levelData = cartData.ContainerMinecartLevels[c.Level] or cartData.defaultLevel local maxTypes = levelData and levelData.maxBlockAmount or 16 local blockCount = 0 if type(c.Blocks) == "table" then for _, b in pairs(c.Blocks) do if type(b) == "table" and b.Amount and b.Name then local ore = oreData[b.Name] totalValue = totalValue + b.Amount * (ore and ore.SellValue or 0) blockCount = blockCount + 1 end end end if blockCount >= maxTypes then fullContainers = fullContainers + 1 end end end end return totalValue, fullContainers, unlockedContainers end local function doSell() local root = player.Character:FindFirstChild("HumanoidRootPart") if not root then return end camera.CameraType = Enum.CameraType.Scriptable local saved = root.CFrame; root.CFrame = CFrame.new(166, 190, 1915) rs.Remotes.VehicleMinecartRemotes.SkipJourney:FireServer("SellOres") wait(0.5); pcall(function() rs.Remotes.VolcanoRemotes.AttemptSellOres:InvokeServer() end) wait(0.5); rs.Remotes.VehicleMinecartRemotes.SkipJourney:FireServer("Home") root.CFrame = saved; camera.CameraType = Enum.CameraType.Custom end local SellTab = Window:CreateTab("Sell") local valueLabel = SellTab:CreateLabel("$0") SellTab:CreateButton({ Name = "Sell Ores", Callback = doSell, }) local autoSellOn = false SellTab:CreateToggle({ Name = "Auto Sell (when full)", CurrentValue = false, Callback = function(s) autoSellOn = s end, }) spawn(function() while task.wait(0.5) do pcall(function() local val, full, unlocked = getContainerInfo() valueLabel:Set(fmt(val)) if autoSellOn and unlocked > 0 and full >= unlocked then doSell() end end) end end) local ChestTab = Window:CreateTab("Chests") local autoChestOn = false local tycoonFolder = workspace.TycoonModels:FindFirstChild(tostring(player.UserId)) local chestFolder = tycoonFolder and tycoonFolder:FindFirstChild("Chests") local chestOpening = false local function openAllChests() if not chestFolder or chestOpening then return end local root = player.Character and player.Character:FindFirstChild("HumanoidRootPart") if not root then return end chestOpening = true local saved = root.CFrame camera.CameraType = Enum.CameraType.Scriptable for _, chest in ipairs(chestFolder:GetChildren()) do if chest:IsA("Model") then local pp = chest:FindFirstChildWhichIsA("ProximityPrompt") local primary = chest.PrimaryPart or chest:FindFirstChildWhichIsA("BasePart") if pp and pp.Enabled and primary then pcall(function() root.CFrame = CFrame.new(primary.Position + Vector3.new(0, 3, 0)) task.wait(0.15) fireproximityprompt(pp) task.wait(0.15) end) end end end root.CFrame = saved camera.CameraType = Enum.CameraType.Custom chestOpening = false end spawn(function() while task.wait(1) do if autoChestOn then pcall(openAllChests) end end end) ChestTab:CreateButton({Name = "Open All Chests", Callback = openAllChests}) ChestTab:CreateToggle({Name = "Auto Open Chests", CurrentValue = false, Callback = function(s) autoChestOn = s end}) local MinecartsTab = Window:CreateTab("Minecarts") local minecartsFolder = tycoonFolder and tycoonFolder:FindFirstChild("Minecarts") local vehicleFolder = tycoonFolder and tycoonFolder:FindFirstChild("MinecartVehicles") local autoWithdrawOn = false local autoDepositOn = false local bpData = require(rs.Data.Clones.Items.BackpacksData) local backpackCapacity = 8 spawn(function() local conn = rs.Remotes.UIDataRequests.PlayerItems.GetPlayerBackpacksData.OnClientEvent:Connect(function(d) if d and d.CurrentBackpack then local cfg = bpData.Backpacks[d.CurrentBackpack] if cfg then backpackCapacity = cfg.Capacity or 8 end end end) rs.Remotes.UIDataRequests.PlayerItems.GetPlayerBackpacksData:FireServer() conn:Disconnect() end) local function getBackpackOreCount() local capLabel = player.PlayerGui.Backpack.Ores.Backpack.CapacityLabel local num = tonumber(capLabel.Text:match("x?(%d+)")) return num or 0 end local function withdrawMinecarts() if not minecartsFolder then return end if getBackpackOreCount() >= backpackCapacity then return end local root = player.Character and player.Character:FindFirstChild("HumanoidRootPart") if not root then return end local saved = root.CFrame camera.CameraType = Enum.CameraType.Scriptable for _, cart in ipairs(minecartsFolder:GetChildren()) do local ppHolder = cart:FindFirstChild("DepositPromptHolder") local pp = ppHolder and ppHolder:FindFirstChildWhichIsA("ProximityPrompt") if pp and pp.Enabled and (cart:GetAttribute("Amount") or 0) > 0 then pp.RequiresLineOfSight = false pcall(function() root.CFrame = CFrame.new(ppHolder.Position + Vector3.new(0, 2, 0)) task.wait(0.15) fireproximityprompt(pp) task.wait(0.15) end) pp.RequiresLineOfSight = true end end root.CFrame = saved camera.CameraType = Enum.CameraType.Custom end local function depositToVehicle() if not vehicleFolder then return end local vehicle = vehicleFolder:FindFirstChild("MinecartVehicle") if not vehicle then return end local root = player.Character and player.Character:FindFirstChild("HumanoidRootPart") if not root then return end local saved = root.CFrame camera.CameraType = Enum.CameraType.Scriptable for _, container in ipairs(vehicle:GetChildren()) do if container.Name:find("ContainerMinecart") then local ppHolder = container:FindFirstChild("DepositPromptHolder") local pp = ppHolder and ppHolder:FindFirstChildWhichIsA("ProximityPrompt") if pp and pp.Enabled then pp.RequiresLineOfSight = false pcall(function() root.CFrame = CFrame.new(ppHolder.Position + Vector3.new(0, 2, 0)) task.wait(0.15) fireproximityprompt(pp) task.wait(0.15) end) pp.RequiresLineOfSight = true end end end root.CFrame = saved camera.CameraType = Enum.CameraType.Custom end spawn(function() while task.wait(2) do if autoWithdrawOn then pcall(withdrawMinecarts) end if autoDepositOn then pcall(depositToVehicle) end end end) MinecartsTab:CreateButton({Name = "Withdraw All", Callback = withdrawMinecarts}) MinecartsTab:CreateButton({Name = "Deposit All", Callback = depositToVehicle}) MinecartsTab:CreateToggle({Name = "Auto Withdraw", CurrentValue = false, Callback = function(s) autoWithdrawOn = s end}) MinecartsTab:CreateToggle({Name = "Auto Deposit", CurrentValue = false, Callback = function(s) autoDepositOn = s end}) local MiningTab = Window:CreateTab("Mining") local function getMineBlocks() local blocks = {} local mineChunks = tycoonFolder and tycoonFolder:FindFirstChild("MineChunks") if mineChunks then for _, chunk in ipairs(mineChunks:GetChildren()) do local mineSub = chunk:FindFirstChild("Mine") if mineSub then for _, child in ipairs(mineSub:GetDescendants()) do if child:IsA("Model") then local pos = child:GetAttribute("Position") if pos then table.insert(blocks, {X = pos.X, Y = pos.Y, Z = pos.Z}) end end end end end end return blocks end local function mineAllBlocks() local blocks = getMineBlocks() for _, b in ipairs(blocks) do rs.Remotes.PickaxeRemotes.PlayerMinedBlock:FireServer({X = b.X, Y = b.Y, Z = b.Z}) end end local autoMineOn = false spawn(function() while task.wait(2) do if autoMineOn then local blocks = getMineBlocks() if #blocks > 0 then for _, b in ipairs(blocks) do if not autoMineOn then break end rs.Remotes.PickaxeRemotes.PlayerMinedBlock:FireServer({X = b.X, Y = b.Y, Z = b.Z}) end end end end end) MiningTab:CreateButton({Name = "Mine All", Callback = mineAllBlocks}) MiningTab:CreateToggle({Name = "Auto Mine", CurrentValue = false, Callback = function(s) autoMineOn = s end}) local minedLabel = MiningTab:CreateLabel("0 blocks") spawn(function() while task.wait(4) do pcall(function() local count = #getMineBlocks() minedLabel:Set(count .. " blocks") end) end end) local MinersTab = Window:CreateTab("Miners") local pickaxesDataModule = require(rs.Data.Clones.Items.PickaxesData) local backpacksDataModule = require(rs.Data.Clones.Items.BackpacksData) local function getSortedItems(dataModule, key) local list = {} local items = {} for name, cfg in pairs(dataModule[key]) do table.insert(list, {display = cfg.DisplayName, index = cfg.Index, price = cfg.Price}) end table.sort(list, function(a, b) return a.index < b.index end) for _, item in ipairs(list) do table.insert(items, item.display) end return items end local pickaxeOptions = getSortedItems(pickaxesDataModule, "Pickaxes") local backpackOptions = getSortedItems(backpacksDataModule, "Backpacks") local selectedPickaxe = pickaxeOptions[1] local selectedBackpack = backpackOptions[1] local pickaxeIndex = 1 local backpackIndex = 1 MinersTab:CreateSection("Gear") local pickaxeLabel = MinersTab:CreateLabel("Pickaxe: " .. selectedPickaxe) local backpackLabel = MinersTab:CreateLabel("Backpack: " .. selectedBackpack) MinersTab:CreateButton({Name = "Next Pickaxe", Callback = function() pickaxeIndex = pickaxeIndex % #pickaxeOptions + 1 selectedPickaxe = pickaxeOptions[pickaxeIndex] pickaxeLabel:Set("Pickaxe: " .. selectedPickaxe) end}) MinersTab:CreateButton({Name = "Next Backpack", Callback = function() backpackIndex = backpackIndex % #backpackOptions + 1 selectedBackpack = backpackOptions[backpackIndex] backpackLabel:Set("Backpack: " .. selectedBackpack) end}) MinersTab:CreateButton({Name = "Equip All", Callback = function() local miners = rs.Remotes.UIDataRequests.GetMinerData:InvokeServer() for _, m in ipairs(miners) do pcall(function() rs.Remotes.UIDataRequests.ToggleEquipClonePickaxe:InvokeServer(selectedPickaxe, m.MinerId) rs.Remotes.UIDataRequests.ToggleEquipCloneBackpack:InvokeServer(selectedBackpack, m.MinerId) end) end end}) MinersTab:CreateButton({Name = "Buy & Equip All", Callback = function() local miners = rs.Remotes.UIDataRequests.GetMinerData:InvokeServer() for _, m in ipairs(miners) do pcall(function() rs.Remotes.UIDataRequests.BuyClonePickaxe:InvokeServer(selectedPickaxe, m.MinerId) rs.Remotes.UIDataRequests.BuyCloneBackpack:InvokeServer(selectedBackpack, m.MinerId) end) end end}) local function findBest(items, dataModule, key) local best, bestVal = nil, 0 for _, name in ipairs(items) do for _, cfg in pairs(dataModule[key]) do local val = cfg.MiningSpeed or cfg.Capacity or cfg.Index or 0 if cfg.DisplayName == name and not cfg.IsCrafted and val > bestVal then bestVal = val best = name end end end return best end local function findBestGlobal(dataModule, key) local best, bestVal = nil, 0 for _, cfg in pairs(dataModule[key]) do local val = cfg.MiningSpeed or cfg.Capacity or cfg.Index or 0 if not cfg.IsCrafted and val > bestVal then bestVal = val best = cfg.DisplayName end end return best end MinersTab:CreateSection("Quick Upgrades") MinersTab:CreateButton({Name = "Equip Best", Callback = function() local miners = rs.Remotes.UIDataRequests.GetMinerData:InvokeServer() for _, m in ipairs(miners) do local bestP = findBest(m.PickaxeInventory, pickaxesDataModule, "Pickaxes") local bestB = findBest(m.BackpackInventory, backpacksDataModule, "Backpacks") pcall(function() if bestP then rs.Remotes.UIDataRequests.ToggleEquipClonePickaxe:InvokeServer(bestP, m.MinerId) end if bestB then rs.Remotes.UIDataRequests.ToggleEquipCloneBackpack:InvokeServer(bestB, m.MinerId) end end) end end}) MinersTab:CreateButton({Name = "Buy & Equip Best", Callback = function() local bestP = findBestGlobal(pickaxesDataModule, "Pickaxes") local bestB = findBestGlobal(backpacksDataModule, "Backpacks") local miners = rs.Remotes.UIDataRequests.GetMinerData:InvokeServer() for _, m in ipairs(miners) do pcall(function() rs.Remotes.UIDataRequests.BuyClonePickaxe:InvokeServer(bestP, m.MinerId) rs.Remotes.UIDataRequests.BuyCloneBackpack:InvokeServer(bestB, m.MinerId) end) end end}) local artifactTiers = {TierI = 1, TierII = 2, TierIII = 3, TierIV = 4, TierV = 5} local artifactsDataModule = require(rs.Data.Clones.Items.ArtifactsData) MinersTab:CreateSection("Artifacts") MinersTab:CreateButton({Name = "Unequip All Artifacts", Callback = function() local miners = rs.Remotes.UIDataRequests.GetMinerData:InvokeServer() for _, m in ipairs(miners) do for slot, _ in pairs(m.EquippedArtifacts or {}) do pcall(function() rs.Remotes.UIDataRequests.UnequipCloneArtifact:InvokeServer(slot, m.MinerId) end) end end end}) MinersTab:CreateButton({Name = "Equip Best Artifacts", Callback = function() local miners = rs.Remotes.UIDataRequests.GetMinerData:InvokeServer() for _, m in ipairs(miners) do for slot in pairs(m.EquippedArtifacts or {}) do pcall(function() rs.Remotes.UIDataRequests.UnequipCloneArtifact:InvokeServer(slot, m.MinerId) end) end end local artifacts = rs.Remotes.UIDataRequests.GetPlayerArtifacts:InvokeServer(player) local pool = {} for name, data in pairs(artifacts) do if data.Amount > 0 then local cfg = artifactsDataModule[name] local tier = artifactTiers[cfg and cfg.Rarity or "TierI"] or 0 for _ = 1, data.Amount do table.insert(pool, {name = name, tier = tier}) end end end table.sort(pool, function(a, b) return a.tier > b.tier end) for _, m in ipairs(miners) do local count = 0 local types = {} for i = 1, #pool do if count >= 2 then break end local item = pool[i] if item.name ~= "" then local cfg = artifactsDataModule[item.name] local atype = cfg and cfg.ArtifactType if not atype or not types[atype] then count = count + 1 pcall(function() rs.Remotes.UIDataRequests.EquipCloneArtifact:InvokeServer(item.name, m.MinerId) end) pool[i].name = "" if atype then types[atype] = true end end end end end end}) local RebirthTab = Window:CreateTab("Rebirth") local rebirthPercentLabel = RebirthTab:CreateLabel("Progress: --") local function getRebirthPercent() local label = player.PlayerGui:FindFirstChild("RebirthScreen") if label then local pct = label.Rebirth.ButtonContainer.Rebirth.Title return pct.Text end return "--" end spawn(function() while task.wait(1) do pcall(function() rebirthPercentLabel:Set("Progress: " .. getRebirthPercent()) end) end end) local autoRebirthOn = false RebirthTab:CreateButton({ Name = "Rebirth Now", Callback = function() rs.Remotes.RebirthRemotes.Rebirth:FireServer() end, }) RebirthTab:CreateToggle({ Name = "Auto Rebirth", CurrentValue = false, Callback = function(s) autoRebirthOn = s end, }) rs.Remotes.RebirthRemotes.ShowRebirthButton.OnClientEvent:Connect(function() if autoRebirthOn then rs.Remotes.RebirthRemotes.Rebirth:FireServer() end end) local MiscTab = Window:CreateTab("Misc") MiscTab:CreateToggle({ Name = "Master Auto", CurrentValue = false, Callback = function(s) autoSellOn = s autoChestOn = s autoWithdrawOn = s autoDepositOn = s autoMineOn = s autoRebirthOn = s end, }) local defaultWalkSpeed = 16 MiscTab:CreateSlider({ Name = "Walk Speed", Range = {16, 500}, Increment = 1, CurrentValue = defaultWalkSpeed, Callback = function(v) local hum = player.Character and player.Character:FindFirstChild("Humanoid") if hum then hum.WalkSpeed = v end end, }) local defaultJumpPower = 50 MiscTab:CreateSlider({ Name = "Jump Power", Range = {50, 500}, Increment = 1, CurrentValue = 50, Callback = function(v) local hum = player.Character and player.Character:FindFirstChild("Humanoid") if hum then hum.UseJumpPower = true; hum.JumpPower = v end end, }) local flyOn = false local flyBody local function startFly() local root = player.Character and player.Character:FindFirstChild("HumanoidRootPart") local hum = player.Character and player.Character:FindFirstChild("Humanoid") if not root or not hum then return end flyBody = Instance.new("BodyVelocity") flyBody.Velocity = Vector3.new(0, 0, 0) flyBody.MaxForce = Vector3.new(40000, 40000, 40000) flyBody.Parent = root hum.PlatformStand = true spawn(function() while flyOn and flyBody and flyBody.Parent do local speed = 50 local move = Vector3.new(0, 0, 0) if flyBody.Parent then local cam = workspace.CurrentCamera if cam then local uis = game:GetService("UserInputService") if uis:IsKeyDown(Enum.KeyCode.W) then move = move + cam.CFrame.LookVector * speed end if uis:IsKeyDown(Enum.KeyCode.S) then move = move - cam.CFrame.LookVector * speed end if uis:IsKeyDown(Enum.KeyCode.A) then move = move - cam.CFrame.RightVector * speed end if uis:IsKeyDown(Enum.KeyCode.D) then move = move + cam.CFrame.RightVector * speed end if uis:IsKeyDown(Enum.KeyCode.Space) then move = move + Vector3.new(0, speed, 0) end if uis:IsKeyDown(Enum.KeyCode.LeftControl) then move = move - Vector3.new(0, speed, 0) end end flyBody.Velocity = move end task.wait() end end) end local function stopFly() if flyBody then flyBody:Destroy(); flyBody = nil end local hum = player.Character and player.Character:FindFirstChild("Humanoid") if hum then hum.PlatformStand = false end end MiscTab:CreateToggle({ Name = "Fly", CurrentValue = false, Callback = function(s) flyOn = s if s then startFly() else stopFly() end end, }) MiscTab:CreateButton({ Name = "Load Infinite Yield", Callback = function() loadstring(game:HttpGet("https://raw.githubusercontent.com/EdgeIY/infiniteyield/master/source"))() end, }) MiscTab:CreateButton({ Name = "Unload GUI", Callback = function() Rayfield:Destroy() end, })