-- Fixed ESP Update -- ========================================== local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Camera = workspace.CurrentCamera local character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() local hrp = character:WaitForChild("HumanoidRootPart") local humanoid = character:WaitForChild("Humanoid") -- ==================== -- Main GUI -- ==================== local gui = Instance.new("ScreenGui",game.CoreGui) gui.Name = "AstroArsenal_GUI" local mainFrame = Instance.new("Frame",gui) mainFrame.Size = UDim2.new(0,600,0,600) mainFrame.Position = UDim2.new(0.5,-300,0.5,-300) mainFrame.BackgroundColor3 = Color3.fromRGB(35,35,35) mainFrame.BorderSizePixel = 0 mainFrame.Active = true mainFrame.Draggable = true local title = Instance.new("TextLabel",mainFrame) title.Text = "AstroArsenal GUI V1.3" title.Size = UDim2.new(1,0,0,50) title.BackgroundTransparency = 1 title.TextColor3 = Color3.fromRGB(0,200,255) title.Font = Enum.Font.GothamBold title.TextSize = 26 -- Tabs local tabNames = {"Aim","ESP","Player"} local tabFrames = {} local buttons = {} local tabsFrame = Instance.new("Frame",mainFrame) tabsFrame.Size = UDim2.new(1,0,0,50) tabsFrame.Position = UDim2.new(0,0,0,50) tabsFrame.BackgroundTransparency = 1 for i,name in ipairs(tabNames) do local btn = Instance.new("TextButton",tabsFrame) btn.Size = UDim2.new(1/#tabNames,-10,1,-10) btn.Position = UDim2.new((i-1)/#tabNames,5,0,5) btn.Text = name btn.BackgroundColor3 = Color3.fromRGB(50,50,50) btn.TextColor3 = Color3.fromRGB(255,255,255) btn.Font = Enum.Font.GothamBold btn.TextSize = 16 buttons[name] = btn local frameTab = Instance.new("Frame",mainFrame) frameTab.Size = UDim2.new(1,-20,1,-110) frameTab.Position = UDim2.new(0,10,0,110) frameTab.BackgroundTransparency = 1 frameTab.Visible = false tabFrames[name] = frameTab btn.MouseButton1Click:Connect(function() for _,f in pairs(tabFrames) do f.Visible=false end frameTab.Visible = true end) end tabFrames["Aim"].Visible = true -- ==================== -- Toggle Helper -- ==================== local function createToggle(parent,text,posY,default,callback) local frame = Instance.new("Frame",parent) frame.Size = UDim2.new(1,-20,0,40) frame.Position = UDim2.new(0,10,0,posY) frame.BackgroundTransparency = 1 local label = Instance.new("TextLabel",frame) label.Text = text label.Size = UDim2.new(0.8,0,1,0) label.BackgroundTransparency = 1 label.TextColor3 = Color3.fromRGB(255,255,255) label.Font = Enum.Font.Gotham label.TextSize = 16 label.TextXAlignment = Enum.TextXAlignment.Left local toggle = Instance.new("TextButton",frame) toggle.Size = UDim2.new(0.2,0,1,0) toggle.Position = UDim2.new(0.8,0,0,0) toggle.Text = default and "ON" or "OFF" toggle.BackgroundColor3 = default and Color3.fromRGB(0,200,0) or Color3.fromRGB(170,0,0) toggle.TextColor3 = Color3.fromRGB(255,255,255) toggle.Font = Enum.Font.GothamBold toggle.TextSize = 14 local state = default toggle.MouseButton1Click:Connect(function() state = not state toggle.Text = state and "ON" or "OFF" toggle.BackgroundColor3 = state and Color3.fromRGB(0,200,0) or Color3.fromRGB(170,0,0) callback(state) end) end -- ==================== -- Feature Flags -- ==================== local aimbotEnabled=false local silentAim=false local lockHead=false local espEnabled=false local tracersEnabled=false local espNamesHealth=false local fly=false local noclip=false local superSpeed=false -- AIM Tab local y=0 createToggle(tabFrames["Aim"],"Aimbot",y,false,function(s) aimbotEnabled=s end); y=y+50 createToggle(tabFrames["Aim"],"Silent Aim",y,false,function(s) silentAim=s end); y=y+50 createToggle(tabFrames["Aim"],"Lock Head",y,false,function(s) lockHead=s end); y=y+50 -- ESP Tab y=0 createToggle(tabFrames["ESP"],"ESP Enabled",y,false,function(s) espEnabled=s if not s then -- Clean up all ESP drawings for _,data in pairs(espTable) do for _,v in pairs(data) do if v.Remove then v:Remove() end end end espTable = {} end end); y=y+50 createToggle(tabFrames["ESP"],"Tracers",y,false,function(s) tracersEnabled=s end); y=y+50 createToggle(tabFrames["ESP"],"Name & Health",y,false,function(s) espNamesHealth=s end); y=y+50 -- PLAYER Tab y=0 createToggle(tabFrames["Player"],"Fly",y,false,function(s) fly=s end); y=y+50 createToggle(tabFrames["Player"],"Noclip",y,false,function(s) noclip=s end); y=y+50 createToggle(tabFrames["Player"],"Super Speed",y,false,function(s) superSpeed=s humanoid.WalkSpeed = s and 200 or 16 end); y=y+50 -- ==================== -- Arsenal-specific Logic -- ==================== local espTable = {} local rightClickHeld = false local BOX_SIZE = Vector2.new(50,50) -- default size -- Handle player removal & respawn Players.PlayerRemoving:Connect(function(plr) if espTable[plr] then for _,v in pairs(espTable[plr]) do if v.Remove then v:Remove() end end espTable[plr] = nil end end) Players.PlayerAdded:Connect(function(plr) plr.CharacterAdded:Connect(function() -- Clean old ESP objects if any if espTable[plr] then for _,v in pairs(espTable[plr]) do if v.Remove then v:Remove() end end espTable[plr] = nil end end) end) -- Right click tracking UserInputService.InputBegan:Connect(function(input,gameProcessed) if input.UserInputType==Enum.UserInputType.MouseButton2 then rightClickHeld = true end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType==Enum.UserInputType.MouseButton2 then rightClickHeld = false end end) RunService.RenderStepped:Connect(function() local camPos = Camera.CFrame.Position -- Noclip if noclip then for _,part in pairs(character:GetChildren()) do if part:IsA("BasePart") then part.CanCollide = false end end end -- Fly if fly then local moveDir = Vector3.new(0,0,0) if UserInputService:IsKeyDown(Enum.KeyCode.W) then moveDir = moveDir + Camera.CFrame.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.S) then moveDir = moveDir - Camera.CFrame.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.A) then moveDir = moveDir - Camera.CFrame.RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.D) then moveDir = moveDir + Camera.CFrame.RightVector end if moveDir.Magnitude>0 then hrp.Velocity = moveDir.Unit * (superSpeed and 200 or 50) end end -- ESP + Tracers if espEnabled then for _,plr in pairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Team ~= LocalPlayer.Team and plr.Character then local hum = plr.Character:FindFirstChild("Humanoid") local targetPart = plr.Character:FindFirstChild("HumanoidRootPart") or plr.Character:FindFirstChild("Torso") if hum and hum.Health > 0 and targetPart then if not espTable[plr] then local box = Drawing.new("Square") box.Color = Color3.fromRGB(0,255,0) box.Thickness = 2 box.Filled = false local tracer = Drawing.new("Line") tracer.Color = Color3.fromRGB(0,255,0) tracer.Thickness = 1 local nameText = Drawing.new("Text") nameText.Color = Color3.fromRGB(255,255,255) nameText.Size = 16 nameText.Center = true nameText.Outline = true nameText.Visible = false local healthBar = Drawing.new("Square") healthBar.Color = Color3.fromRGB(255,0,0) healthBar.Thickness = 1 healthBar.Filled = true healthBar.Visible = false espTable[plr] = {box=box,tracer=tracer,name=nameText,health=healthBar} end local screenPos, onScreen = Camera:WorldToViewportPoint(targetPart.Position) local data = espTable[plr] if onScreen then data.box.Position = Vector2.new(screenPos.X - BOX_SIZE.X/2, screenPos.Y - BOX_SIZE.Y/2) data.box.Size = BOX_SIZE data.box.Visible = true data.tracer.From = Vector2.new(Camera.ViewportSize.X/2,Camera.ViewportSize.Y) data.tracer.To = Vector2.new(screenPos.X,screenPos.Y) data.tracer.Color = Color3.fromRGB(0,math.clamp(255-((targetPart.Position-camPos).Magnitude*2),0,255),0) data.tracer.Visible = tracersEnabled if espNamesHealth then data.name.Text = plr.Name data.name.Position = Vector2.new(screenPos.X,screenPos.Y - 30) data.name.Visible = true local health = hum.Health local maxHealth = hum.MaxHealth local healthWidth = BOX_SIZE.X*(health/maxHealth) data.health.Size = Vector2.new(healthWidth,3) data.health.Position = Vector2.new(screenPos.X - BOX_SIZE.X/2,screenPos.Y - 20) data.health.Visible = true else data.name.Visible = false data.health.Visible = false end else data.box.Visible = false data.tracer.Visible = false data.name.Visible = false data.health.Visible = false end elseif espTable[plr] then -- Remove ESP for dead or invalid players local data = espTable[plr] for _,v in pairs(data) do if v.Remove then v:Remove() end end espTable[plr] = nil end elseif espTable[plr] then -- Remove ESP for invalid conditions local data = espTable[plr] for _,v in pairs(data) do if v.Remove then v:Remove() end end espTable[plr] = nil end end end -- Aimbot (Right Click) if aimbotEnabled and rightClickHeld then local closestPlayer local closestDist = math.huge for _,plr in pairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Team ~= LocalPlayer.Team and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then local screenPos, onScreen = Camera:WorldToViewportPoint(plr.Character.HumanoidRootPart.Position) if onScreen then local dist = (Vector2.new(screenPos.X,screenPos.Y)-Vector2.new(Camera.ViewportSize.X/2,Camera.ViewportSize.Y/2)).Magnitude if dist < closestDist then closestDist = dist closestPlayer = plr end end end end if closestPlayer and closestPlayer.Character then local targetPart = lockHead and closestPlayer.Character:FindFirstChild("Head") or closestPlayer.Character:FindFirstChild("HumanoidRootPart") Camera.CFrame = CFrame.lookAt(Camera.CFrame.Position,targetPart.Position) end end end)