Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- // Purgatory Script | Velocity v5 // --
- -- // Library: Kavo UI // --
- -- // Open Source Version // --
- local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/xHeptc/Kavo-UI-Library/main/source.lua"))()
- local Window = Library.CreateLib("Purgatory | Velocity v5", "Midnight")
- -- // Services // --
- local ReplicatedStorage = game:GetService("ReplicatedStorage")
- local Players = game:GetService("Players")
- local Workspace = game:GetService("Workspace")
- local RunService = game:GetService("RunService")
- -- // Variables // --
- local LocalPlayer = Players.LocalPlayer
- local Remotes = ReplicatedStorage:WaitForChild("OnServerEvents")
- local CombatRemote = Remotes:WaitForChild("CombatServer", 5)
- local DodgeRemote = Remotes:WaitForChild("DodgeServer", 5)
- local VisualRemote = Remotes:WaitForChild("PlrFxRelay", 5)
- local UpgradeRemote = Remotes:WaitForChild("UpgradeSelected", 5)
- -- // Settings // --
- local Settings = {
- AutoAttack = false,
- AttackDist = 15,
- AutoDodge = false,
- DodgeSpeed = 0.1,
- DodgeID = 5,
- RandomizeDodge = false,
- SpeedEnabled = false,
- WalkSpeed = 50,
- SelectedUpgrade = "Power" -- Default
- }
- -- // Upgrade List // --
- -- Sourced from Game Wiki & Data
- local UpgradeList = {
- -- Basic / Common
- "Power",
- "Agility",
- "Vitality",
- "Force",
- "Regeneration",
- -- Advanced / Rare
- "Fleetfoot",
- "Perfect Dodge",
- "Shatter",
- "Brute Force",
- "Maestro",
- "Health Pack",
- "Survivor",
- -- Legendary
- "Giantslayer",
- "Blackhole",
- "Cataclysm",
- "Reaper",
- "Juggernaut",
- "Second Wind",
- "Assassin",
- -- Divine / Special
- "Cleave",
- "Glass Cannon",
- "Turtle",
- "The Force in Reverse"
- }
- -- // Tabs // --
- local CombatTab = Window:NewTab("Combat")
- local CombatSection = CombatTab:NewSection("Offense")
- local DodgeSection = CombatTab:NewSection("Auto Dodge")
- local MoveTab = Window:NewTab("Movement")
- local MoveSection = MoveTab:NewSection("Speed Logic")
- local MiscTab = Window:NewTab("Misc")
- local MiscSection = MiscTab:NewSection("Bypass Upgrades")
- -- // Functions // --
- local function GetClosestEnemy()
- local Character = LocalPlayer.Character
- local Root = Character and Character:FindFirstChild("HumanoidRootPart")
- if not Root then return nil end
- local ClosestDist = Settings.AttackDist
- local ClosestEnemy = nil
- local EnemiesFolder = Workspace:FindFirstChild("Enemies")
- if EnemiesFolder then
- for _, Enemy in pairs(EnemiesFolder:GetChildren()) do
- if Enemy:FindFirstChild("HumanoidRootPart") and Enemy:FindFirstChild("Humanoid") then
- if Enemy.Humanoid.Health > 0 then
- local Dist = (Root.Position - Enemy.HumanoidRootPart.Position).Magnitude
- if Dist < ClosestDist then
- ClosestDist = Dist
- ClosestEnemy = Enemy
- end
- end
- end
- end
- end
- return ClosestEnemy
- end
- local function Attack(Target)
- if not CombatRemote then return end
- local args = {
- Target.HumanoidRootPart,
- "Melee",
- {
- ["dismantle"] = true,
- ["riposte"] = false,
- ["backstab"] = true
- }
- }
- pcall(function()
- CombatRemote:FireServer(unpack(args))
- end)
- end
- -- // Combat UI // --
- CombatSection:NewToggle("Kill Aura (OP)", "Instantly kills enemies in range.", function(state)
- Settings.AutoAttack = state
- end)
- CombatSection:NewSlider("Attack Range", "Range to start killing.", 50, 5, function(value)
- Settings.AttackDist = value
- end)
- -- // Dodge UI // --
- DodgeSection:NewToggle("Auto Dodge", "Enable the dodge loop.", function(state)
- Settings.AutoDodge = state
- end)
- DodgeSection:NewToggle("Randomize ID", "Cycles random IDs (1-6) automatically.", function(state)
- Settings.RandomizeDodge = state
- end)
- DodgeSection:NewSlider("Dodge Speed", "How fast to spam (Lower = Faster)", 20, 1, function(value)
- Settings.DodgeSpeed = value / 20
- end)
- DodgeSection:NewSlider("Manual ID", "Only used if Randomize is OFF.", 10, 1, function(value)
- Settings.DodgeID = value
- end)
- -- // Movement UI // --
- MoveSection:NewToggle("Enable Speed Loop", "Forces your WalkSpeed constantly.", function(state)
- Settings.SpeedEnabled = state
- end)
- MoveSection:NewSlider("WalkSpeed Amount", "Set your speed.", 100, 16, function(value)
- Settings.WalkSpeed = value
- end)
- -- // Misc UI // --
- MiscSection:NewDropdown("Select Upgrade", "Choose from the Full Wiki List", UpgradeList, function(currentOption)
- Settings.SelectedUpgrade = currentOption
- end)
- MiscSection:NewTextBox("Custom Name", "Type a name here to override (e.g. Vampirism)", function(txt)
- if txt and txt ~= "" then
- Settings.SelectedUpgrade = txt
- end
- end)
- MiscSection:NewButton("Apply Upgrade", "Spam this to force the upgrade.", function()
- if UpgradeRemote then
- -- This fires whatever is currently set in Settings.SelectedUpgrade
- local args = {
- Settings.SelectedUpgrade,
- {},
- 1
- }
- UpgradeRemote:FireServer(unpack(args))
- end
- end)
- MiscSection:NewLabel("Current Selection: Check Console (F9) if unsure")
- -- // Loops // --
- -- Attack Loop
- task.spawn(function()
- while true do
- task.wait()
- if Settings.AutoAttack then
- local Target = GetClosestEnemy()
- if Target then
- Attack(Target)
- end
- end
- end
- end)
- -- Dodge Loop
- task.spawn(function()
- while true do
- if Settings.AutoDodge then
- pcall(function()
- local currentID = Settings.DodgeID
- if Settings.RandomizeDodge then
- currentID = math.random(1, 6)
- end
- DodgeRemote:FireServer(currentID)
- if VisualRemote then
- VisualRemote:FireServer("Dash")
- end
- end)
- end
- task.wait(Settings.DodgeSpeed)
- end
- end)
- -- Speed Loop
- RunService.RenderStepped:Connect(function()
- if Settings.SpeedEnabled then
- pcall(function()
- local char = LocalPlayer.Character
- if char and char:FindFirstChild("Humanoid") then
- char.Humanoid.WalkSpeed = Settings.WalkSpeed
- end
- end)
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment