local player = [Link].
LocalPlayer
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
-- ===== Vars =====
local enabled = true -- otomatis on
local currentSpeed = 150
local DEFAULT_SPEED = 16
local character, humanoid, hrp
local speedConnection
local fakeFireLoop
local itemID = "Grapple Hook"
local useItemRE = ReplicatedStorage:WaitForChild("Packages")
:WaitForChild("Net")
:WaitForChild("RE/UseItem")
-- ===== GUI =====
local gui = [Link]("ScreenGui")
[Link] = "WalvyCombinedGUI"
[Link] = false
[Link] = player:WaitForChild("PlayerGui")
local frame = [Link]("Frame", gui)
[Link] = [Link](0, 220, 0, 160)
[Link] = [Link](0.5, -110, 0.5, -80)
frame.BackgroundColor3 = [Link](25,25,25)
[Link] = 0
[Link] = [Link](0.5,0.5)
[Link] = true
[Link]("UICorner", frame).CornerRadius = [Link](0,8)
local title = [Link]("TextLabel", frame)
[Link] = "WALVY COMMUNITY | Speed Hack"
[Link] = [Link](1,0,0,25)
[Link] = [Link](0,0,0,5)
[Link] = 1
title.TextColor3 = [Link](255,255,255)
[Link] = [Link]
[Link] = 14
-- Master Toggle Button
local toggleButton = [Link]("TextButton", frame)
[Link] = [Link](0.8,0,0,40)
[Link] = [Link](0.1,0,0.3,0)
toggleButton.BackgroundColor3 = [Link](40,40,40)
toggleButton.TextColor3 = [Link](255,255,255)
[Link] = [Link]
[Link] = 12
[Link] = enabled and "▶Turn Off Speed Hack" or "▶ Turn On Speed Hack"
[Link]("UICorner", toggleButton).CornerRadius = [Link](0,6)
-- Speed Input
local speedInput = [Link]("TextBox", frame)
[Link] = [Link](0.8,0,0,25)
[Link] = [Link](0.1,0,0.55,0)
[Link] = "Set Speed (0-250)"
[Link] = false
[Link] = tostring(currentSpeed)
speedInput.BackgroundColor3 = [Link](35,35,35)
speedInput.TextColor3 = [Link](255,255,255)
[Link] = [Link]
[Link] = 11
[Link]("UICorner", speedInput).CornerRadius = [Link](0,5)
-- ===== Functions =====
local function updateCharacter()
character = [Link] or [Link]:Wait()
humanoid = character and character:WaitForChild("Humanoid", 5)
hrp = character and character:WaitForChild("HumanoidRootPart", 5)
if humanoid then
[Link] = 50
end
end
-- SpeedHack
local function startSpeedHack()
if speedConnection then speedConnection:Disconnect() speedConnection=nil end
if not enabled or not humanoid or not hrp then return end
speedConnection = [Link]:Connect(function()
if not enabled or not humanoid or not hrp then return end
local dir = [Link] > 0 and
[Link] or [Link](0,0,0)
[Link] = [Link](dir.X*currentSpeed,
[Link].Y, dir.Z*currentSpeed)
end)
end
-- Grapple Hook
local function buyGrapple()
pcall(function()
ReplicatedStorage:WaitForChild("Packages")
:WaitForChild("Net")
:WaitForChild("RF/CoinsShopService/RequestBuy")
:InvokeServer(itemID)
end)
end
local function autoEquip()
pcall(function()
local character = [Link]
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if not (character and humanoid and [Link]>0) then return end
local currentTool = character:FindFirstChildOfClass("Tool")
if currentTool and [Link]==itemID then return end
local backpack = player:WaitForChild("Backpack")
local grappleInBackpack = backpack:FindFirstChild(itemID)
if grappleInBackpack then humanoid:EquipTool(grappleInBackpack) end
end)
end
local function fakeFire()
autoEquip()
local args = {1.9832406361897787}
pcall(function()
useItemRE:FireServer(unpack(args))
end)
end
local function startFakeFireLoop()
if fakeFireLoop then fakeFireLoop:Disconnect() end
fakeFireLoop = [Link]:Connect(function()
if enabled then fakeFire() end
end)
end
local function stopAll()
if speedConnection then speedConnection:Disconnect() speedConnection=nil end
if humanoid then [Link] = DEFAULT_SPEED end
if fakeFireLoop then fakeFireLoop:Disconnect() fakeFireLoop=nil end
end
-- ===== Events =====
toggleButton.MouseButton1Click:Connect(function()
enabled = not enabled
updateCharacter()
if enabled then
[Link] = "⏸ Turn Off Speedhack"
startSpeedHack()
buyGrapple()
startFakeFireLoop()
else
[Link] = "▶ Turn ON Speedhack"
stopAll()
end
end)
speedInput:GetPropertyChangedSignal("Text"):Connect(function()
local val = tonumber([Link])
if val then currentSpeed = [Link](val,40,1000) end
end)
-- ===== Drag GUI =====
local dragging, dragInput, dragStart, startPos
[Link]:Connect(function(input)
if [Link]==[Link].MouseButton1 or
[Link]==[Link] then
dragging=true
dragStart=[Link]
startPos=[Link]
[Link]:Connect(function()
if [Link]==[Link] then dragging=false
end
end)
end
end)
[Link]:Connect(function(input)
if [Link]==[Link] or
[Link]==[Link] then
dragInput=input
end
end)
[Link]:Connect(function(input)
if dragging and input==dragInput then
local delta=[Link] - dragStart
[Link]=[Link]([Link],[Link]+delta.X,
[Link],[Link]+delta.Y)
end
end)
-- ===== Initial Setup =====
updateCharacter()
startSpeedHack()
buyGrapple()
startFakeFireLoop()
-- ===== Respawn Handling =====
[Link]:Connect(function()
[Link](0.5)
if enabled then
updateCharacter()
startSpeedHack()
startFakeFireLoop()
end
end)