REACH
Key Required

REACH

[UPDATE] Ability Warstitovvladislav623titovvladislav623 819 views 9.5K executesUpdated Aug 30, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•127 lines (6687 chars)
local RS = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local LP = Players.LocalPlayer
local pkg = RS["ReplicatedStorage Package"]
local REM = pkg["Remote Events"]
local SendPacket = REM.SendPacket
local PunchRemote = REM.Punch
local PUNCH_ID = 362367237823

-- stop any earlier aura loop and remove old GUI
if _G._SPA7 then _G._SPA7.running = false end
local oldGui = LP.PlayerGui:FindFirstChild("SilentPunchAssist")
if oldGui then oldGui:Destroy() end

local MIN, MAX, Range, Enabled = 5, 300, 12, true

local function getClosest()
	local me = LP.Character
	if not me then return nil end
	local myHRP = me:FindFirstChild("HumanoidRootPart")
	if not myHRP then return nil end
	local best, bestD = nil, Range
	for _, pl in ipairs(Players:GetPlayers()) do
		if pl ~= LP and pl.Character then
			local hrp = pl.Character:FindFirstChild("HumanoidRootPart")
			if hrp and hrp:IsA("BasePart") then
				local d = (hrp.Position - myHRP.Position).Magnitude
				if d <= bestD then bestD = d; best = {char = pl.Character, part = hrp, name = pl.Name, dist = d} end
			end
		end
	end
	return best
end

local function fireAt(t)
	local me = LP.Character
	if not me then return end
	local hb = me:FindFirstChild("Hitbox")
	local hrp = me:FindFirstChild("HumanoidRootPart")
	local weld = hrp and hrp:FindFirstChild("Hitbox Weld")
	if not (hb and hrp and weld) then return end
	-- spoofed near hit: v1 near the player, small magnitude and passes server reach check :3
	local v1 = hb.Position + Vector3.new(0, 0.5, 0)
	local magnitude = 2
	local size = hb.Size
	local C0 = weld.C0
	local look = hrp.CFrame.LookVector
	pcall(function() SendPacket:FireServer("Use Punch", PUNCH_ID, t.char, v1, magnitude, size, C0, t.part, t.part.Size, look) end)
	pcall(function() PunchRemote:FireServer(t.char, hrp.Position, 1.8757749795913696, t.char:FindFirstChild("Head")) end)
end

-- hook Punch: on each swing, hit the closest enemy within Range
_G._SPA8 = _G._SPA8 or {}
local S = _G._SPA8
local PunchClass = require(LP.PlayerScripts["StarterPlayerScripts Package"].Controller.Character.Punch)
if not S.oP then S.oP = PunchClass.Punch end
PunchClass.Punch = function(self, ...)
	local r = S.oP(self, ...)
	if Enabled then
		local t = getClosest()
		if t then fireAt(t) end
	end
	return r
end

-- lock-on highlight
local hl = Instance.new("Highlight")
hl.Name = "SPA_Lock"; hl.FillColor = Color3.fromRGB(255, 40, 40)
hl.OutlineColor = Color3.fromRGB(255, 230, 0); hl.FillTransparency = 0.7
hl.OutlineTransparency = 0; hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
hl.Enabled = false; hl.Parent = workspace
if not S.loop then
	S.loop = true
	task.spawn(function()
		while S.loop do
			task.wait(0.1)
			if Enabled then
				local t = getClosest()
				if t then hl.Adornee = t.char; hl.Enabled = true else hl.Enabled = false end
			else hl.Enabled = false end
		end
	end)
end

-- UI
local gui = Instance.new("ScreenGui", LP:WaitForChild("PlayerGui"))
gui.Name = "SilentPunchAssist"; gui.ResetOnSpawn = false
local frame = Instance.new("Frame", gui)
frame.Size = UDim2.new(0, 250, 0, 165); frame.Position = UDim2.new(0, 20, 0, 20)
frame.BackgroundColor3 = Color3.fromRGB(28, 28, 38); frame.BorderSizePixel = 1; frame.Active = true; frame.Draggable = true
local title = Instance.new("TextLabel", frame); title.Size = UDim2.new(1, 0, 0, 24)
title.Text = "Punch Assist v9"; title.BackgroundColor3 = Color3.fromRGB(48, 48, 68)
title.TextColor3 = Color3.new(1, 1, 1); title.Font = Enum.Font.SourceSansBold; title.TextSize = 15
local toggle = Instance.new("TextButton", frame); toggle.Size = UDim2.new(0, 230, 0, 28)
toggle.Position = UDim2.new(0, 10, 0, 30); toggle.Text = "ENABLED"
toggle.BackgroundColor3 = Color3.fromRGB(40, 160, 90); toggle.TextColor3 = Color3.new(1, 1, 1)
toggle.Font = Enum.Font.SourceSansBold; toggle.TextSize = 14
local track = Instance.new("Frame", frame); track.Size = UDim2.new(0, 230, 0, 8)
track.Position = UDim2.new(0, 10, 0, 74); track.BackgroundColor3 = Color3.fromRGB(70, 70, 80)
local fill = Instance.new("Frame", track); fill.Size = UDim2.new(0, 0, 1, 0); fill.BackgroundColor3 = Color3.fromRGB(0, 200, 120)
local knob = Instance.new("TextButton", track); knob.Size = UDim2.new(0, 14, 0, 18)
knob.Position = UDim2.new(0, -7, -0.62, 0); knob.BackgroundColor3 = Color3.new(1, 1, 1); knob.Text = ""; knob.AutoButtonColor = false
local valueBox = Instance.new("TextBox", frame); valueBox.Size = UDim2.new(0, 230, 0, 28)
valueBox.Position = UDim2.new(0, 10, 0, 94); valueBox.Text = tostring(Range)
valueBox.PlaceholderText = "Range (studs)"; valueBox.BackgroundColor3 = Color3.fromRGB(20, 20, 28)
valueBox.TextColor3 = Color3.new(1, 1, 1); valueBox.Font = Enum.Font.SourceSans; valueBox.TextSize = 14; valueBox.ClearTextOnFocus = false
local lockLbl = Instance.new("TextLabel", frame); lockLbl.Size = UDim2.new(0, 230, 0, 18)
lockLbl.Position = UDim2.new(0, 10, 0, 128); lockLbl.Text = "Locked: none"
lockLbl.BackgroundTransparency = 1; lockLbl.TextColor3 = Color3.fromRGB(160, 160, 170); lockLbl.Font = Enum.Font.SourceSans; lockLbl.TextSize = 12
local function v2x(v) return (v - MIN) / (MAX - MIN) * track.AbsoluteSize.X end
local function x2v(x) return MIN + math.clamp(x / math.max(track.AbsoluteSize.X, 1), 0, 1) * (MAX - MIN) end
local function setVal(v, fb)
	v = math.clamp(math.round(v), MIN, MAX); Range = v; local x = v2x(v)
	knob.Position = UDim2.new(0, x - 7, -0.62, 0); fill.Size = UDim2.new(0, x, 1, 0)
	if not fb then valueBox.Text = tostring(v) end
end
local drag = false
knob.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then drag = true end end)
knob.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then drag = false end end)
UIS.InputChanged:Connect(function(i) if drag and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then setVal(x2v(i.Position.X - track.AbsolutePosition.X)) end end)
valueBox.FocusLost:Connect(function() local n = tonumber(valueBox.Text); if n then setVal(n, true) end end)
toggle.MouseButton1Click:Connect(function() Enabled = not Enabled; toggle.Text = Enabled and "ENABLED" or "DISABLED"; toggle.BackgroundColor3 = Enabled and Color3.fromRGB(40, 160, 90) or Color3.fromRGB(150, 50, 50) end)
task.spawn(function() while true do task.wait(0.15); if gui and gui.Parent then lockLbl.Text = "Locked: " .. (getClosest() and getClosest().name or "none") end end end)
setVal(Range)
print("WE'RE SO BAAAAACKKKKKK")
-- oh yeah also: FUCK YOU JOHN.

Features & Information

i made this as i was banned lol. use this example as you will
#ability wars#reach#gui#opensource

Community Comments (6)

DenzlizerDenzlizerSep 8, 2026

Yo bro they updated the game and this is patched now any way you can make a new one??

Replying to @Denzlizer
eeaweeawSep 9, 2026

@Denzlizer yeah

WilliamDHWilliamDHSep 11, 2026

Bro, can you update the script please? It's patched.

Bro pls update

WilliamDHWilliamDHSep 25, 2026

Bro update

WilliamDHWilliamDHOct 3, 2026

Bro actualizas el script porfavor

More Scripts for [UPDATE] Ability Wars