local Players = game:GetService("Players") local RS = game:GetService("ReplicatedStorage") local UIS = game:GetService("UserInputService") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") local Patapims = require(RS:WaitForChild("Patapims")) local RebirthModule = require(RS:WaitForChild("RebirthModule")) local SpinModule = require(RS:WaitForChild("SpinModule")) local ShopModule = require(RS:WaitForChild("ShopModule")) local SpinRE = RS:WaitForChild("Spin") local RollRE = RS:FindFirstChild("RollPatapim") local SellRE = RS:WaitForChild("SellItems") local AutosellRE = RS:WaitForChild("ToggleAutosell") local HatchRE = RS:WaitForChild("HatchPet") local RebirthRE = RS:WaitForChild("Rebirth") local IndexRE = RS:WaitForChild("ClaimIndexReward") local BuyDiceRE = RS:WaitForChild("BuyDice") local UpgradeDiceRE = RS:WaitForChild("UpgradeDice") local EquipDiceRE = RS:WaitForChild("EquipDice") local PlaceBestRE = RS:WaitForChild("PlaceBestEvent") local BuyUpgradeRE = RS.ShopRemotes and RS.ShopRemotes:FindFirstChild("BuyUpgrade") local ClaimFlashRE = RS:FindFirstChild("ClaimFlashEvent") local ClaimDailyRE = RS:FindFirstChild("ClaimDailyReward") local DICE_PRICE = { Basic = 150, Golden = 120, Stone = 96, Crystal = 80, Storm = 72, Magma = 64, Cosmic = 56, Diamond = 48, Prism = 40, Void = 36, Divine = 32, Celestial = 28, Abyssal = 24, Chrono = 20, Eclipse = 18, Arcane = 16, Inferno = 14, GalaxyCore = 12, Singularity = 10, Omega = 8, Ascended = 6, Ethereal = 5, Paradox = 4, Transcendent = 3, Infinity = 2, Oblivion = 2, Genesis = 1, } local RARITIES = { "Common", "Uncommon", "Epic", "Legendary", "Void", "Ultra", "Secret", "Ascended", "Eternal" } local MUTATIONS = { "Normal", "Corruption", "Verdant", "Inferno", "Abyss", "Tempest", "Cryo", "Glitch" } local EGGS = { "BasicPataegg", "InfernoPataegg", "HeavenlyPataegg", "OceanPataegg", "VoidPataegg" } local DICE_KEYS = {} for k in pairs(Patapims.Dices) do DICE_KEYS[#DICE_KEYS + 1] = k end table.sort(DICE_KEYS) local PATAPIM_BY_NAME = {} for _, p in ipairs(Patapims.List) do PATAPIM_BY_NAME[p.Name] = p end local cfg = { AutoSpin = false, AutoSell = false, GameAutosell = false, AutoClaim = false, AutoPlaceBest = false, AutoHatch = false, AutoRebirth = false, AutoFortune = false, AutoIndex = false, AutoUpgradeDice = false, AutoBuyDice = false, AutoBuyUpgrades = false, SpinDelay = 0.05, Dice = {}, SellRarity = {}, SellMutation = {}, KeepFavourites = true, PlaceBestMinutes = 1, HatchEggs = {}, HatchAmount = 1, HatchDelay = 0.4, BuyDice = {}, ClaimDelay = 0.12, SellDelay = 0.5, IndexDelay = 2, UpgradeDelay = 1.5, BuyDiceDelay = 1.5, FortuneDelay = (SpinModule.Spin and SpinModule.Spin.SpinTimeForReward) or 300, RebirthCheckDelay = 2, } for _, k in ipairs(DICE_KEYS) do cfg.Dice[k] = (k == "Basic") cfg.BuyDice[k] = false end for _, r in ipairs(RARITIES) do cfg.SellRarity[r] = (r == "Common" or r == "Uncommon") end for _, m in ipairs(MUTATIONS) do cfg.SellMutation[m] = true -- по умолчанию все мутации выбранных редкостей end for _, e in ipairs(EGGS) do cfg.HatchEggs[e] = (e == "BasicPataegg") end local running = {} local threads = {} local statusSell = "sell: ready" local function fire(remote, ...) if not remote then return end local n = select("#", ...) local args = { ... } pcall(function() remote:FireServer(table.unpack(args, 1, n)) end) end local function getHRP() local c = player.Character return c and c:FindFirstChild("HumanoidRootPart") end local function getData() local folder = RS:FindFirstChild("PlayerData") if not folder then return nil end return folder:FindFirstChild(tostring(player.UserId)) or folder:FindFirstChild(player.Name) end local function getValue(data, names) if not data then return nil end for _, n in ipairs(names) do local v = data:FindFirstChild(n, true) if v and v:IsA("ValueBase") then return v end end return nil end local function getMoney() local v = getValue(getData(), { "Money", "Cash", "Coins" }) return v and v.Value or 0 end local function getRebirths() local v = getValue(getData(), { "Rebirths", "Rebirth", "RebirthCount" }) return v and tonumber(v.Value) or 0 end local function touch(part, hrp) if not (firetouchinterest and part and hrp) then return end pcall(firetouchinterest, part, hrp, 0) pcall(firetouchinterest, part, hrp, 1) end local function getMyBase() local bases = workspace:FindFirstChild("map") and workspace.map:FindFirstChild("Bases") if not bases then return nil end for _, base in ipairs(bases:GetChildren()) do local owner = base:GetAttribute("Owner") or base:GetAttribute("OwnerName") or base:GetAttribute("UserId") if owner == player.Name or owner == player.UserId or tostring(owner) == tostring(player.UserId) then return base end for _, v in ipairs(base:GetDescendants()) do if v:IsA("StringValue") and (v.Name == "Owner" or v.Name == "OwnerName") and v.Value == player.Name then return base end if v:IsA("ObjectValue") and v.Name == "Owner" and v.Value == player then return base end if v:IsA("NumberValue") and v.Name == "Owner" and v.Value == player.UserId then return base end if (v:IsA("TextLabel") or v:IsA("TextBox")) and (v.Text == player.Name or v.Text == player.DisplayName) then return base end end end local hrp = getHRP() if not hrp then return nil end local best, dist for _, base in ipairs(bases:GetChildren()) do local p = base:FindFirstChildWhichIsA("BasePart", true) if p then local d = (p.Position - hrp.Position).Magnitude if not dist or d < dist then best, dist = base, d end end end return best end local function getMutation(tool) -- SellCapture: StringValue Trait = Corruption local v = tool:FindFirstChild("Trait") if v and v:IsA("ValueBase") then local s = tostring(v.Value) if s ~= "" then return s end end local m = tool:GetAttribute("Mutation") or tool:GetAttribute("Trait") if typeof(m) == "string" and m ~= "" then return m end return "Normal" end local function getToolRarity(tool) local r = tool:GetAttribute("Rarity") or tool:GetAttribute("rarity") if typeof(r) == "string" then return r end local def = PATAPIM_BY_NAME[tool.Name] if def then return def.Rarity end local v = tool:FindFirstChild("Rarity") if v and v:IsA("ValueBase") then return tostring(v.Value) end return nil end local function isFavourite(tool) if tool:GetAttribute("Favourite") or tool:GetAttribute("Favorite") then return true end local f = tool:FindFirstChild("Favourite") or tool:FindFirstChild("Favorite") return f and f:IsA("BoolValue") and f.Value end -- SellCapture: attr UniqueId = Item_... local function toolUniqueId(tool) local id = tool:GetAttribute("UniqueId") if id ~= nil then return tostring(id) end local v = tool:FindFirstChild("UniqueId") if v and v:IsA("ValueBase") then return tostring(v.Value) end return nil end local function shouldSell(tool) if not tool:IsA("Tool") then return false end if not toolUniqueId(tool) then return false end local rarity = getToolRarity(tool) if not rarity then if not PATAPIM_BY_NAME[tool.Name] then return false end rarity = PATAPIM_BY_NAME[tool.Name].Rarity end if not cfg.SellRarity[rarity] then return false end if cfg.KeepFavourites and isFavourite(tool) then return false end local mut = getMutation(tool) if not cfg.SellMutation[mut] then return false end return true end local function gatherTools() local list = {} local function scan(c) if not c then return end for _, t in ipairs(c:GetChildren()) do if shouldSell(t) then list[#list + 1] = t end end end scan(player:FindFirstChild("Backpack")) scan(player.Character) return list end -- SellCapture format: -- { { Id = "Item_...", Type = "Patapim" }, ... } local function buildSellPayload(tools) local payload = {} for _, tool in ipairs(tools) do local id = toolUniqueId(tool) if id then payload[#payload + 1] = { Id = id, Type = "Patapim", } end end return payload end local function doSell(tools) if #tools == 0 then statusSell = "sell: nothing matched" return false end local payload = buildSellPayload(tools) if #payload == 0 then statusSell = "sell: no UniqueId" return false end fire(SellRE, payload) statusSell = "sold x" .. #payload return true end local function startLoop(key, fn) if threads[key] then return end running[key] = true threads[key] = task.spawn(function() while running[key] do local ok, err = pcall(fn) if not ok then warn("[AnimeAuto]", key, err) end end threads[key] = nil end) end local function stopLoop(key) running[key] = false end local function setFeature(key, on, fn) cfg[key] = on if on then startLoop(key, fn) else stopLoop(key) end end -- loops local function loopSpin() local list = {} for _, name in ipairs(DICE_KEYS) do if cfg.Dice[name] then list[#list + 1] = name end end if #list == 0 then fire(SpinRE) if RollRE then fire(RollRE) end task.wait(cfg.SpinDelay) return end for _, dice in ipairs(list) do if not running.AutoSpin then break end fire(EquipDiceRE, dice) task.wait(0.02) fire(SpinRE) if RollRE then fire(RollRE, dice) end task.wait(cfg.SpinDelay) end end local function loopSell() local tools = gatherTools() doSell(tools) task.wait(cfg.SellDelay) end local function syncGameAutosell(on) fire(AutosellRE, on) for _, r in ipairs(RARITIES) do if cfg.SellRarity[r] then for _, m in ipairs(MUTATIONS) do if cfg.SellMutation[m] then fire(AutosellRE, r, m, on) end end end end -- прямая запись в PlayerData.Autosell если есть local data = getData() local auto = data and data:FindFirstChild("Autosell") if auto then for _, r in ipairs(RARITIES) do local rf = auto:FindFirstChild(r) if rf then for _, m in ipairs(MUTATIONS) do local mv = rf:FindFirstChild(m) if mv and mv:IsA("BoolValue") then mv.Value = on and cfg.SellRarity[r] and cfg.SellMutation[m] or false end end end end end end local function loopClaim() local base = getMyBase() local hrp = getHRP() local char = player.Character if not base or not hrp then task.wait(0.5) return end for _, d in ipairs(base:GetDescendants()) do if d.Name == "Claim" and d:IsA("BasePart") then touch(d, hrp) if char and firetouchinterest then for _, limb in ipairs(char:GetChildren()) do if limb:IsA("BasePart") then pcall(firetouchinterest, d, limb, 0) pcall(firetouchinterest, d, limb, 1) end end end end end task.wait(cfg.ClaimDelay) end local function loopPlaceBest() fire(PlaceBestRE) task.wait(math.max(cfg.PlaceBestMinutes, 0.05) * 60) end local function loopHatch() local any = false for _, egg in ipairs(EGGS) do if cfg.HatchEggs[egg] then any = true fire(HatchRE, egg, cfg.HatchAmount) task.wait(cfg.HatchDelay) end end if not any then task.wait(1) end end local function loopRebirth() local rebirths = getRebirths() if rebirths >= (RebirthModule.MaxRebirth or 35) then task.wait(5) return end local cost = RebirthModule.GetCost(rebirths) if cost and getMoney() >= cost then fire(RebirthRE) task.wait(1) end task.wait(cfg.RebirthCheckDelay) end local function loopFortune() fire(SpinRE) if ClaimFlashRE then fire(ClaimFlashRE) end if ClaimDailyRE then fire(ClaimDailyRE) end task.wait(cfg.FortuneDelay) end local function loopIndex() fire(IndexRE) for _, p in ipairs(Patapims.List) do if not running.AutoIndex then break end fire(IndexRE, p.Name) for _, m in ipairs(MUTATIONS) do fire(IndexRE, p.Name, m) end end task.wait(cfg.IndexDelay) end local function loopUpgradeDice() fire(UpgradeDiceRE) for _, name in ipairs(DICE_KEYS) do fire(UpgradeDiceRE, name) end task.wait(cfg.UpgradeDelay) end local function loopBuyDice() local any = false for _, name in ipairs(DICE_KEYS) do if cfg.BuyDice[name] then any = true fire(BuyDiceRE, name, DICE_PRICE[name] or 1) end end if not any then task.wait(1) else task.wait(cfg.BuyDiceDelay) end end local function loopBuyUpgrades() if BuyUpgradeRE then for name in pairs(ShopModule.Upgrades) do fire(BuyUpgradeRE, name) end end task.wait(2) end -- ===================== UI (tabs left) ===================== local gui = Instance.new("ScreenGui") gui.Name = "AnimeAutoUI" gui.ResetOnSpawn = false gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling gui.Parent = playerGui local ROOT_W, ROOT_H = 560, 520 local root = Instance.new("Frame") root.Size = UDim2.fromOffset(ROOT_W, ROOT_H) root.Position = UDim2.new(0.5, -ROOT_W / 2, 0.5, -ROOT_H / 2) root.BackgroundColor3 = Color3.fromRGB(18, 18, 22) root.BorderSizePixel = 0 root.Active = true root.Parent = gui Instance.new("UICorner", root).CornerRadius = UDim.new(0, 12) local stroke = Instance.new("UIStroke", root) stroke.Color = Color3.fromRGB(45, 45, 55) stroke.Thickness = 1 local header = Instance.new("Frame") header.Size = UDim2.new(1, 0, 0, 44) header.BackgroundColor3 = Color3.fromRGB(24, 24, 30) header.BorderSizePixel = 0 header.Parent = root Instance.new("UICorner", header).CornerRadius = UDim.new(0, 12) local headerFix = Instance.new("Frame") headerFix.Size = UDim2.new(1, 0, 0, 16) headerFix.Position = UDim2.new(0, 0, 1, -16) headerFix.BackgroundColor3 = Color3.fromRGB(24, 24, 30) headerFix.BorderSizePixel = 0 headerFix.Parent = header local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -20, 0, 22) title.Position = UDim2.fromOffset(14, 6) title.BackgroundTransparency = 1 title.Font = Enum.Font.GothamBold title.TextSize = 18 title.TextXAlignment = Enum.TextXAlignment.Left title.TextColor3 = Color3.fromRGB(240, 240, 245) title.Text = "Anime Auto" title.Parent = header local subtitle = Instance.new("TextLabel") subtitle.Name = "Status" subtitle.Size = UDim2.new(1, -20, 0, 14) subtitle.Position = UDim2.fromOffset(14, 26) subtitle.BackgroundTransparency = 1 subtitle.Font = Enum.Font.Gotham subtitle.TextSize = 11 subtitle.TextXAlignment = Enum.TextXAlignment.Left subtitle.TextColor3 = Color3.fromRGB(130, 130, 145) subtitle.Text = "..." subtitle.Parent = header local sidebar = Instance.new("Frame") sidebar.Size = UDim2.new(0, 140, 1, -52) sidebar.Position = UDim2.fromOffset(8, 48) sidebar.BackgroundColor3 = Color3.fromRGB(24, 24, 30) sidebar.BorderSizePixel = 0 sidebar.Parent = root Instance.new("UICorner", sidebar).CornerRadius = UDim.new(0, 8) local sideList = Instance.new("UIListLayout") sideList.Padding = UDim.new(0, 4) sideList.SortOrder = Enum.SortOrder.LayoutOrder sideList.Parent = sidebar local sidePad = Instance.new("UIPadding") sidePad.PaddingTop = UDim.new(0, 8) sidePad.PaddingLeft = UDim.new(0, 8) sidePad.PaddingRight = UDim.new(0, 8) sidePad.Parent = sidebar local content = Instance.new("Frame") content.Size = UDim2.new(1, -164, 1, -56) content.Position = UDim2.fromOffset(156, 48) content.BackgroundColor3 = Color3.fromRGB(24, 24, 30) content.BorderSizePixel = 0 content.Parent = root Instance.new("UICorner", content).CornerRadius = UDim.new(0, 8) local pages = {} local activeTab = nil local tabButtons = {} local function makePage(name) local page = Instance.new("ScrollingFrame") page.Name = name page.Size = UDim2.new(1, -12, 1, -12) page.Position = UDim2.fromOffset(6, 6) page.BackgroundTransparency = 1 page.BorderSizePixel = 0 page.ScrollBarThickness = 4 page.AutomaticCanvasSize = Enum.AutomaticSize.Y page.CanvasSize = UDim2.new(0, 0, 0, 0) page.Visible = false page.Parent = content local lay = Instance.new("UIListLayout") lay.Padding = UDim.new(0, 5) lay.SortOrder = Enum.SortOrder.LayoutOrder lay.Parent = page local pad = Instance.new("UIPadding") pad.PaddingTop = UDim.new(0, 4) pad.PaddingBottom = UDim.new(0, 8) pad.PaddingLeft = UDim.new(0, 4) pad.PaddingRight = UDim.new(0, 4) pad.Parent = page pages[name] = page return page end local function selectTab(name) activeTab = name for n, page in pairs(pages) do page.Visible = (n == name) end for n, btn in pairs(tabButtons) do if n == name then btn.BackgroundColor3 = Color3.fromRGB(70, 180, 100) btn.TextColor3 = Color3.fromRGB(20, 20, 24) else btn.BackgroundColor3 = Color3.fromRGB(34, 34, 42) btn.TextColor3 = Color3.fromRGB(210, 210, 220) end end end local function addTab(name, order) local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, 0, 0, 34) btn.BackgroundColor3 = Color3.fromRGB(34, 34, 42) btn.Font = Enum.Font.GothamMedium btn.TextSize = 13 btn.TextColor3 = Color3.fromRGB(210, 210, 220) btn.Text = name btn.AutoButtonColor = false btn.LayoutOrder = order btn.Parent = sidebar Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 6) tabButtons[name] = btn btn.MouseButton1Click:Connect(function() selectTab(name) end) makePage(name) end local orderCounter = 0 local function nextOrder(page) orderCounter += 1 -- per-page order via counting children roughly return page:GetAttribute("o") and 0 or 0 end local function section(page, text) local l = Instance.new("TextLabel") l.Size = UDim2.new(1, -4, 0, 20) l.BackgroundTransparency = 1 l.Font = Enum.Font.GothamMedium l.TextSize = 12 l.TextXAlignment = Enum.TextXAlignment.Left l.TextColor3 = Color3.fromRGB(120, 120, 135) l.Text = text l.LayoutOrder = #page:GetChildren() + 1 l.Parent = page end local function row(page, h) local f = Instance.new("Frame") f.Size = UDim2.new(1, -4, 0, h or 30) f.BackgroundColor3 = Color3.fromRGB(32, 32, 40) f.BorderSizePixel = 0 f.LayoutOrder = #page:GetChildren() + 1 f.Parent = page Instance.new("UICorner", f).CornerRadius = UDim.new(0, 6) return f end local function makeToggle(parent, text, get, set) local label = Instance.new("TextLabel") label.Size = UDim2.new(1, -56, 1, 0) label.Position = UDim2.fromOffset(10, 0) label.BackgroundTransparency = 1 label.Font = Enum.Font.Gotham label.TextSize = 13 label.TextXAlignment = Enum.TextXAlignment.Left label.TextColor3 = Color3.fromRGB(220, 220, 230) label.Text = text label.Parent = parent local btn = Instance.new("TextButton") btn.Size = UDim2.fromOffset(38, 20) btn.Position = UDim2.new(1, -46, 0.5, -10) btn.BackgroundColor3 = Color3.fromRGB(55, 55, 65) btn.Text = "" btn.AutoButtonColor = false btn.Parent = parent Instance.new("UICorner", btn).CornerRadius = UDim.new(1, 0) local knob = Instance.new("Frame") knob.Size = UDim2.fromOffset(16, 16) knob.Position = UDim2.fromOffset(2, 2) knob.BackgroundColor3 = Color3.fromRGB(245, 245, 250) knob.BorderSizePixel = 0 knob.Parent = btn Instance.new("UICorner", knob).CornerRadius = UDim.new(1, 0) local function refresh() local on = get() btn.BackgroundColor3 = on and Color3.fromRGB(70, 180, 100) or Color3.fromRGB(55, 55, 65) knob.Position = on and UDim2.fromOffset(20, 2) or UDim2.fromOffset(2, 2) end btn.MouseButton1Click:Connect(function() set(not get()) refresh() end) refresh() end local function feature(page, label, key, fn) local r = row(page, 32) makeToggle(r, label, function() return cfg[key] end, function(on) setFeature(key, on, fn) end) end local function mapT(page, label, map, key) local r = row(page, 28) makeToggle(r, label, function() return map[key] end, function(on) map[key] = on end) end local function numBox(page, labelText, get, set) local r = row(page, 32) local label = Instance.new("TextLabel") label.Size = UDim2.new(0.55, 0, 1, 0) label.Position = UDim2.fromOffset(10, 0) label.BackgroundTransparency = 1 label.Font = Enum.Font.Gotham label.TextSize = 13 label.TextXAlignment = Enum.TextXAlignment.Left label.TextColor3 = Color3.fromRGB(210, 210, 220) label.Text = labelText label.Parent = r local box = Instance.new("TextBox") box.Size = UDim2.new(0.4, -12, 0, 22) box.Position = UDim2.new(0.58, 0, 0.5, -11) box.BackgroundColor3 = Color3.fromRGB(42, 42, 52) box.Font = Enum.Font.Gotham box.TextSize = 13 box.TextColor3 = Color3.fromRGB(235, 235, 240) box.Text = tostring(get()) box.ClearTextOnFocus = false box.Parent = r Instance.new("UICorner", box).CornerRadius = UDim.new(0, 5) box.FocusLost:Connect(function() local n = tonumber(box.Text) if n then set(n) end box.Text = tostring(get()) end) end local function actionBtn(page, text, callback) local b = Instance.new("TextButton") b.Size = UDim2.new(1, -4, 0, 34) b.BackgroundColor3 = Color3.fromRGB(50, 50, 62) b.Font = Enum.Font.GothamMedium b.TextSize = 13 b.TextColor3 = Color3.fromRGB(230, 230, 240) b.Text = text b.AutoButtonColor = false b.LayoutOrder = #page:GetChildren() + 1 b.Parent = page Instance.new("UICorner", b).CornerRadius = UDim.new(0, 6) b.MouseButton1Click:Connect(callback) return b end -- tabs addTab("Main", 1) addTab("Spin", 2) addTab("Sell", 3) addTab("Hatch", 4) addTab("Dice", 5) addTab("Base", 6) local main = pages.Main local spin = pages.Spin local sell = pages.Sell local hatch = pages.Hatch local dice = pages.Dice local base = pages.Base section(main, "QUICK TOGGLES") feature(main, "Auto Spin", "AutoSpin", loopSpin) feature(main, "Auto Sell", "AutoSell", loopSell) do local r = row(main, 32) makeToggle(r, "Game Autosell", function() return cfg.GameAutosell end, function(on) cfg.GameAutosell = on syncGameAutosell(on) end) end feature(main, "Auto Claim pads", "AutoClaim", loopClaim) feature(main, "Auto Place Best", "AutoPlaceBest", loopPlaceBest) feature(main, "Auto Hatch", "AutoHatch", loopHatch) feature(main, "Auto Rebirth", "AutoRebirth", loopRebirth) feature(main, "Auto Fortune", "AutoFortune", loopFortune) feature(main, "Auto Index", "AutoIndex", loopIndex) feature(main, "Auto Upgrade Dice", "AutoUpgradeDice", loopUpgradeDice) feature(main, "Auto Buy Dice", "AutoBuyDice", loopBuyDice) feature(main, "Auto Buy Upgrades", "AutoBuyUpgrades", loopBuyUpgrades) section(spin, "SPEED") numBox(spin, "Spin delay (sec)", function() return cfg.SpinDelay end, function(v) cfg.SpinDelay = math.max(0, v) end) section(spin, "DICE TO SPIN") for _, k in ipairs(DICE_KEYS) do mapT(spin, k, cfg.Dice, k) end section(sell, "OPTIONS") do local r = row(sell, 32) makeToggle(r, "Keep favourites", function() return cfg.KeepFavourites end, function(on) cfg.KeepFavourites = on end) end numBox(sell, "Sell delay (sec)", function() return cfg.SellDelay end, function(v) cfg.SellDelay = math.max(0.1, v) end) actionBtn(sell, "Sell now (filtered)", function() local tools = gatherTools() doSell(tools) print("[AnimeAuto]", statusSell, "tools:", #tools) end) local tip = Instance.new("TextLabel") tip.Size = UDim2.new(1, -4, 0, 36) tip.BackgroundTransparency = 1 tip.Font = Enum.Font.Gotham tip.TextSize = 11 tip.TextWrapped = true tip.TextXAlignment = Enum.TextXAlignment.Left tip.TextYAlignment = Enum.TextYAlignment.Top tip.TextColor3 = Color3.fromRGB(140, 140, 155) tip.Text = "SellItems: { Id = UniqueId, Type = \"Patapim\" }. Trait берётся из StringValue Trait." tip.LayoutOrder = 999 tip.Parent = sell section(sell, "RARITY") for _, r in ipairs(RARITIES) do mapT(sell, r, cfg.SellRarity, r) end section(sell, "MUTATION") for _, m in ipairs(MUTATIONS) do mapT(sell, m, cfg.SellMutation, m) end section(hatch, "HATCH") numBox(hatch, "Amount", function() return cfg.HatchAmount end, function(v) cfg.HatchAmount = math.max(1, math.floor(v)) end) numBox(hatch, "Delay", function() return cfg.HatchDelay end, function(v) cfg.HatchDelay = math.max(0.05, v) end) for _, e in ipairs(EGGS) do mapT(hatch, e, cfg.HatchEggs, e) end section(dice, "BUY DICE") for _, k in ipairs(DICE_KEYS) do mapT(dice, "Buy " .. k .. " (" .. tostring(DICE_PRICE[k] or "?") .. ")", cfg.BuyDice, k) end section(dice, "UPGRADES / FORTUNE") numBox(dice, "Fortune delay (sec)", function() return cfg.FortuneDelay end, function(v) cfg.FortuneDelay = math.max(1, v) end) section(base, "PLACE / CLAIM / REBIRTH") numBox(base, "Place Best every N min", function() return cfg.PlaceBestMinutes end, function(v) cfg.PlaceBestMinutes = math.max(0.05, v) end) numBox(base, "Claim delay", function() return cfg.ClaimDelay end, function(v) cfg.ClaimDelay = math.max(0.05, v) end) selectTab("Main") -- status task.spawn(function() while gui.Parent do local b = getMyBase() subtitle.Text = string.format( "Base %s | $%s | RB %s | %s", b and b.Name or "?", tostring(getMoney()), tostring(getRebirths()), statusSell ) task.wait(0.5) end end) -- drag by header local dragging, dragStart, startPos header.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = root.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) UIS.InputChanged:Connect(function(input) if not dragging then return end if input.UserInputType ~= Enum.UserInputType.MouseMovement and input.UserInputType ~= Enum.UserInputType.Touch then return end local d = input.Position - dragStart root.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X, startPos.Y.Scale, startPos.Y.Offset + d.Y) end) print("[AnimeAuto v3] UI tabs | sell capture armed")