local WindUI = loadstring(game:HttpGet("https://github.com/Footagesus/WindUI/releases/latest/download/main.lua"))() local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UIS = game:GetService("UserInputService") local SoundService = game:GetService("SoundService") local lp = Players.LocalPlayer local Camera = workspace.CurrentCamera local S = { AutoSlap = false, SlapRange = 15, SpamDelay = 0.6, InfSlapTool = false, RemoteDelay = 0.1, SlapAll = false, Spin = false, SpinSpeed = 20, InfJump = false, SpeedHack = false, SpeedValue = 60, BHop = false, TrollSomeone = false, TrollTarget = nil, TrollDelay = 0.6, } local BHopSoundId = "rbxassetid://9114890978" local BHopMax = 150 local BHopMultiplier = 1.3 local BHopResetTime = 0.4 local slapConn = nil local remoteConn = nil local slapAllThread = nil local trollFollowConn = nil local trollSlapThread = nil local spinConn = nil local jumpConn = nil local speedConn = nil local bhopConn = nil local spinAngle = 0 local lastSlap = 0 local bhopSpeed = 16 local lastJumpTime = 0 local jumpSound = nil local Window = WindUI:CreateWindow({ Title = "INSANE wallhop tower", Icon = "hand", Author = "TG: @ventozzz", Folder = "InsaneWallHop", Size = UDim2.fromOffset(500, 540), Transparent = true, Theme = "Dark", Resizable = true, }) local MainTab = Window:Tab({ Title = "Main", Icon = "hand" }) local MovementTab = Window:Tab({ Title = "Movement", Icon = "wind" }) local TrollTab = Window:Tab({ Title = "Troll", Icon = "troll" }) local remote = game:GetService("ReplicatedStorage"):WaitForChild("GetSlap") local function getGloves() local gloves = {} local backpack = lp:FindFirstChild("Backpack") if backpack then for _, item in ipairs(backpack:GetChildren()) do if item:IsA("Tool") then table.insert(gloves, item) end end end local char = lp.Character if char then for _, item in ipairs(char:GetChildren()) do if item:IsA("Tool") then table.insert(gloves, item) end end end return gloves end local function equipGlove(glove) local char = lp.Character if not char then return end local hum = char:FindFirstChildOfClass("Humanoid") if not hum then return end if glove and glove.Parent then pcall(function() hum:EquipTool(glove) end) end end local function slapTarget(targetChar) if not targetChar then return end local myChar = lp.Character if not myChar then return end local myRoot = myChar:FindFirstChild("HumanoidRootPart") local tRoot = targetChar:FindFirstChild("HumanoidRootPart") if not myRoot or not tRoot then return end local gloves = getGloves() if #gloves == 0 then return end equipGlove(gloves[math.random(1, #gloves)]) RunService.Heartbeat:Wait() RunService.Heartbeat:Wait() local tool = lp.Character and lp.Character:FindFirstChildOfClass("Tool") if tool then pcall(function() tool:Activate() end) end pcall(function() remote:FireServer(targetChar) end) end local function getNearestPlayer() local myRoot = lp.Character and lp.Character:FindFirstChild("HumanoidRootPart") if not myRoot then return nil end local best, bestDist = nil, S.SlapRange for _, plr in ipairs(Players:GetPlayers()) do if plr == lp then continue end local char = plr.Character if not char then continue end local hum = char:FindFirstChildOfClass("Humanoid") local root = char:FindFirstChild("HumanoidRootPart") if not hum or not root or hum.Health <= 0 then continue end local dist = (myRoot.Position - root.Position).Magnitude if dist < bestDist then best, bestDist = char, dist end end return best end local function doSlap() local now = tick() if now - lastSlap < S.SpamDelay then return end lastSlap = now local target = getNearestPlayer() if not target then return end slapTarget(target) end local function startAutoSlap() if slapConn then slapConn:Disconnect() end slapConn = RunService.Heartbeat:Connect(function() if not S.AutoSlap then return end doSlap() end) end local function stopAutoSlap() if slapConn then slapConn:Disconnect() slapConn = nil end end local function startInfSlapTool() if remoteConn then pcall(function() task.cancel(remoteConn) end) end remoteConn = task.spawn(function() while S.InfSlapTool do pcall(function() remote:FireServer() end) task.wait(S.RemoteDelay) end end) end local function stopInfSlapTool() S.InfSlapTool = false if remoteConn then pcall(function() task.cancel(remoteConn) end) remoteConn = nil end end local function startSpin() local char = lp.Character if not char then return end local hum = char:FindFirstChildOfClass("Humanoid") if hum then hum.AutoRotate = false end spinAngle = 0 if spinConn then spinConn:Disconnect() end spinConn = RunService.RenderStepped:Connect(function(dt) if not S.Spin then return end local c = lp.Character if not c then return end local root = c:FindFirstChild("HumanoidRootPart") if not root then return end spinAngle = spinAngle + dt * S.SpinSpeed root.CFrame = CFrame.new(root.Position) * CFrame.Angles(0, spinAngle, 0) end) end local function stopSpin() if spinConn then spinConn:Disconnect() spinConn = nil end local char = lp.Character if char then local hum = char:FindFirstChildOfClass("Humanoid") if hum then hum.AutoRotate = true end end end local function startInfJump() if jumpConn then jumpConn:Disconnect() end jumpConn = UIS.JumpRequest:Connect(function() local char = lp.Character if not char then return end local hum = char:FindFirstChildOfClass("Humanoid") if not hum then return end hum:ChangeState(Enum.HumanoidStateType.Jumping) end) end local function stopInfJump() if jumpConn then jumpConn:Disconnect() jumpConn = nil end end local function startSpeed() if speedConn then speedConn:Disconnect() end speedConn = RunService.Heartbeat:Connect(function() local char = lp.Character if not char then return end local hum = char:FindFirstChildOfClass("Humanoid") local root = char:FindFirstChild("HumanoidRootPart") if not hum or not root then return end local md = hum.MoveDirection if md.Magnitude < 0.1 then return end local dir = Vector3.new(md.X, 0, md.Z).Unit root.AssemblyLinearVelocity = Vector3.new(dir.X * S.SpeedValue, root.AssemblyLinearVelocity.Y, dir.Z * S.SpeedValue) end) end local function stopSpeed() if speedConn then speedConn:Disconnect() speedConn = nil end end local function playJumpSound() if not jumpSound then jumpSound = Instance.new("Sound") jumpSound.Name = "BHopSound" jumpSound.Parent = SoundService end jumpSound.SoundId = BHopSoundId jumpSound.Volume = 1 jumpSound.PlaybackSpeed = 1 jumpSound:Play() end local function startBHop() if bhopConn then bhopConn:Disconnect() end bhopSpeed = 16 lastJumpTime = 0 bhopConn = RunService.Heartbeat:Connect(function() if not S.BHop then return end local char = lp.Character if not char then return end local hum = char:FindFirstChildOfClass("Humanoid") local root = char:FindFirstChild("HumanoidRootPart") if not hum or not root then return end local onGround = hum.FloorMaterial ~= Enum.Material.Air local now = tick() if onGround then if lastJumpTime > 0 and now - lastJumpTime > BHopResetTime then bhopSpeed = 16 end hum:ChangeState(Enum.HumanoidStateType.Jumping) lastJumpTime = now playJumpSound() end local md = hum.MoveDirection if md.Magnitude > 0.1 then local dir = Vector3.new(md.X, 0, md.Z).Unit root.AssemblyLinearVelocity = Vector3.new( dir.X * bhopSpeed, root.AssemblyLinearVelocity.y, dir.Z * bhopSpeed ) end if not onGround and lastJumpTime > 0 and now - lastJumpTime < BHopResetTime then bhopSpeed = bhopSpeed * BHopMultiplier if bhopSpeed > BHopMax then bhopSpeed = BHopMax end lastJumpTime = 0 end end) end local function stopBHop() if bhopConn then bhopConn:Disconnect() bhopConn = nil end bhopSpeed = 16 if jumpSound then jumpSound:Stop() end end local function startSlapAll() if slapAllThread then pcall(function() task.cancel(slapAllThread) end) end slapAllThread = task.spawn(function() local endTime = tick() + 8 while S.SlapAll and tick() < endTime do pcall(function() remote:FireServer() end) task.wait(0.05) end while S.SlapAll do for _, plr in ipairs(Players:GetPlayers()) do if not S.SlapAll then return end if plr == lp then continue end local char = plr.Character if not char then continue end local hum = char:FindFirstChildOfClass("Humanoid") if not hum or hum.Health <= 0 then continue end local startFollow = tick() while S.SlapAll and tick() - startFollow < 1 do local myChar = lp.Character local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart") local tChar = plr.Character local tRoot = tChar and tChar:FindFirstChild("HumanoidRootPart") if myRoot and tRoot then pcall(function() myRoot:SetNetworkOwner(lp) end) local back = tRoot.CFrame.LookVector * -3 myRoot.CFrame = CFrame.new(tRoot.Position + back, tRoot.Position) myRoot.AssemblyLinearVelocity = Vector3.zero myRoot.AssemblyAngularVelocity = Vector3.zero end RunService.Heartbeat:Wait() end if not S.SlapAll then return end local gloves = getGloves() if #gloves > 0 then equipGlove(gloves[math.random(1, #gloves)]) RunService.Heartbeat:Wait() RunService.Heartbeat:Wait() local tool = lp.Character and lp.Character:FindFirstChildOfClass("Tool") if tool then pcall(function() tool:Activate() end) end pcall(function() remote:FireServer(char) end) end task.wait(0.3) end task.wait(0.3) end end) end local function stopSlapAll() S.SlapAll = false if slapAllThread then pcall(function() task.cancel(slapAllThread) end) slapAllThread = nil end end local function startTrollSomeone() if trollFollowConn then trollFollowConn:Disconnect() end if trollSlapThread then pcall(function() task.cancel(trollSlapThread) end) end trollFollowConn = RunService.RenderStepped:Connect(function() if not S.TrollSomeone then return end local target = S.TrollTarget if not target or not target.Parent then return end local char = target.Character if not char then return end local root = char:FindFirstChild("HumanoidRootPart") local myChar = lp.Character local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart") if not root or not myRoot then return end pcall(function() myRoot:SetNetworkOwner(lp) end) local back = root.CFrame.LookVector * -3 myRoot.CFrame = CFrame.new(root.Position + back, root.Position) myRoot.AssemblyLinearVelocity = Vector3.zero myRoot.AssemblyAngularVelocity = Vector3.zero end) trollSlapThread = task.spawn(function() while S.TrollSomeone do task.wait(S.TrollDelay) if not S.TrollSomeone then return end local target = S.TrollTarget if not target or not target.Parent then continue end local char = target.Character if not char then continue end local hum = char:FindFirstChildOfClass("Humanoid") if not hum or hum.Health <= 0 then continue end slapTarget(char) end end) end local function stopTrollSomeone() S.TrollSomeone = false if trollFollowConn then trollFollowConn:Disconnect() trollFollowConn = nil end if trollSlapThread then pcall(function() task.cancel(trollSlapThread) end) trollSlapThread = nil end end local selectedPlayerName = nil local playerDropdown = TrollTab:Dropdown({ Title = "Troll Player", Values = {}, Multi = false, Default = "", Callback = function(selected) selectedPlayerName = selected for _, plr in ipairs(Players:GetPlayers()) do if plr.Name == selected then S.TrollTarget = plr break end end end }) TrollTab:Button({ Title = "Refresh Player List", Callback = function() local names = {} for _, plr in ipairs(Players:GetPlayers()) do if plr ~= lp then table.insert(names, plr.Name) end end if #names == 0 then names = { "no players" } end pcall(function() playerDropdown:Refresh(names) end) end }) TrollTab:Toggle({ Title = "Troll Player", Default = false, Callback = function(v) S.TrollSomeone = v if v then startTrollSomeone() else stopTrollSomeone() end end }) TrollTab:Slider({ Title = "Troll Delay", Min = 0.2, Max = 3, Default = 0.6, Callback = function(v) S.TrollDelay = v end }) MainTab:Toggle({ Title = "Auto Slap", Default = false, Callback = function(v) S.AutoSlap = v if v then startAutoSlap() else stopAutoSlap() end end }) MainTab:Slider({ Title = "Slap Range", Min = 5, Max = 50, Default = 15, Callback = function(v) S.SlapRange = v end }) MainTab:Slider({ Title = "Slap Delay", Min = 0.2, Max = 3, Default = 0.6, Callback = function(v) S.SpamDelay = v end }) MainTab:Toggle({ Title = "Inf Slap Tool", Default = false, Callback = function(v) S.InfSlapTool = v if v then startInfSlapTool() else stopInfSlapTool() end end }) MainTab:Slider({ Title = "Remote Delay", Min = 0.05, Max = 1, Default = 0.1, Callback = function(v) S.RemoteDelay = v end }) MovementTab:Toggle({ Title = "Spin", Default = false, Callback = function(v) S.Spin = v if v then startSpin() else stopSpin() end end }) MovementTab:Slider({ Title = "Spin Speed", Min = 1, Max = 100, Default = 20, Callback = function(v) S.SpinSpeed = v end }) MovementTab:Toggle({ Title = "Infinite Jump", Default = false, Callback = function(v) S.InfJump = v if v then startInfJump() else stopInfJump() end end }) MovementTab:Toggle({ Title = "Speed Hack", Default = false, Callback = function(v) S.SpeedHack = v if v then startSpeed() else stopSpeed() end end }) MovementTab:Slider({ Title = "Speed", Min = 18, Max = 150, Default = 60, Callback = function(v) S.SpeedValue = v end }) MovementTab:Toggle({ Title = "BHop", Default = false, Callback = function(v) S.BHop = v if v then startBHop() else stopBHop() end end }) TrollTab:Toggle({ Title = "Slap All", Default = false, Callback = function(v) S.SlapAll = v if v then startSlapAll() else stopSlapAll() end end }) TrollTab:Button({ Title = "Stop Slap All", Callback = function() stopSlapAll() end }) lp.CharacterAdded:Connect(function() task.wait(0.5) if S.AutoSlap then startAutoSlap() end if S.InfSlapTool then startInfSlapTool() end if S.Spin then startSpin() end if S.InfJump then startInfJump() end if S.SpeedHack then startSpeed() end if S.BHop then startBHop() end if S.TrollSomeone then startTrollSomeone() end end)