--========================================================-- -- ui --========================================================-- local Players = game.Players local plr = Players.LocalPlayer local gui = plr:WaitForChild("PlayerGui") local EnabledMain = true local screen = Instance.new("ScreenGui") screen.ResetOnSpawn = false screen.Parent = cloneref(game.CoreGui) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, 60, 0, 60) btn.Position = UDim2.new(0.05, 0, 0.55, 0) btn.BackgroundColor3 = Color3.fromRGB(30, 30, 30) btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.Text = "ON" btn.Active = true btn.Draggable = true btn.Parent = screen local ar = Instance.new("UIAspectRatioConstraint") ar.AspectRatio = 1 ar.Parent = btn btn.MouseButton1Click:Connect(function() EnabledMain = not EnabledMain btn.Text = EnabledMain and "ON" or "OFF" end) --========================================================-- -- checks --========================================================-- local RunService = game:GetService("RunService") local keywords = { "stab", "punch", "behead", "slash", "lacerate", "dagger", "gashing" } local fired = false local buttons = {} local function getContainer() local ui = gui:WaitForChild("MainUI") return ui:WaitForChild("AbilityContainer") end local function matchKeyword(name) name = name:lower() for _, word in ipairs(keywords) do if string.find(name, word) then return true end end return false end local function makeNotice(text) if not EnabledMain then return end local screen2 = Instance.new("ScreenGui") screen2.ResetOnSpawn = false screen2.Parent = cloneref(game.CoreGui) local label = Instance.new("TextLabel") label.Size = UDim2.new(0, 260, 0, 30) label.Position = UDim2.new(0, 20, 0.3, 0) label.BackgroundColor3 = Color3.fromRGB(0, 0, 0) label.TextColor3 = Color3.fromRGB(255, 255, 255) label.BackgroundTransparency = 0.3 label.Text = text label.Parent = screen2 task.delay(2, function() if screen2 then screen2:Destroy() end end) end local function isReady(text) if text == "" then return true end local n = tonumber(text) if n and n <= 0.1 then return true end return false end local function hook(btn2) if buttons[btn2] then return end local cd = btn2:FindFirstChild("CooldownTime") if not cd or not cd:IsA("TextLabel") then return end local info = { button = btn2, cd = cd, ready = isReady(cd.Text), coolWait = false } info.conn = btn2.MouseButton1Click:Connect(function() if not EnabledMain then return end if info.ready and not info.coolWait then if btn2:FindFirstChild("Helpless") then return end info.coolWait = true task.delay(0.2, function() info.coolWait = false end) if matchKeyword(btn2.Name) then makeNotice("Used ability: " .. btn2.Name) task.wait(0.1) fired = true task.wait(1.1) fired = false end end end) buttons[btn2] = info end local function refresh() for b, data in pairs(buttons) do if not b or not b.Parent then data.conn:Disconnect() buttons[b] = nil end end local container = getContainer() for _, child in ipairs(container:GetChildren()) do if child:IsA("ImageButton") then hook(child) end end end local function loopCooldowns() while true do if EnabledMain then for _, info in pairs(buttons) do info.ready = isReady(info.cd.Text) end end task.wait(0.08) end end local function setup() refresh() end plr.CharacterAdded:Connect(function() gui = plr:WaitForChild("PlayerGui") task.wait(0.2) setup() end) setup() task.spawn(loopCooldowns) --========================================================-- -- VELOCITY SECTION --========================================================-- local function getRoot(char) return char and char:FindFirstChild("HumanoidRootPart") end local char = plr.Character or plr.CharacterAdded:Wait() local root = getRoot(char) plr.CharacterAdded:Connect(function(newChar) char = newChar root = getRoot(newChar) end) local boxSize = Vector3.new(50, 50, 50) local function getTeamFolder() if char:IsDescendantOf(workspace.Players.Killers) then return workspace.Players.Survivors end if char:IsDescendantOf(workspace.Players.Survivors) then return workspace.Players.Killers end return nil end local function isModelInFolder(model, folder) if not folder then return false end return model:IsDescendantOf(folder) end local function findNearestHumanoid() if not root then return end if not EnabledMain then return end local targetFolder = getTeamFolder() local cf = root.CFrame local parts = workspace:GetPartBoundsInBox(cf, boxSize) local closest local bestDist = math.huge local foundPreferred = false for _, part in ipairs(parts) do local model = part.Parent local hum = model and model:FindFirstChildOfClass("Humanoid") if hum and hum.Health > 0 and model ~= char then local hrp = model:FindFirstChild("HumanoidRootPart") if hrp then local dist = (hrp.Position - root.Position).Magnitude local inPreferred = isModelInFolder(model, targetFolder) if inPreferred then -- Prioritize preferred targets if not foundPreferred or dist < bestDist then foundPreferred = true bestDist = dist closest = hrp end elseif not foundPreferred and dist < bestDist then -- Only use non preferred if none found yet bestDist = dist closest = hrp end end end end return closest, bestDist end local function setVelocityWithShake() if not root then return end if not EnabledMain then return end local target, dist = findNearestHumanoid() if not target then return end local dir = (target.Position - root.Position).Unit local forward = root.CFrame.LookVector local dot = forward:Dot(dir) if dot < 0.5 then dir = dir * 1.5 end local shake = Vector3.new( math.random(-45, 45), math.random(-20, 20), math.random(-45, 45) ) local base = 45 local scale = dist * 5.5 local speed = base + scale root.Velocity = dir * speed + shake end --========================================================-- -- REMOVE FALL --========================================================-- local Reach = true local loopRunning = false local function startReach() if loopRunning then return end loopRunning = true task.spawn(function() while Reach do RunService.Heartbeat:Wait() if not EnabledMain then continue end local c = plr.Character local r = getRoot(c) if not c or not r then continue end local savedVel = r.Velocity local movel = 0.1 pcall(function() if fired then setVelocityWithShake() end end) RunService.RenderStepped:Wait() if r then pcall(function() if fired then r.Velocity = savedVel end end) end RunService.Stepped:Wait() if r then pcall(function() if fired then r.Velocity = savedVel + Vector3.new(0, movel, 0) end end) movel = -movel end end loopRunning = false end) end startReach()