Josiahiscool73

Ant wars script

Aug 23rd, 2025
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.05 KB | None | 0 0
  1. --// Ant wars
  2. local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
  3.  
  4. local Players = game:GetService("Players")
  5. local ReplicatedStorage = game:GetService("ReplicatedStorage")
  6. local RunService = game:GetService("RunService")
  7. local UserInputService = game:GetService("UserInputService")
  8. local Workspace = workspace
  9.  
  10. local LocalPlayer = Players.LocalPlayer
  11.  
  12. -- REMOTES (edit here if needed)
  13. local ServerEvents = ReplicatedStorage:WaitForChild("ServerEvents")
  14. local BiteRemote = ServerEvents:WaitForChild("Bite")
  15. local DigRemote = ServerEvents:WaitForChild("Dig")
  16. local AcidRemote = ServerEvents:WaitForChild("Acid") -- note: uses InvokeServer in your sample
  17.  
  18. -- QUEEN TEAMS / PATH
  19. local QueenTeams = {"Fire Nation","Golden Empire","Leaf Kingdom","Concrete Clan"}
  20. local QueenBasePath = {"Map","Chambers"} -- workspace.Map.Chambers.<Team>.Queen
  21.  
  22. -- CONFIG / STATE
  23. local cfg = {
  24. -- Kill aura
  25. killAuraEnabled = false,
  26. killRange = 18,
  27. biteDelay = 0.12,
  28. teamCheck = true,
  29. healthCheck = true, -- only bite if target humanoid health > 0
  30.  
  31. -- Queen
  32. queenAuraEnabled = false,
  33. queenRange = 100,
  34. queenDelay = 0.4,
  35.  
  36. -- Acid
  37. acidEnabled = false,
  38. acidRange = 120,
  39. acidDelay = 0.6,
  40.  
  41. -- Dig
  42. digEnabled = false,
  43. digRadius = 10,
  44. digDelay = 0.06,
  45. digMode = "Tunnel", -- "Tunnel" or "Bubble"
  46. digRandomize = false,
  47.  
  48. -- ESP
  49. espEnabled = false,
  50. espRefresh = 0.06,
  51. espShowNames = true,
  52. espShowTracers = true,
  53. espShow2D = true,
  54. espShow3D = true,
  55. espColorEnemy = Color3.fromRGB(255,80,80),
  56. espColorAlly = Color3.fromRGB(120,220,120),
  57.  
  58. queenESPEnabled = false,
  59. queenESPColor = Color3.fromRGB(255,200,60),
  60. }
  61.  
  62. -- DRAWING STORAGE
  63. local espStore = {} -- [player] = {name, tracer, box2d_lines..., box3d_lines...}
  64. local queenHighlights = {} -- [queenModel] = Highlight
  65.  
  66. -- UTIL
  67. local function isValidCharacter(char)
  68. return char and char:FindFirstChild("Humanoid") and char:FindFirstChild("HumanoidRootPart")
  69. end
  70.  
  71. local function isEnemy(player)
  72. if not player or player == LocalPlayer then return false end
  73. if not player.Character or not player.Character:FindFirstChild("Humanoid") then return false end
  74. if cfg.teamCheck and player.Team == LocalPlayer.Team then return false end
  75. if cfg.healthCheck and player.Character.Humanoid.Health <= 0 then return false end
  76. return true
  77. end
  78.  
  79. local function getNearestEnemyWithin(range)
  80. local best, bestDist = nil, range or math.huge
  81. if not LocalPlayer.Character or not LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then return nil end
  82. local origin = LocalPlayer.Character.HumanoidRootPart.Position
  83. for _, plr in ipairs(Players:GetPlayers()) do
  84. if isEnemy(plr) then
  85. local root = plr.Character:FindFirstChild("HumanoidRootPart")
  86. if root then
  87. local d = (root.Position - origin).Magnitude
  88. if d < bestDist then
  89. bestDist = d
  90. best = plr
  91. end
  92. end
  93. end
  94. end
  95. return best, bestDist
  96. end
  97.  
  98. local function getQueenModelsInRange(range)
  99. local results = {}
  100. if not LocalPlayer.Character or not LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then return results end
  101. local origin = LocalPlayer.Character.HumanoidRootPart.Position
  102. for _, teamName in ipairs(QueenTeams) do
  103. local success, teamFolder = pcall(function()
  104. return Workspace:FindFirstChild("Map") and Workspace.Map:FindFirstChild("Chambers") and Workspace.Map.Chambers:FindFirstChild(teamName)
  105. end)
  106. if success and teamFolder then
  107. local queen = teamFolder:FindFirstChild("Queen")
  108. if queen and queen:FindFirstChild("HumanoidRootPart") and queen:FindFirstChild("Humanoid") then
  109. if cfg.teamCheck and teamName == (LocalPlayer.Team and LocalPlayer.Team.Name or "") then
  110. -- skip own queen
  111. else
  112. local d = (queen.HumanoidRootPart.Position - origin).Magnitude
  113. if d <= range then
  114. table.insert(results, queen)
  115. end
  116. end
  117. end
  118. end
  119. end
  120. return results
  121. end
  122.  
  123. -- 3D BOX HELPERS
  124. local function worldToScreenVector(v)
  125. local cam = Workspace.CurrentCamera
  126. local p = cam:WorldToViewportPoint(v)
  127. return Vector2.new(p.X, p.Y), p.Z > 0
  128. end
  129.  
  130. local function make3DBoxCorners(hrp, size)
  131. -- hrp: Instance (HumanoidRootPart) ; size: Vector3 extents (half-size)
  132. local cf = hrp.CFrame
  133. local sx, sy, sz = size.X, size.Y, size.Z
  134. local offs = {
  135. Vector3.new( sx, sy, sz),
  136. Vector3.new( sx, sy, -sz),
  137. Vector3.new(-sx, sy, -sz),
  138. Vector3.new(-sx, sy, sz),
  139. Vector3.new( sx, -sy, sz),
  140. Vector3.new( sx, -sy, -sz),
  141. Vector3.new(-sx, -sy, -sz),
  142. Vector3.new(-sx, -sy, sz),
  143. }
  144. local corners = {}
  145. for i=1,8 do
  146. corners[i] = (cf * CFrame.new(offs[i])).p
  147. end
  148. return corners
  149. end
  150.  
  151. local function draw3DBoxForPlayer(player, color)
  152. if not player or not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then return end
  153. local hrp = player.Character.HumanoidRootPart
  154. -- size estimate: use Humanoid.HipHeight + extents approx
  155. local size = Vector3.new(1.5, (player.Character.Humanoid and player.Character.Humanoid.HipHeight or 2) + 1, 1.0)
  156. local corners = make3DBoxCorners(hrp, size)
  157. local to2d = {}
  158. local cam = Workspace.CurrentCamera
  159. for i, c in ipairs(corners) do
  160. local p, vis = cam:WorldToViewportPoint(c)
  161. to2d[i] = {pos = Vector2.new(p.X, p.Y), vis = vis}
  162. end
  163. -- edges pairs
  164. local edges = {
  165. {1,2},{2,3},{3,4},{4,1}, -- top
  166. {5,6},{6,7},{7,8},{8,5}, -- bottom
  167. {1,5},{2,6},{3,7},{4,8} -- sides
  168. }
  169. local lines = {}
  170. for _, e in ipairs(edges) do
  171. local a, b = e[1], e[2]
  172. local A, B = to2d[a], to2d[b]
  173. if A and B and A.vis and B.vis then
  174. local ln = Drawing.new("Line")
  175. ln.From = A.pos
  176. ln.To = B.pos
  177. ln.Color = color
  178. ln.Thickness = 1.6
  179. ln.Transparency = 1
  180. table.insert(lines, ln)
  181. end
  182. end
  183. return lines
  184. end
  185.  
  186. -- 2D BOX helper: simple top/bottom projection
  187. local function draw2DBoxForPlayer(player, color)
  188. if not player or not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then return end
  189. local cam = Workspace.CurrentCamera
  190. local root = player.Character.HumanoidRootPart
  191. local head = player.Character:FindFirstChild("Head")
  192. if not head then return end
  193. local topPos, topVis = cam:WorldToViewportPoint(head.Position + Vector3.new(0,0.5,0))
  194. local bottomPos, bottomVis = cam:WorldToViewportPoint(root.Position - Vector3.new(0,1,0))
  195. if not topVis or not bottomVis then return nil end
  196. local height = math.abs(topPos.Y - bottomPos.Y)
  197. local width = math.clamp(height/2.2, 20, 200)
  198. local x = topPos.X - width/2
  199. local y = topPos.Y
  200. local rectLines = {}
  201. -- four edges
  202. local tl = Vector2.new(x, y)
  203. local tr = Vector2.new(x + width, y)
  204. local bl = Vector2.new(x, y + height)
  205. local br = Vector2.new(x + width, y + height)
  206. local pts = {{tl,tr},{tr,br},{br,bl},{bl,tl}}
  207. for _, p in ipairs(pts) do
  208. local ln = Drawing.new("Line")
  209. ln.From = p[1]
  210. ln.To = p[2]
  211. ln.Color = color
  212. ln.Thickness = 1.6
  213. ln.Transparency = 1
  214. table.insert(rectLines, ln)
  215. end
  216. return rectLines, Vector2.new(x + width/2, y + height + 4) -- return center-bottom for name label
  217. end
  218.  
  219. -- ESP Management
  220. local function clearPlayerESP(player)
  221. local s = espStore[player]
  222. if s then
  223. if s.nameLabel then s.nameLabel:Remove() end
  224. if s.tracer then s.tracer:Remove() end
  225. if s.box2d then
  226. for _, ln in ipairs(s.box2d) do ln:Remove() end
  227. end
  228. if s.box3d then
  229. for _, ln in ipairs(s.box3d) do ln:Remove() end
  230. end
  231. espStore[player] = nil
  232. end
  233. end
  234.  
  235. local function createOrUpdatePlayerESP(player)
  236. if not player or not player.Character then return end
  237. local color = (player.Team == LocalPlayer.Team) and cfg.espColorAlly or cfg.espColorEnemy
  238. espStore[player] = espStore[player] or {}
  239. local s = espStore[player]
  240.  
  241. -- name label
  242. if cfg.espShowNames then
  243. if s.nameLabel == nil then
  244. local nameText = Drawing.new("Text")
  245. nameText.Center = true
  246. nameText.Size = 14
  247. nameText.Font = 2
  248. nameText.Outline = true
  249. nameText.OutlineColor = Color3.new(0,0,0)
  250. s.nameLabel = nameText
  251. end
  252. local cam = Workspace.CurrentCamera
  253. local head = player.Character:FindFirstChild("Head")
  254. if head then
  255. local p = cam:WorldToViewportPoint(head.Position + Vector3.new(0,0.6,0))
  256. local vis = p.Z > 0
  257. s.nameLabel.Text = player.Name
  258. s.nameLabel.Position = Vector2.new(p.X, p.Y - 12)
  259. s.nameLabel.Visible = vis
  260. s.nameLabel.Color = color
  261. end
  262. else
  263. if s.nameLabel then s.nameLabel:Remove(); s.nameLabel = nil end
  264. end
  265.  
  266. -- tracer
  267. if cfg.espShowTracers then
  268. if s.tracer == nil then
  269. local ln = Drawing.new("Line")
  270. ln.Thickness = 1
  271. ln.Transparency = 1
  272. ln.Color = color
  273. s.tracer = ln
  274. end
  275. local cam = Workspace.CurrentCamera
  276. local root = player.Character:FindFirstChild("HumanoidRootPart")
  277. if root then
  278. local p = cam:WorldToViewportPoint(root.Position)
  279. local vis = p.Z > 0
  280. s.tracer.From = Vector2.new(LocalPlayer:GetMouse().X, LocalPlayer:GetMouse().Y + game:GetService("GuiService"):GetGuiInset().Y)
  281. s.tracer.To = Vector2.new(p.X, p.Y)
  282. s.tracer.Visible = vis
  283. s.tracer.Color = color
  284. end
  285. else
  286. if s.tracer then s.tracer:Remove(); s.tracer = nil end
  287. end
  288.  
  289. -- 2D box
  290. if cfg.espShow2D then
  291. if s.box2d then
  292. for _, ln in ipairs(s.box2d) do ln:Remove() end
  293. s.box2d = nil
  294. end
  295. local rect, namePos = draw2DBoxForPlayer(player, color)
  296. if rect then
  297. s.box2d = rect
  298. end
  299. else
  300. if s.box2d then for _, ln in ipairs(s.box2d) do ln:Remove() end s.box2d = nil end
  301. end
  302.  
  303. -- 3D box
  304. if cfg.espShow3D then
  305. if s.box3d then
  306. for _, ln in ipairs(s.box3d) do ln:Remove() end
  307. s.box3d = nil
  308. end
  309. local lines = draw3DBoxForPlayer(player, color)
  310. if lines then s.box3d = lines end
  311. else
  312. if s.box3d then for _, ln in ipairs(s.box3d) do ln:Remove() end s.box3d = nil end
  313. end
  314. end
  315.  
  316. -- Queen ESP: highlight + 3D box
  317. local function clearAllQueenESP()
  318. for model, highlight in pairs(queenHighlights) do
  319. if highlight and highlight.Parent then highlight:Destroy() end
  320. end
  321. queenHighlights = {}
  322. end
  323.  
  324. local function applyQueenESPForModel(queenModel)
  325. if not queenModel or not queenModel:FindFirstChild("HumanoidRootPart") then return end
  326. if queenHighlights[queenModel] then return end
  327. local hl = Instance.new("Highlight")
  328. hl.Name = "CapybaraQueenHighlight"
  329. hl.Adornee = queenModel
  330. hl.FillColor = cfg.queenESPColor
  331. hl.OutlineColor = Color3.new(1,1,1)
  332. hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
  333. hl.Parent = queenModel
  334. queenHighlights[queenModel] = hl
  335. end
  336.  
  337. -- CLEANUP ON PLAYER JOIN/LEAVE
  338. Players.PlayerRemoving:Connect(function(plr) clearPlayerESP(plr) end)
  339.  
  340. -- MAIN LOOPS
  341.  
  342. -- Kill Aura loop
  343. task.spawn(function()
  344. while task.wait(cfg.biteDelay) do
  345. if cfg.killAuraEnabled then
  346. local target, dist = getNearestEnemyWithin(cfg.killRange)
  347. if target and target.Character and target.Character:FindFirstChild("HumanoidRootPart") and target.Character:FindFirstChild("Humanoid") then
  348. -- fire Bite remote
  349. pcall(function()
  350. BiteRemote:FireServer("Bite", target.Character.Humanoid, target.Character.HumanoidRootPart)
  351. end)
  352. end
  353. end
  354. end
  355. end)
  356.  
  357. -- Queen Kill Aura loop
  358. task.spawn(function()
  359. while task.wait(cfg.queenDelay) do
  360. if cfg.queenAuraEnabled then
  361. local queens = getQueenModelsInRange(cfg.queenRange)
  362. for _, q in ipairs(queens) do
  363. if q and q:FindFirstChild("Humanoid") and q:FindFirstChild("HumanoidRootPart") then
  364. pcall(function()
  365. BiteRemote:FireServer("Bite", q.Humanoid, q.HumanoidRootPart)
  366. end)
  367. end
  368. end
  369. end
  370. end
  371. end)
  372.  
  373. -- Acid aimbot loop
  374. task.spawn(function()
  375. while task.wait(cfg.acidDelay) do
  376. if cfg.acidEnabled then
  377. local enemy, dist = getNearestEnemyWithin(cfg.acidRange)
  378. if enemy and enemy.Character and enemy.Character:FindFirstChild("HumanoidRootPart") then
  379. local pos = enemy.Character.HumanoidRootPart.Position
  380. pcall(function()
  381. AcidRemote:InvokeServer(pos)
  382. end)
  383. end
  384. end
  385. end
  386. end)
  387.  
  388. -- Dig aura loop (optimized sampling)
  389. local function sampleDigPositions(origin, radius, mode)
  390. local positions = {}
  391. local step = 2 -- spacing for samples; lower = more calls
  392. if mode == "Tunnel" then
  393. -- sample disc around player at y=origin.Y
  394. for x = -radius, radius, step do
  395. for z = -radius, radius, step do
  396. local p = origin + Vector3.new(x, 0, z)
  397. if (p - origin).Magnitude <= radius then
  398. table.insert(positions, p)
  399. end
  400. end
  401. end
  402. else
  403. -- Bubble: sample sphere surface/volume
  404. for x = -radius, radius, step do
  405. for y = -radius, radius, step do
  406. for z = -radius, radius, step do
  407. local offs = Vector3.new(x, y, z)
  408. if offs.Magnitude <= radius then
  409. table.insert(positions, origin + offs)
  410. end
  411. end
  412. end
  413. end
  414. end
  415. return positions
  416. end
  417.  
  418. task.spawn(function()
  419. while task.wait(cfg.digDelay) do
  420. if cfg.digEnabled then
  421. if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
  422. local origin = LocalPlayer.Character.HumanoidRootPart.Position
  423. local positions = sampleDigPositions(origin, cfg.digRadius, cfg.digMode)
  424. for _, pos in ipairs(positions) do
  425. local finalPos = pos
  426. if cfg.digRandomize then
  427. finalPos = pos + Vector3.new(math.random()-0.5, math.random()-0.5, math.random()-0.5)
  428. end
  429. pcall(function()
  430. DigRemote:FireServer(finalPos)
  431. end)
  432. end
  433. end
  434. end
  435. end
  436. end)
  437.  
  438. -- ESP render loop
  439. local espAcc = 0
  440. RunService.RenderStepped:Connect(function(dt)
  441. if cfg.espEnabled then
  442. espAcc = espAcc + dt
  443. if espAcc >= cfg.espRefresh then
  444. espAcc = 0
  445. for _, plr in ipairs(Players:GetPlayers()) do
  446. if plr ~= LocalPlayer and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then
  447. if isEnemy(plr) or (not cfg.teamCheck) then
  448. createOrUpdatePlayerESP(plr)
  449. else
  450. clearPlayerESP(plr)
  451. end
  452. else
  453. clearPlayerESP(plr)
  454. end
  455. end
  456. end
  457. else
  458. -- clean visuals if disabled
  459. for plr, _ in pairs(espStore) do clearPlayerESP(plr) end
  460. end
  461.  
  462. -- Queen ESP handling
  463. if cfg.queenESPEnabled then
  464. clearAllQueenESP()
  465. for _, qmodel in ipairs(getQueenModelsInRange(99999)) do
  466. applyQueenESPForModel(qmodel)
  467. -- optional 3D box via Drawing (we can draw edges similarly)
  468. if cfg.espShow3D then
  469. -- approximate by drawing cube at queen's hrp
  470. local lines = draw3DBoxForPlayer({Character = qmodel}, cfg.queenESPColor) -- hack: draw3DBoxForPlayer expects player but uses Character
  471. if lines then
  472. -- keep them for single frame; remove next tick
  473. delay(cfg.espRefresh, function() for _,ln in ipairs(lines) do ln:Remove() end end)
  474. end
  475. end
  476. end
  477. else
  478. clearAllQueenESP()
  479. end
  480. end)
  481.  
  482. -- Player join handler to initialize ESP when toggled
  483. Players.PlayerAdded:Connect(function(plr)
  484. if cfg.espEnabled then
  485. -- will be processed on next render tick
  486. end
  487. end)
  488.  
  489. -- UI
  490. local Window = Rayfield:CreateWindow({
  491. Name = "Capybara Hub | Ant Wars",
  492. LoadingTitle = "Capybara Hub",
  493. LoadingSubtitle = "Open source, Safe, Free, Undetected",
  494. ConfigurationSaving = {
  495. Enabled = true,
  496. FolderName = "CapybaraHub_AntWars",
  497. FileName = "Config"
  498. },
  499. ToggleUIKeybind = "K"
  500. })
  501.  
  502. -- Combat Tab
  503. local TabCombat = Window:CreateTab("Combat", 4483362458)
  504. local SecKA = TabCombat:CreateSection("Player Kill Aura")
  505. TabCombat:CreateToggle({ Name = "Enable Kill Aura", CurrentValue = false, Callback = function(v) cfg.killAuraEnabled = v end })
  506. TabCombat:CreateSlider({ Name = "Kill Range", Range = {5, 60}, Increment = 1, CurrentValue = cfg.killRange, Callback = function(v) cfg.killRange = v end })
  507. TabCombat:CreateSlider({ Name = "Bite Delay (s)", Range = {0.05, 0.5}, Increment = 0.01, CurrentValue = cfg.biteDelay, Callback = function(v) cfg.biteDelay = v end })
  508. TabCombat:CreateToggle({ Name = "Team Check (Don't hit teammates)", CurrentValue = cfg.teamCheck, Callback = function(v) cfg.teamCheck = v end })
  509. TabCombat:CreateToggle({ Name = "Require Health > 0", CurrentValue = cfg.healthCheck, Callback = function(v) cfg.healthCheck = v end })
  510.  
  511. local SecQueen = TabCombat:CreateSection("Queen Kill Aura")
  512. TabCombat:CreateToggle({ Name = "Enable Queen Kill Aura", CurrentValue = false, Callback = function(v) cfg.queenAuraEnabled = v end })
  513. TabCombat:CreateSlider({ Name = "Queen Range", Range = {20, 300}, Increment = 1, CurrentValue = cfg.queenRange, Callback = function(v) cfg.queenRange = v end })
  514. TabCombat:CreateSlider({ Name = "Queen Bite Delay (s)", Range = {0.05, 1}, Increment = 0.01, CurrentValue = cfg.queenDelay, Callback = function(v) cfg.queenDelay = v end })
  515.  
  516. local SecAcid = TabCombat:CreateSection("Acid Aimbot")
  517. TabCombat:CreateToggle({ Name = "Enable Acid Aimbot", CurrentValue = false, Callback = function(v) cfg.acidEnabled = v end })
  518. TabCombat:CreateSlider({ Name = "Acid Range", Range = {20, 300}, Increment = 1, CurrentValue = cfg.acidRange, Callback = function(v) cfg.acidRange = v end })
  519. TabCombat:CreateSlider({ Name = "Acid Delay (s)", Range = {0.05, 2}, Increment = 0.01, CurrentValue = cfg.acidDelay, Callback = function(v) cfg.acidDelay = v end })
  520.  
  521. -- Dig Tab
  522. local TabDig = Window:CreateTab("Dig Aura", 4483362458)
  523. TabDig:CreateToggle({ Name = "Enable Dig Aura", CurrentValue = false, Callback = function(v) cfg.digEnabled = v end })
  524. TabDig:CreateSlider({ Name = "Dig Radius", Range = {3, 25}, Increment = 1, CurrentValue = cfg.digRadius, Callback = function(v) cfg.digRadius = v end })
  525. TabDig:CreateDropdown({ Name = "Dig Mode", Options = {"Tunnel","Bubble"}, CurrentOption = {cfg.digMode}, Callback = function(opt) cfg.digMode = opt[1] end })
  526. TabDig:CreateToggle({ Name = "Randomize Positions", CurrentValue = false, Callback = function(v) cfg.digRandomize = v end })
  527. TabDig:CreateSlider({ Name = "Dig Delay (s)", Range = {0.01, 0.3}, Increment = 0.01, CurrentValue = cfg.digDelay, Callback = function(v) cfg.digDelay = v end })
  528.  
  529. -- ESP Tab
  530. local TabESP = Window:CreateTab("ESP", 4483362458)
  531. TabESP:CreateToggle({ Name = "Enable Player ESP(Most likely will crash you dont use)", CurrentValue = false, Callback = function(v) cfg.espEnabled = v if not v then for p,_ in pairs(espStore) do clearPlayerESP(p) end end end })
  532. TabESP:CreateToggle({ Name = "Show Names", CurrentValue = true, Callback = function(v) cfg.espShowNames = v end })
  533. TabESP:CreateToggle({ Name = "Show Tracers", CurrentValue = true, Callback = function(v) cfg.espShowTracers = v end })
  534. TabESP:CreateToggle({ Name = "Show 2D Box", CurrentValue = true, Callback = function(v) cfg.espShow2D = v end })
  535. TabESP:CreateToggle({ Name = "Show 3D Box (edges)", CurrentValue = true, Callback = function(v) cfg.espShow3D = v end })
  536. TabESP:CreateSlider({ Name = "ESP Refresh Rate (s)", Range = {0.02, 0.2}, Increment = 0.01, CurrentValue = cfg.espRefresh, Callback = function(v) cfg.espRefresh = v end })
  537. TabESP:CreateColorPicker({ Name = "Enemy Color", Default = cfg.espColorEnemy, Callback = function(c) cfg.espColorEnemy = c end })
  538. TabESP:CreateColorPicker({ Name = "Ally Color", Default = cfg.espColorAlly, Callback = function(c) cfg.espColorAlly = c end })
  539.  
  540. local TabQueenESP = Window:CreateTab("Queen ESP", 4483362458)
  541. TabQueenESP:CreateToggle({ Name = "Enable Queen ESP", CurrentValue = false, Callback = function(v) cfg.queenESPEnabled = v if not v then clearAllQueenESP() end end })
  542. TabQueenESP:CreateColorPicker({ Name = "Queen Color", Default = cfg.queenESPColor, Callback = function(c) cfg.queenESPColor = c end })
  543.  
  544. -- Unload button
  545. TabCombat:CreateButton({ Name = "Unload Capybara Hub (cleanup)", Callback = function()
  546. -- cleanup drawings
  547. for p,_ in pairs(espStore) do clearPlayerESP(p) end
  548. clearAllQueenESP()
  549. Rayfield:Destroy()
  550. -- optional: attempt to clean created instances
  551. -- script destroy (if this script is a Script instance)
  552. pcall(function() script:Destroy() end)
  553. end })
  554.  
Advertisement
Add Comment
Please, Sign In to add comment