local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local player = game.Players.LocalPlayer local wallhopEnabled = false local raycastParams = RaycastParams.new() raycastParams.FilterDescendantsInstances = {} raycastParams.FilterType = Enum.RaycastFilterType.Blacklist local function getWallRaycastResult() local character = player.Character if not character then return nil end local humanoidRootPart = character:FindFirstChild("HumanoidRootPart") if not humanoidRootPart then return nil end raycastParams.FilterDescendantsInstances = {character} local detectionDistance = 2 local closestHit = nil local minDistance = detectionDistance + 1 local hrpCF = humanoidRootPart.CFrame for i = 0, 7 do local angle = math.rad(i * 45) local direction = (hrpCF * CFrame.Angles(0, angle, 0)).LookVector local ray = workspace:Raycast(humanoidRootPart.Position, direction * detectionDistance, raycastParams) if ray and ray.Instance and ray.Distance < minDistance then minDistance = ray.Distance closestHit = ray end end local blockCastSize = Vector3.new(1.5, 1, 0.5) local blockCastOffset = CFrame.new(0, -1, -0.5) local blockCastOriginCF = hrpCF * blockCastOffset local blockCastDirection = hrpCF.LookVector local blockCastDistance = 1.5 local blockResult = workspace:Blockcast(blockCastOriginCF, blockCastSize, blockCastDirection * blockCastDistance, raycastParams) if blockResult and blockResult.Instance and blockResult.Distance < minDistance then minDistance = blockResult.Distance closestHit = blockResult end return closestHit end local function performWallHop() local character = player.Character if not character then return end local humanoid = character:FindFirstChildOfClass("Humanoid") local hrp = character:FindFirstChild("HumanoidRootPart") if not humanoid or not hrp then return end local hitResult = getWallRaycastResult() if hitResult then humanoid:ChangeState(Enum.HumanoidStateType.Jumping) local jumpDirection = (hrp.CFrame.LookVector + Vector3.new(0, 1, 0)).Unit local jumpForce = 50 hrp.Velocity = jumpDirection * jumpForce end end UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.KeyCode == Enum.KeyCode.F then wallhopEnabled = true print("Wallhop включён") elseif input.KeyCode == Enum.KeyCode.E then wallhopEnabled = false print("Wallhop отключён") end end) RunService.Heartbeat:Connect(function() if wallhopEnabled then if UserInputService:IsKeyDown(Enum.KeyCode.Space) then performWallHop() end end end)