local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/xHeptc/Kavo-UI-Library/main/source.lua"))() local Window = Library.CreateLib("🏙️ City Defense Tycoon", "Sentinel") local MainTab = Window:NewTab("Main") local MainSection = MainTab:NewSection("Main Section") local RaidTab = Window:NewTab("Raid") local StartRaidSection = RaidTab:NewSection("Start Raids") local SpawnMobSection = RaidTab:NewSection("Spawn Mobs") local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local playerLists = {} local mobLists = {} _G.AutoEarn = false _G.AutoBuy = false _G.AutoRebirth = false _G.SelectedRaidPlayer = nil _G.SelectedMob = nil _G.AutoSpawnMob = false local unitNames = { "Archer", "Turret", "Ninja", "Soldier", "Sniper", "Bomber", "Wizard" } local function isUnitName(name) for _, unitName in ipairs(unitNames) do if string.find(name:lower(), unitName:lower()) then return true end end return false end MainSection:NewToggle("Auto Earn", "Automatically earns for you", function(state) _G.AutoEarn = state while _G.AutoEarn and task.wait(-9e9) do game:GetService("ReplicatedStorage").Knit.Services.TycoonService.RF.PayIncome:InvokeServer(player) end end) MainSection:NewToggle("Auto Rebirth", "Automatically rebirths for you", function(state) _G.AutoRebirth = state while _G.AutoRebirth and task.wait(-9e9) do game:GetService("ReplicatedStorage").Knit.Services.TycoonService.RF.Rebirth:InvokeServer() end end) MainSection:NewToggle("Auto Buy", "Automatically buys the buttons for you", function(state) _G.AutoBuy = state while _G.AutoBuy and task.wait(-9e9) do for _, tycoon in ipairs(workspace:WaitForChild("Tycoons"):GetChildren()) do if tycoon:IsA("Folder") and tycoon:GetAttribute("Owner") == player.Name then local buttonFolder = tycoon:FindFirstChild("Buttons") if buttonFolder then for _, button in ipairs(buttonFolder:GetChildren()) do if button:IsA("Model") and not string.find(button.Name:lower(), "gamepass") then local purchaseType = isUnitName(button.Name) and 3 or 1 local tycoonService = game:GetService("ReplicatedStorage").Knit.Services.TycoonService tycoonService.RF.BuyObject:InvokeServer(button.Name, purchaseType) end end end end end end end) MainSection:NewButton("Infinite Cash", "Gives infinite cash", function() local args = { [1] = math.huge } game:GetService("ReplicatedStorage").Knit.Services.RaidService.RF.GiveReward:InvokeServer(unpack(args)) end) local PlayerDropdown = StartRaidSection:NewDropdown("Player", "Select a player", playerLists, function(currentOption) _G.SelectedRaidPlayer = currentOption end) StartRaidSection:NewButton("Start Raid", "Fires the remote to start a raid for the player", function() game:GetService("ReplicatedStorage").Knit.Services.RaidService.RF.StartRaid:InvokeServer(_G.SelectedRaidPlayer) end) local MobDropdown = SpawnMobSection:NewDropdown("Mob", "Select a mob", mobLists, function(currentOption) _G.SelectedMob = currentOption end) SpawnMobSection:NewToggle("Auto Spawn", "Automatically spawns the mob for you", function(state) _G.AutoSpawnMob = state while _G.AutoSpawnMob and task.wait(-9e9) do game:GetService("ReplicatedStorage"):WaitForChild("Knit"):WaitForChild("Services"):WaitForChild("RaidService"):WaitForChild("RF"):WaitForChild("SpawnMob"):InvokeServer(_G.SelectedMob or "Giant", 0) end end) for _, ePlayer in ipairs(game.Players:GetPlayers()) do if ePlayer.Name ~= player.Name then table.insert(playerLists, ePlayer.Name) end end PlayerDropdown:Refresh(playerLists) for _, mob in ipairs(player.PlayerGui.RaidUI.MobsFrame:GetChildren()) do if mob:IsA("TextButton") then table.insert(mobLists, mob.Name) end end MobDropdown:Refresh(mobLists) game.Players.PlayerAdded:Connect(function(newPlayer) if newPlayer.Name ~= player.Name then table.insert(playerLists, newPlayer.Name) PlayerDropdown:Refresh(playerLists) newPlayer.PlayerRemoving:Connect(function() for i, playerName in ipairs(playerLists) do if playerName == newPlayer.Name then table.remove(playerLists, i) PlayerDropdown:Refresh(playerLists) break end end end) end end) character.Humanoid.WalkSpeed = 60 player.CharacterAdded:Connect(function(newCharacter) character = newCharacter character.Humanoid.WalkSpeed = 60 end)