local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local CoreGui = game:GetService("CoreGui") local LocalPlayer = Players.LocalPlayer local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() local Humanoid = Character:WaitForChild("Humanoid") local RootPart = Character:WaitForChild("HumanoidRootPart") -- Update references when character respawns LocalPlayer.CharacterAdded:Connect(function(newChar) Character = newChar Humanoid = newChar:WaitForChild("Humanoid") RootPart = newChar:WaitForChild("HumanoidRootPart") end) -- === CONFIGURABLE SETTINGS === local ArenaCenter = workspace["ExeDi's SwordFight Model"].Part.OuterRing.Position local ArenaRadius = 45 -- Max distance from center to still be considered "in arena" local AttackRange = 4 -- How close you need to be to start circling/attacking local ToolAttackRadius = math.random(6, 8) -- Distance for tool auto-attack (randomized a bit) local BotEnabled = false local WalkSpeed = 16 local JumpPower = 50 local IdleWanderMode = false local NextWanderTime = 0 local WanderChancePerFrame = 0.1 -- === UTILITY FUNCTIONS === local function GetRandomPointInRing() local angle = math.random() * math.pi * 2 local distance = math.random() * (ArenaRadius - 5) return ArenaCenter + Vector3.new(math.cos(angle) * distance, 0, math.sin(angle) * distance) end local function MoveTo(pos) if Humanoid then Humanoid:MoveTo(pos) end end local function IsInsideArena() if (RootPart.Position - ArenaCenter).Magnitude > ArenaRadius - 5 then MoveTo(ArenaCenter) return false end return true end local function PlayerHasTool(plr) if not plr.Character then return false end return plr.Character:FindFirstChildOfClass("Tool") or plr.Backpack:FindFirstChildOfClass("Tool") end -- Returns all valid enemies inside the arena that have a tool equipped/in backpack local function GetEnemiesInArena() local enemies = {} for _, plr in ipairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then local hrp = plr.Character.HumanoidRootPart local hum = plr.Character:FindFirstChild("Humanoid") if hum and hum.Health > 0 and (hrp.Position - ArenaCenter).Magnitude <= ArenaRadius and PlayerHasTool(plr) then table.insert(enemies, plr) end end end return enemies end -- Returns the closest valid enemy local function GetClosestEnemy() local closestPlayer = nil local closestDist = math.huge for _, plr in ipairs(GetEnemiesInArena()) do local theirRoot = plr.Character:FindFirstChild("HumanoidRootPart") local theirHum = plr.Character:FindFirstChild("Humanoid") if theirRoot and theirHum and theirHum.Health > 0 then local dist = (theirRoot.Position - RootPart.Position).Magnitude if dist < closestDist then closestDist = dist closestPlayer = plr end end end return closestPlayer end -- === AUTO-ATTACK WITH TOOL (RenderStepped) === RunService.RenderStepped:Connect(function() if not BotEnabled then return end for _, plr in ipairs(Players:GetPlayers()) do if plr == LocalPlayer then continue end local char = plr.Character if not char or not char:FindFirstChild("Humanoid") or char.Humanoid.Health <= 0 then continue end local theirRoot = char.HumanoidRootPart if LocalPlayer:DistanceFromCharacter(theirRoot.Position) > ToolAttackRadius then continue end if not PlayerHasTool(LocalPlayer) then continue end local tool = LocalPlayer.Character:FindFirstChildOfClass("Tool") if tool and tool:FindFirstChild("Handle") then tool:Activate() -- Swing/activate the tool for _, part in ipairs(char:GetChildren()) do if part:IsA("BasePart") then firetouchinterest(tool.Handle, part, 0) firetouchinterest(tool.Handle, part, 1) end end end end end) -- === GUI (Simple draggable settings window) === local screenGui = Instance.new("ScreenGui", CoreGui) screenGui.Name = "AurexPVPBotGUI" screenGui.ResetOnSpawn = false local mainFrame = Instance.new("Frame", screenGui) mainFrame.Size = UDim2.new(0, 320, 0, 220) mainFrame.Position = UDim2.new(0.5, -160, 0.4, -110) mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) mainFrame.ClipsDescendants = true Instance.new("UICorner", mainFrame).CornerRadius = UDim.new(0, 12) -- Title bar local titleBar = Instance.new("Frame", mainFrame) titleBar.Size = UDim2.new(1, 0, 0, 35) titleBar.BackgroundColor3 = Color3.fromRGB(40, 40, 40) local titleLabel = Instance.new("TextLabel", titleBar) titleLabel.Size = UDim2.new(0.75, 0, 1, 0) titleLabel.Position = UDim2.new(0, 10, 0, 0) titleLabel.BackgroundTransparency = 1 titleLabel.Text = "PvP Bot Settings" titleLabel.TextColor3 = Color3.new(1, 1, 1) titleLabel.Font = Enum.Font.GothamBold titleLabel.TextScaled = true titleLabel.TextXAlignment = Enum.TextXAlignment.Left local minimizeBtn = Instance.new("TextButton", titleBar) minimizeBtn.Size = UDim2.new(0.25, 0, 1, 0) minimizeBtn.Position = UDim2.new(0.75, 0, 0, 0) minimizeBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60) minimizeBtn.Text = "−" minimizeBtn.TextColor3 = Color3.new(1, 1, 1) minimizeBtn.Font = Enum.Font.GothamBold minimizeBtn.TextScaled = true -- Toggle button (visible when minimized) local openBtn = Instance.new("TextButton", screenGui) openBtn.Size = UDim2.new(0, 60, 0, 60) openBtn.Position = UDim2.new(0, 20, 0, 20) openBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 35) openBtn.Text = "PvP" openBtn.TextColor3 = Color3.new(1, 1, 1) openBtn.Font = Enum.Font.GothamBold openBtn.TextScaled = true openBtn.Visible = false -- PvP Bot Toggle Button local toggleBtn = Instance.new("TextButton", mainFrame) toggleBtn.Size = UDim2.new(0.9, 0, 0, 40) toggleBtn.Position = UDim2.new(0.05, 0, 0.2, 0) toggleBtn.BackgroundColor3 = Color3.fromRGB(70, 70, 70) toggleBtn.TextColor3 = Color3.new(1, 1, 1) toggleBtn.Text = "PvP Bot: OFF" toggleBtn.Font = Enum.Font.GothamBold toggleBtn.TextScaled = true Instance.new("UICorner", toggleBtn).CornerRadius = UDim.new(0, 8) toggleBtn.MouseButton1Click:Connect(function() BotEnabled = not BotEnabled toggleBtn.Text = BotEnabled and "PvP Bot: ON" or "PvP Bot: OFF" end) -- WalkSpeed setting local wsLabel = Instance.new("TextLabel", mainFrame) wsLabel.Size = UDim2.new(0.4, 0, 0, 25) wsLabel.Position = UDim2.new(0.05, 0, 0.5, 0) wsLabel.BackgroundTransparency = 1 wsLabel.Text = "WalkSpeed:" wsLabel.TextColor3 = Color3.new(1, 1, 1) wsLabel.TextXAlignment = Enum.TextXAlignment.Left wsLabel.Font = Enum.Font.Gotham wsLabel.TextScaled = true local wsBox = Instance.new("TextBox", mainFrame) wsBox.Size = UDim2.new(0.5, 0, 0, 25) wsBox.Position = UDim2.new(0.45, 0, 0.5, 0) wsBox.BackgroundColor3 = Color3.fromRGB(70, 70, 70) wsBox.TextColor3 = Color3.new(1, 1, 1) wsBox.PlaceholderText = tostring(WalkSpeed) wsBox.ClearTextOnFocus = false wsBox.TextScaled = true wsBox.FocusLost:Connect(function() local num = tonumber(wsBox.Text) if num then WalkSpeed = num Humanoid.WalkSpeed = num end end) -- JumpPower setting local jpLabel = Instance.new("TextLabel", mainFrame) jpLabel.Size = UDim2.new(0.4, 0, 0, 25) jpLabel.Position = UDim2.new(0.05, 0, 0.65, 0) jpLabel.BackgroundTransparency = 1 jpLabel.Text = "JumpPower:" jpLabel.TextColor3 = Color3.new(1, 1, 1) jpLabel.TextXAlignment = Enum.TextXAlignment.Left jpLabel.Font = Enum.Font.Gotham jpLabel.TextScaled = true local jpBox = Instance.new("TextBox", mainFrame) jpBox.Size = UDim2.new(0.5, 0, 0, 25) jpBox.Position = UDim2.new(0.45, 0, 0.65, 0) jpBox.BackgroundColor3 = Color3.fromRGB(70, 70, 70) jpBox.TextColor3 = Color3.new(1, 1, 1) jpBox.PlaceholderText = tostring(JumpPower) jpBox.ClearTextOnFocus = false jpBox.TextScaled = true jpBox.FocusLost:Connect(function() local num = tonumber(jpBox.Text) if num then JumpPower = num Humanoid.JumpPower = num end end) -- Minimize / Restore logic minimizeBtn.MouseButton1Click:Connect(function() mainFrame.Visible = false openBtn.Visible = true end) openBtn.MouseButton1Click:Connect(function() mainFrame.Visible = true openBtn.Visible = false end) -- Draggable window local dragging = false local dragInput, mouseStart, frameStart titleBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true mouseStart = input.Position frameStart = mainFrame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) titleBar.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then local delta = input.Position - mouseStart mainFrame.Position = UDim2.new( frameStart.X.Scale, frameStart.X.Offset + delta.X, frameStart.Y.Scale, frameStart.Y.Offset + delta.Y ) end end) -- === MAIN BOT LOGIC (Heartbeat) === RunService.Heartbeat:Connect(function() if not BotEnabled then return end if not IsInsideArena() then return end local target = GetClosestEnemy() if target then IdleWanderMode = false local targetRoot = target.Character.HumanoidRootPart if (targetRoot.Position - RootPart.Position).Magnitude > AttackRange then -- Walk straight to them if too far MoveTo(targetRoot.Position) else -- Circle around them while staying very close local offset = Vector3.new(math.sin(tick() * 2) * 2, 0, math.cos(tick() * 2) * 2) MoveTo(targetRoot.Position + offset) end -- Random jumps for evasion / style if math.random(1, 40) == 1 then Humanoid.Jump = true end else -- No target found if not IdleWanderMode then IdleWanderMode = true NextWanderTime = tick() + math.random(5, 10) MoveTo(GetRandomPointInRing()) elseif tick() < NextWanderTime then -- Occasionally stop or change direction while waiting if math.random() < WanderChancePerFrame then Humanoid:MoveTo(RootPart.Position) -- briefly stop end if math.random() < 0.02 then MoveTo(GetRandomPointInRing()) end else -- Return to center after idle timeout IdleWanderMode = false MoveTo(ArenaCenter) end end end) -- Watermark (original script had this) local watermark = Instance.new("TextLabel", CoreGui) watermark.Size = UDim2.new(0, 300, 0, 30) watermark.Position = UDim2.new(0.5, -150, 0, 10) watermark.BackgroundTransparency = 0.5 watermark.BackgroundColor3 = Color3.fromRGB(20, 20, 20) watermark.Text = "I hate black guys so muchh" watermark.TextColor3 = Color3.new(1, 1, 1) watermark.Font = Enum.Font.GothamBold watermark.TextScaled = true watermark.TextStrokeTransparency = 0