Browse
Script Types
Tools
Community
Reach players with keyless, universal, or place-specific scripts.


This Spin an Anime Girl script was created by the BobloScript.com team and automates most of the game’s progression loop. Auto Spin rolls for new anime girls, Auto Place Best puts stronger characters on income pads, while Auto Claim Pads and Auto Sell help collect and convert earnings. Auto Hatch, Rebirth, Fortune, Index, and Dice upgrades keep progression moving with less manual work.
Auto Spin repeatedly uses the game’s dice system to roll for anime girls.
Spinning is one of the core mechanics in Spin an Anime Girl: different dice can summon characters of different rarities. Better characters can then be placed on pads to generate more cash.
This makes Auto Spin useful when you are trying to:
obtain rarer characters;
fill more of your collection;
replace weaker girls on your income pads;
progress without manually pressing Spin every time.
Several functions work together:
Auto Spin obtains characters.
Auto Place Best places the strongest available options on your pads.
Auto Claim Pads collects supported pad earnings.
Auto Sell handles unwanted or sellable results.
Game Autosell uses the game’s own autosell system where supported.
Characters placed on pads generate cash, including offline earnings as part of the normal game system.
Auto Hatch repeatedly opens the game’s pet system.
Pets increase luck, making them useful when chasing better RNG results from the game’s spinning mechanics.
Auto Rebirth automatically performs a rebirth when the required conditions are met.
Rebirths are important because they unlock new dice, additional floors, and stronger multipliers. This means the script can continue pushing progression instead of stopping once your current stage is complete.
Auto Fortune automates the supported Fortune interaction so you do not need to repeatedly manage it manually.
Auto Index focuses on the collection/index system, helping process supported index actions as you obtain more characters.
These features complement Auto Spin rather than replacing it: you still need new rolls to expand the collection.
The script includes:
Auto Upgrade Dice
Auto Buy Dice
Auto Buy Upgrades
Better dice are important because the game ties progression to rolling increasingly valuable characters. Rebirths also unlock additional dice as you move further through the game.
Together, these functions can automatically spend available resources on improving the systems that produce your future spins.
Yes. This script was created by the BobloScript.com team.
It is:
No key
Open source
There is no external key-system step before running it, and the source code can be inspected before execution.
Open Spin an Anime Girl and wait for your plot and character data to load.
Copy the BobloScript.com script from the script block.
Open a compatible Roblox executor.
Paste the code and press Execute.
Start with Auto Spin and Auto Claim Pads.
Enable Auto Place Best if you want stronger characters placed automatically.
Configure selling options before enabling Auto Sell.
Add Auto Hatch, Dice upgrades, and Auto Rebirth when you want a more complete progression loop.
Game updates can change the spin, pad, dice, pet, or rebirth systems, so individual automation functions may require an update even if the rest of the script still works.
1local Players = game:GetService("Players")2local RS = game:GetService("ReplicatedStorage")3local UIS = game:GetService("UserInputService")45local player = Players.LocalPlayer6local playerGui = player:WaitForChild("PlayerGui")78local Patapims = require(RS:WaitForChild("Patapims"))9local RebirthModule = require(RS:WaitForChild("RebirthModule"))10local SpinModule = require(RS:WaitForChild("SpinModule"))11local ShopModule = require(RS:WaitForChild("ShopModule"))1213local SpinRE = RS:WaitForChild("Spin")14local RollRE = RS:FindFirstChild("RollPatapim")15local SellRE = RS:WaitForChild("SellItems")16local AutosellRE = RS:WaitForChild("ToggleAutosell")17local HatchRE = RS:WaitForChild("HatchPet")18local RebirthRE = RS:WaitForChild("Rebirth")19local IndexRE = RS:WaitForChild("ClaimIndexReward")20local BuyDiceRE = RS:WaitForChild("BuyDice")21local UpgradeDiceRE = RS:WaitForChild("UpgradeDice")22local EquipDiceRE = RS:WaitForChild("EquipDice")23local PlaceBestRE = RS:WaitForChild("PlaceBestEvent")24local BuyUpgradeRE = RS.ShopRemotes and RS.ShopRemotes:FindFirstChild("BuyUpgrade")25local ClaimFlashRE = RS:FindFirstChild("ClaimFlashEvent")26local ClaimDailyRE = RS:FindFirstChild("ClaimDailyReward")2728local DICE_PRICE = {29 Basic = 150, Golden = 120, Stone = 96, Crystal = 80, Storm = 72,30 Magma = 64, Cosmic = 56, Diamond = 48, Prism = 40, Void = 36,31 Divine = 32, Celestial = 28, Abyssal = 24, Chrono = 20, Eclipse = 18,32 Arcane = 16, Inferno = 14, GalaxyCore = 12, Singularity = 10, Omega = 8,33 Ascended = 6, Ethereal = 5, Paradox = 4, Transcendent = 3,34 Infinity = 2, Oblivion = 2, Genesis = 1,35}3637local RARITIES = { "Common", "Uncommon", "Epic", "Legendary", "Void", "Ultra", "Secret", "Ascended", "Eternal" }38local MUTATIONS = { "Normal", "Corruption", "Verdant", "Inferno", "Abyss", "Tempest", "Cryo", "Glitch" }39local EGGS = { "BasicPataegg", "InfernoPataegg", "HeavenlyPataegg", "OceanPataegg", "VoidPataegg" }4041local DICE_KEYS = {}42for k in pairs(Patapims.Dices) do43 DICE_KEYS[#DICE_KEYS + 1] = k44end45table.sort(DICE_KEYS)4647local PATAPIM_BY_NAME = {}48for _, p in ipairs(Patapims.List) do49 PATAPIM_BY_NAME[p.Name] = p50end5152local cfg = {53 AutoSpin = false,54 AutoSell = false,55 GameAutosell = false,56 AutoClaim = false,57 AutoPlaceBest = false,58 AutoHatch = false,59 AutoRebirth = false,60 AutoFortune = false,61 AutoIndex = false,62 AutoUpgradeDice = false,63 AutoBuyDice = false,64 AutoBuyUpgrades = false,6566 SpinDelay = 0.05,67 Dice = {},68 SellRarity = {},69 SellMutation = {},70 KeepFavourites = true,7172 PlaceBestMinutes = 1,73 HatchEggs = {},74 HatchAmount = 1,75 HatchDelay = 0.4,7677 BuyDice = {},78 ClaimDelay = 0.12,79 SellDelay = 0.5,80 IndexDelay = 2,81 UpgradeDelay = 1.5,82 BuyDiceDelay = 1.5,83 FortuneDelay = (SpinModule.Spin and SpinModule.Spin.SpinTimeForReward) or 300,84 RebirthCheckDelay = 2,85}8687for _, k in ipairs(DICE_KEYS) do88 cfg.Dice[k] = (k == "Basic")89 cfg.BuyDice[k] = false90end91for _, r in ipairs(RARITIES) do92 cfg.SellRarity[r] = (r == "Common" or r == "Uncommon")93end94for _, m in ipairs(MUTATIONS) do95 cfg.SellMutation[m] = true -- по умолчанию все мутации выбранных редкостей96end97for _, e in ipairs(EGGS) do98 cfg.HatchEggs[e] = (e == "BasicPataegg")99end100101local running = {}102local threads = {}103local statusSell = "sell: ready"104105local function fire(remote, ...)106 if not remote then return end107 local n = select("#", ...)108 local args = { ... }109 pcall(function()110 remote:FireServer(table.unpack(args, 1, n))111 end)112end113114local function getHRP()115 local c = player.Character116 return c and c:FindFirstChild("HumanoidRootPart")117end118119local function getData()120 local folder = RS:FindFirstChild("PlayerData")121 if not folder then return nil end122 return folder:FindFirstChild(tostring(player.UserId)) or folder:FindFirstChild(player.Name)123end124125local function getValue(data, names)126 if not data then return nil end127 for _, n in ipairs(names) do128 local v = data:FindFirstChild(n, true)129 if v and v:IsA("ValueBase") then return v end130 end131 return nil132end133134local function getMoney()135 local v = getValue(getData(), { "Money", "Cash", "Coins" })136 return v and v.Value or 0137end138139local function getRebirths()140 local v = getValue(getData(), { "Rebirths", "Rebirth", "RebirthCount" })141 return v and tonumber(v.Value) or 0142end143144local function touch(part, hrp)145 if not (firetouchinterest and part and hrp) then return end146 pcall(firetouchinterest, part, hrp, 0)147 pcall(firetouchinterest, part, hrp, 1)148end149150local function getMyBase()151 local bases = workspace:FindFirstChild("map") and workspace.map:FindFirstChild("Bases")152 if not bases then return nil end153154 for _, base in ipairs(bases:GetChildren()) do155 local owner = base:GetAttribute("Owner") or base:GetAttribute("OwnerName") or base:GetAttribute("UserId")156 if owner == player.Name or owner == player.UserId or tostring(owner) == tostring(player.UserId) then157 return base158 end159 for _, v in ipairs(base:GetDescendants()) do160 if v:IsA("StringValue") and (v.Name == "Owner" or v.Name == "OwnerName") and v.Value == player.Name then161 return base162 end163 if v:IsA("ObjectValue") and v.Name == "Owner" and v.Value == player then164 return base165 end166 if v:IsA("NumberValue") and v.Name == "Owner" and v.Value == player.UserId then167 return base168 end169 if (v:IsA("TextLabel") or v:IsA("TextBox")) and (v.Text == player.Name or v.Text == player.DisplayName) then170 return base171 end172 end173 end174175 local hrp = getHRP()176 if not hrp then return nil end177 local best, dist178 for _, base in ipairs(bases:GetChildren()) do179 local p = base:FindFirstChildWhichIsA("BasePart", true)180 if p then181 local d = (p.Position - hrp.Position).Magnitude182 if not dist or d < dist then best, dist = base, d end183 end184 end185 return best186end187188local function getMutation(tool)189 -- SellCapture: StringValue Trait = Corruption190 local v = tool:FindFirstChild("Trait")191 if v and v:IsA("ValueBase") then192 local s = tostring(v.Value)193 if s ~= "" then return s end194 end195 local m = tool:GetAttribute("Mutation") or tool:GetAttribute("Trait")196 if typeof(m) == "string" and m ~= "" then return m end197 return "Normal"198end199200local function getToolRarity(tool)201 local r = tool:GetAttribute("Rarity") or tool:GetAttribute("rarity")202 if typeof(r) == "string" then return r end203 local def = PATAPIM_BY_NAME[tool.Name]204 if def then return def.Rarity end205 local v = tool:FindFirstChild("Rarity")206 if v and v:IsA("ValueBase") then return tostring(v.Value) end207 return nil208end209210local function isFavourite(tool)211 if tool:GetAttribute("Favourite") or tool:GetAttribute("Favorite") then return true end212 local f = tool:FindFirstChild("Favourite") or tool:FindFirstChild("Favorite")213 return f and f:IsA("BoolValue") and f.Value214end215216-- SellCapture: attr UniqueId = Item_...217local function toolUniqueId(tool)218 local id = tool:GetAttribute("UniqueId")219 if id ~= nil then return tostring(id) end220 local v = tool:FindFirstChild("UniqueId")221 if v and v:IsA("ValueBase") then return tostring(v.Value) end222 return nil223end224225local function shouldSell(tool)226 if not tool:IsA("Tool") then return false end227 if not toolUniqueId(tool) then return false end228229 local rarity = getToolRarity(tool)230 if not rarity then231 if not PATAPIM_BY_NAME[tool.Name] then return false end232 rarity = PATAPIM_BY_NAME[tool.Name].Rarity233 end234 if not cfg.SellRarity[rarity] then return false end235 if cfg.KeepFavourites and isFavourite(tool) then return false end236 local mut = getMutation(tool)237 if not cfg.SellMutation[mut] then return false end238 return true239end240241local function gatherTools()242 local list = {}243 local function scan(c)244 if not c then return end245 for _, t in ipairs(c:GetChildren()) do246 if shouldSell(t) then list[#list + 1] = t end247 end248 end249 scan(player:FindFirstChild("Backpack"))250 scan(player.Character)251 return list252end253254-- SellCapture format:255-- { { Id = "Item_...", Type = "Patapim" }, ... }256local function buildSellPayload(tools)257 local payload = {}258 for _, tool in ipairs(tools) do259 local id = toolUniqueId(tool)260 if id then261 payload[#payload + 1] = {262 Id = id,263 Type = "Patapim",264 }265 end266 end267 return payload268end269270local function doSell(tools)271 if #tools == 0 then272 statusSell = "sell: nothing matched"273 return false274 end275 local payload = buildSellPayload(tools)276 if #payload == 0 then277 statusSell = "sell: no UniqueId"278 return false279 end280 fire(SellRE, payload)281 statusSell = "sold x" .. #payload282 return true283end284285local function startLoop(key, fn)286 if threads[key] then return end287 running[key] = true288 threads[key] = task.spawn(function()289 while running[key] do290 local ok, err = pcall(fn)291 if not ok then warn("[AnimeAuto]", key, err) end292 end293 threads[key] = nil294 end)295end296297local function stopLoop(key)298 running[key] = false299end300301local function setFeature(key, on, fn)302 cfg[key] = on303 if on then startLoop(key, fn) else stopLoop(key) end304end305306-- loops307local function loopSpin()308 local list = {}309 for _, name in ipairs(DICE_KEYS) do310 if cfg.Dice[name] then list[#list + 1] = name end311 end312 if #list == 0 then313 fire(SpinRE)314 if RollRE then fire(RollRE) end315 task.wait(cfg.SpinDelay)316 return317 end318 for _, dice in ipairs(list) do319 if not running.AutoSpin then break end320 fire(EquipDiceRE, dice)321 task.wait(0.02)322 fire(SpinRE)323 if RollRE then fire(RollRE, dice) end324 task.wait(cfg.SpinDelay)325 end326end327328local function loopSell()329 local tools = gatherTools()330 doSell(tools)331 task.wait(cfg.SellDelay)332end333334local function syncGameAutosell(on)335 fire(AutosellRE, on)336 for _, r in ipairs(RARITIES) do337 if cfg.SellRarity[r] then338 for _, m in ipairs(MUTATIONS) do339 if cfg.SellMutation[m] then340 fire(AutosellRE, r, m, on)341 end342 end343 end344 end345 -- прямая запись в PlayerData.Autosell если есть346 local data = getData()347 local auto = data and data:FindFirstChild("Autosell")348 if auto then349 for _, r in ipairs(RARITIES) do350 local rf = auto:FindFirstChild(r)351 if rf then352 for _, m in ipairs(MUTATIONS) do353 local mv = rf:FindFirstChild(m)354 if mv and mv:IsA("BoolValue") then355 mv.Value = on and cfg.SellRarity[r] and cfg.SellMutation[m] or false356 end357 end358 end359 end360 end361end362363local function loopClaim()364 local base = getMyBase()365 local hrp = getHRP()366 local char = player.Character367 if not base or not hrp then task.wait(0.5) return end368 for _, d in ipairs(base:GetDescendants()) do369 if d.Name == "Claim" and d:IsA("BasePart") then370 touch(d, hrp)371 if char and firetouchinterest then372 for _, limb in ipairs(char:GetChildren()) do373 if limb:IsA("BasePart") then374 pcall(firetouchinterest, d, limb, 0)375 pcall(firetouchinterest, d, limb, 1)376 end377 end378 end379 end380 end381 task.wait(cfg.ClaimDelay)382end383384local function loopPlaceBest()385 fire(PlaceBestRE)386 task.wait(math.max(cfg.PlaceBestMinutes, 0.05) * 60)387end388389local function loopHatch()390 local any = false391 for _, egg in ipairs(EGGS) do392 if cfg.HatchEggs[egg] then393 any = true394 fire(HatchRE, egg, cfg.HatchAmount)395 task.wait(cfg.HatchDelay)396 end397 end398 if not any then task.wait(1) end399end400401local function loopRebirth()402 local rebirths = getRebirths()403 if rebirths >= (RebirthModule.MaxRebirth or 35) then task.wait(5) return end404 local cost = RebirthModule.GetCost(rebirths)405 if cost and getMoney() >= cost then406 fire(RebirthRE)407 task.wait(1)408 end409 task.wait(cfg.RebirthCheckDelay)410end411412local function loopFortune()413 fire(SpinRE)414 if ClaimFlashRE then fire(ClaimFlashRE) end415 if ClaimDailyRE then fire(ClaimDailyRE) end416 task.wait(cfg.FortuneDelay)417end418419local function loopIndex()420 fire(IndexRE)421 for _, p in ipairs(Patapims.List) do422 if not running.AutoIndex then break end423 fire(IndexRE, p.Name)424 for _, m in ipairs(MUTATIONS) do425 fire(IndexRE, p.Name, m)426 end427 end428 task.wait(cfg.IndexDelay)429end430431local function loopUpgradeDice()432 fire(UpgradeDiceRE)433 for _, name in ipairs(DICE_KEYS) do434 fire(UpgradeDiceRE, name)435 end436 task.wait(cfg.UpgradeDelay)437end438439local function loopBuyDice()440 local any = false441 for _, name in ipairs(DICE_KEYS) do442 if cfg.BuyDice[name] then443 any = true444 fire(BuyDiceRE, name, DICE_PRICE[name] or 1)445 end446 end447 if not any then task.wait(1) else task.wait(cfg.BuyDiceDelay) end448end449450local function loopBuyUpgrades()451 if BuyUpgradeRE then452 for name in pairs(ShopModule.Upgrades) do453 fire(BuyUpgradeRE, name)454 end455 end456 task.wait(2)457end458459-- ===================== UI (tabs left) =====================460local gui = Instance.new("ScreenGui")461gui.Name = "AnimeAutoUI"462gui.ResetOnSpawn = false463gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling464gui.Parent = playerGui465466local ROOT_W, ROOT_H = 560, 520467468local root = Instance.new("Frame")469root.Size = UDim2.fromOffset(ROOT_W, ROOT_H)470root.Position = UDim2.new(0.5, -ROOT_W / 2, 0.5, -ROOT_H / 2)471root.BackgroundColor3 = Color3.fromRGB(18, 18, 22)472root.BorderSizePixel = 0473root.Active = true474root.Parent = gui475Instance.new("UICorner", root).CornerRadius = UDim.new(0, 12)476local stroke = Instance.new("UIStroke", root)477stroke.Color = Color3.fromRGB(45, 45, 55)478stroke.Thickness = 1479480local header = Instance.new("Frame")481header.Size = UDim2.new(1, 0, 0, 44)482header.BackgroundColor3 = Color3.fromRGB(24, 24, 30)483header.BorderSizePixel = 0484header.Parent = root485Instance.new("UICorner", header).CornerRadius = UDim.new(0, 12)486487local headerFix = Instance.new("Frame")488headerFix.Size = UDim2.new(1, 0, 0, 16)489headerFix.Position = UDim2.new(0, 0, 1, -16)490headerFix.BackgroundColor3 = Color3.fromRGB(24, 24, 30)491headerFix.BorderSizePixel = 0492headerFix.Parent = header493494local title = Instance.new("TextLabel")495title.Size = UDim2.new(1, -20, 0, 22)496title.Position = UDim2.fromOffset(14, 6)497title.BackgroundTransparency = 1498title.Font = Enum.Font.GothamBold499title.TextSize = 18500title.TextXAlignment = Enum.TextXAlignment.Left501title.TextColor3 = Color3.fromRGB(240, 240, 245)502title.Text = "Anime Auto"503title.Parent = header504505local subtitle = Instance.new("TextLabel")506subtitle.Name = "Status"507subtitle.Size = UDim2.new(1, -20, 0, 14)508subtitle.Position = UDim2.fromOffset(14, 26)509subtitle.BackgroundTransparency = 1510subtitle.Font = Enum.Font.Gotham511subtitle.TextSize = 11512subtitle.TextXAlignment = Enum.TextXAlignment.Left513subtitle.TextColor3 = Color3.fromRGB(130, 130, 145)514subtitle.Text = "..."515subtitle.Parent = header516517local sidebar = Instance.new("Frame")518sidebar.Size = UDim2.new(0, 140, 1, -52)519sidebar.Position = UDim2.fromOffset(8, 48)520sidebar.BackgroundColor3 = Color3.fromRGB(24, 24, 30)521sidebar.BorderSizePixel = 0522sidebar.Parent = root523Instance.new("UICorner", sidebar).CornerRadius = UDim.new(0, 8)524525local sideList = Instance.new("UIListLayout")526sideList.Padding = UDim.new(0, 4)527sideList.SortOrder = Enum.SortOrder.LayoutOrder528sideList.Parent = sidebar529530local sidePad = Instance.new("UIPadding")531sidePad.PaddingTop = UDim.new(0, 8)532sidePad.PaddingLeft = UDim.new(0, 8)533sidePad.PaddingRight = UDim.new(0, 8)534sidePad.Parent = sidebar535536local content = Instance.new("Frame")537content.Size = UDim2.new(1, -164, 1, -56)538content.Position = UDim2.fromOffset(156, 48)539content.BackgroundColor3 = Color3.fromRGB(24, 24, 30)540content.BorderSizePixel = 0541content.Parent = root542Instance.new("UICorner", content).CornerRadius = UDim.new(0, 8)543544local pages = {}545local activeTab = nil546local tabButtons = {}547548local function makePage(name)549 local page = Instance.new("ScrollingFrame")550 page.Name = name551 page.Size = UDim2.new(1, -12, 1, -12)552 page.Position = UDim2.fromOffset(6, 6)553 page.BackgroundTransparency = 1554 page.BorderSizePixel = 0555 page.ScrollBarThickness = 4556 page.AutomaticCanvasSize = Enum.AutomaticSize.Y557 page.CanvasSize = UDim2.new(0, 0, 0, 0)558 page.Visible = false559 page.Parent = content560561 local lay = Instance.new("UIListLayout")562 lay.Padding = UDim.new(0, 5)563 lay.SortOrder = Enum.SortOrder.LayoutOrder564 lay.Parent = page565566 local pad = Instance.new("UIPadding")567 pad.PaddingTop = UDim.new(0, 4)568 pad.PaddingBottom = UDim.new(0, 8)569 pad.PaddingLeft = UDim.new(0, 4)570 pad.PaddingRight = UDim.new(0, 4)571 pad.Parent = page572573 pages[name] = page574 return page575end576577local function selectTab(name)578 activeTab = name579 for n, page in pairs(pages) do580 page.Visible = (n == name)581 end582 for n, btn in pairs(tabButtons) do583 if n == name then584 btn.BackgroundColor3 = Color3.fromRGB(70, 180, 100)585 btn.TextColor3 = Color3.fromRGB(20, 20, 24)586 else587 btn.BackgroundColor3 = Color3.fromRGB(34, 34, 42)588 btn.TextColor3 = Color3.fromRGB(210, 210, 220)589 end590 end591end592593local function addTab(name, order)594 local btn = Instance.new("TextButton")595 btn.Size = UDim2.new(1, 0, 0, 34)596 btn.BackgroundColor3 = Color3.fromRGB(34, 34, 42)597 btn.Font = Enum.Font.GothamMedium598 btn.TextSize = 13599 btn.TextColor3 = Color3.fromRGB(210, 210, 220)600 btn.Text = name601 btn.AutoButtonColor = false602 btn.LayoutOrder = order603 btn.Parent = sidebar604 Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 6)605 tabButtons[name] = btn606 btn.MouseButton1Click:Connect(function()607 selectTab(name)608 end)609 makePage(name)610end611612local orderCounter = 0613local function nextOrder(page)614 orderCounter += 1615 -- per-page order via counting children roughly616 return page:GetAttribute("o") and 0 or 0617end618619local function section(page, text)620 local l = Instance.new("TextLabel")621 l.Size = UDim2.new(1, -4, 0, 20)622 l.BackgroundTransparency = 1623 l.Font = Enum.Font.GothamMedium624 l.TextSize = 12625 l.TextXAlignment = Enum.TextXAlignment.Left626 l.TextColor3 = Color3.fromRGB(120, 120, 135)627 l.Text = text628 l.LayoutOrder = #page:GetChildren() + 1629 l.Parent = page630end631632local function row(page, h)633 local f = Instance.new("Frame")634 f.Size = UDim2.new(1, -4, 0, h or 30)635 f.BackgroundColor3 = Color3.fromRGB(32, 32, 40)636 f.BorderSizePixel = 0637 f.LayoutOrder = #page:GetChildren() + 1638 f.Parent = page639 Instance.new("UICorner", f).CornerRadius = UDim.new(0, 6)640 return f641end642643local function makeToggle(parent, text, get, set)644 local label = Instance.new("TextLabel")645 label.Size = UDim2.new(1, -56, 1, 0)646 label.Position = UDim2.fromOffset(10, 0)647 label.BackgroundTransparency = 1648 label.Font = Enum.Font.Gotham649 label.TextSize = 13650 label.TextXAlignment = Enum.TextXAlignment.Left651 label.TextColor3 = Color3.fromRGB(220, 220, 230)652 label.Text = text653 label.Parent = parent654655 local btn = Instance.new("TextButton")656 btn.Size = UDim2.fromOffset(38, 20)657 btn.Position = UDim2.new(1, -46, 0.5, -10)658 btn.BackgroundColor3 = Color3.fromRGB(55, 55, 65)659 btn.Text = ""660 btn.AutoButtonColor = false661 btn.Parent = parent662 Instance.new("UICorner", btn).CornerRadius = UDim.new(1, 0)663664 local knob = Instance.new("Frame")665 knob.Size = UDim2.fromOffset(16, 16)666 knob.Position = UDim2.fromOffset(2, 2)667 knob.BackgroundColor3 = Color3.fromRGB(245, 245, 250)668 knob.BorderSizePixel = 0669 knob.Parent = btn670 Instance.new("UICorner", knob).CornerRadius = UDim.new(1, 0)671672 local function refresh()673 local on = get()674 btn.BackgroundColor3 = on and Color3.fromRGB(70, 180, 100) or Color3.fromRGB(55, 55, 65)675 knob.Position = on and UDim2.fromOffset(20, 2) or UDim2.fromOffset(2, 2)676 end677 btn.MouseButton1Click:Connect(function()678 set(not get())679 refresh()680 end)681 refresh()682end683684local function feature(page, label, key, fn)685 local r = row(page, 32)686 makeToggle(r, label, function()687 return cfg[key]688 end, function(on)689 setFeature(key, on, fn)690 end)691end692693local function mapT(page, label, map, key)694 local r = row(page, 28)695 makeToggle(r, label, function()696 return map[key]697 end, function(on)698 map[key] = on699 end)700end701702local function numBox(page, labelText, get, set)703 local r = row(page, 32)704 local label = Instance.new("TextLabel")705 label.Size = UDim2.new(0.55, 0, 1, 0)706 label.Position = UDim2.fromOffset(10, 0)707 label.BackgroundTransparency = 1708 label.Font = Enum.Font.Gotham709 label.TextSize = 13710 label.TextXAlignment = Enum.TextXAlignment.Left711 label.TextColor3 = Color3.fromRGB(210, 210, 220)712 label.Text = labelText713 label.Parent = r714715 local box = Instance.new("TextBox")716 box.Size = UDim2.new(0.4, -12, 0, 22)717 box.Position = UDim2.new(0.58, 0, 0.5, -11)718 box.BackgroundColor3 = Color3.fromRGB(42, 42, 52)719 box.Font = Enum.Font.Gotham720 box.TextSize = 13721 box.TextColor3 = Color3.fromRGB(235, 235, 240)722 box.Text = tostring(get())723 box.ClearTextOnFocus = false724 box.Parent = r725 Instance.new("UICorner", box).CornerRadius = UDim.new(0, 5)726 box.FocusLost:Connect(function()727 local n = tonumber(box.Text)728 if n then set(n) end729 box.Text = tostring(get())730 end)731end732733local function actionBtn(page, text, callback)734 local b = Instance.new("TextButton")735 b.Size = UDim2.new(1, -4, 0, 34)736 b.BackgroundColor3 = Color3.fromRGB(50, 50, 62)737 b.Font = Enum.Font.GothamMedium738 b.TextSize = 13739 b.TextColor3 = Color3.fromRGB(230, 230, 240)740 b.Text = text741 b.AutoButtonColor = false742 b.LayoutOrder = #page:GetChildren() + 1743 b.Parent = page744 Instance.new("UICorner", b).CornerRadius = UDim.new(0, 6)745 b.MouseButton1Click:Connect(callback)746 return b747end748749-- tabs750addTab("Main", 1)751addTab("Spin", 2)752addTab("Sell", 3)753addTab("Hatch", 4)754addTab("Dice", 5)755addTab("Base", 6)756757local main = pages.Main758local spin = pages.Spin759local sell = pages.Sell760local hatch = pages.Hatch761local dice = pages.Dice762local base = pages.Base763764section(main, "QUICK TOGGLES")765feature(main, "Auto Spin", "AutoSpin", loopSpin)766feature(main, "Auto Sell", "AutoSell", loopSell)767do768 local r = row(main, 32)769 makeToggle(r, "Game Autosell", function()770 return cfg.GameAutosell771 end, function(on)772 cfg.GameAutosell = on773 syncGameAutosell(on)774 end)775end776feature(main, "Auto Claim pads", "AutoClaim", loopClaim)777feature(main, "Auto Place Best", "AutoPlaceBest", loopPlaceBest)778feature(main, "Auto Hatch", "AutoHatch", loopHatch)779feature(main, "Auto Rebirth", "AutoRebirth", loopRebirth)780feature(main, "Auto Fortune", "AutoFortune", loopFortune)781feature(main, "Auto Index", "AutoIndex", loopIndex)782feature(main, "Auto Upgrade Dice", "AutoUpgradeDice", loopUpgradeDice)783feature(main, "Auto Buy Dice", "AutoBuyDice", loopBuyDice)784feature(main, "Auto Buy Upgrades", "AutoBuyUpgrades", loopBuyUpgrades)785786section(spin, "SPEED")787numBox(spin, "Spin delay (sec)", function()788 return cfg.SpinDelay789end, function(v)790 cfg.SpinDelay = math.max(0, v)791end)792section(spin, "DICE TO SPIN")793for _, k in ipairs(DICE_KEYS) do794 mapT(spin, k, cfg.Dice, k)795end796797section(sell, "OPTIONS")798do799 local r = row(sell, 32)800 makeToggle(r, "Keep favourites", function()801 return cfg.KeepFavourites802 end, function(on)803 cfg.KeepFavourites = on804 end)805end806numBox(sell, "Sell delay (sec)", function()807 return cfg.SellDelay808end, function(v)809 cfg.SellDelay = math.max(0.1, v)810end)811812actionBtn(sell, "Sell now (filtered)", function()813 local tools = gatherTools()814 doSell(tools)815 print("[AnimeAuto]", statusSell, "tools:", #tools)816end)817818local tip = Instance.new("TextLabel")819tip.Size = UDim2.new(1, -4, 0, 36)820tip.BackgroundTransparency = 1821tip.Font = Enum.Font.Gotham822tip.TextSize = 11823tip.TextWrapped = true824tip.TextXAlignment = Enum.TextXAlignment.Left825tip.TextYAlignment = Enum.TextYAlignment.Top826tip.TextColor3 = Color3.fromRGB(140, 140, 155)827tip.Text = "SellItems: { Id = UniqueId, Type = \"Patapim\" }. Trait берётся из StringValue Trait."828tip.LayoutOrder = 999829tip.Parent = sell830831section(sell, "RARITY")832for _, r in ipairs(RARITIES) do833 mapT(sell, r, cfg.SellRarity, r)834end835section(sell, "MUTATION")836for _, m in ipairs(MUTATIONS) do837 mapT(sell, m, cfg.SellMutation, m)838end839840section(hatch, "HATCH")841numBox(hatch, "Amount", function()842 return cfg.HatchAmount843end, function(v)844 cfg.HatchAmount = math.max(1, math.floor(v))845end)846numBox(hatch, "Delay", function()847 return cfg.HatchDelay848end, function(v)849 cfg.HatchDelay = math.max(0.05, v)850end)851for _, e in ipairs(EGGS) do852 mapT(hatch, e, cfg.HatchEggs, e)853end854855section(dice, "BUY DICE")856for _, k in ipairs(DICE_KEYS) do857 mapT(dice, "Buy " .. k .. " (" .. tostring(DICE_PRICE[k] or "?") .. ")", cfg.BuyDice, k)858end859section(dice, "UPGRADES / FORTUNE")860numBox(dice, "Fortune delay (sec)", function()861 return cfg.FortuneDelay862end, function(v)863 cfg.FortuneDelay = math.max(1, v)864end)865866section(base, "PLACE / CLAIM / REBIRTH")867numBox(base, "Place Best every N min", function()868 return cfg.PlaceBestMinutes869end, function(v)870 cfg.PlaceBestMinutes = math.max(0.05, v)871end)872numBox(base, "Claim delay", function()873 return cfg.ClaimDelay874end, function(v)875 cfg.ClaimDelay = math.max(0.05, v)876end)877878selectTab("Main")879880-- status881task.spawn(function()882 while gui.Parent do883 local b = getMyBase()884 subtitle.Text = string.format(885 "Base %s | $%s | RB %s | %s",886 b and b.Name or "?",887 tostring(getMoney()),888 tostring(getRebirths()),889 statusSell890 )891 task.wait(0.5)892 end893end)894895-- drag by header896local dragging, dragStart, startPos897header.InputBegan:Connect(function(input)898 if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then899 dragging = true900 dragStart = input.Position901 startPos = root.Position902 input.Changed:Connect(function()903 if input.UserInputState == Enum.UserInputState.End then dragging = false end904 end)905 end906end)907UIS.InputChanged:Connect(function(input)908 if not dragging then return end909 if input.UserInputType ~= Enum.UserInputType.MouseMovement and input.UserInputType ~= Enum.UserInputType.Touch then return end910 local d = input.Position - dragStart911 root.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X, startPos.Y.Scale, startPos.Y.Offset + d.Y)912end)913914print("[AnimeAuto v3] UI tabs | sell capture armed")
Comments · …
Loading comments…