local Player = game:GetService("Players").LocalPlayer local playerGui = Player:WaitForChild("PlayerGui") local UIS = game:GetService("UserInputService") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local isMobileLocal = UIS.TouchEnabled local deviceType = isMobileLocal and "Mobile" or "PC" local version = "v2.1" local function ShowNotification(message) local notification = Instance.new("ScreenGui") notification.Name = "YomkaBHOPNotification" notification.Parent = playerGui notification.ZIndexBehavior = Enum.ZIndexBehavior.Sibling local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 300, 0, 60) frame.Position = UDim2.new(0.5, -150, 0.8, -30) frame.BackgroundColor3 = Color3.fromRGB(30, 30, 45) frame.BorderSizePixel = 0 frame.ZIndex = 10 frame.Parent = notification local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 8) corner.Parent = frame local stroke = Instance.new("UIStroke") stroke.Color = Color3.fromRGB(80, 100, 180) stroke.Thickness = 2 stroke.Parent = frame local label = Instance.new("TextLabel") label.Size = UDim2.new(1, 0, 1, 0) label.BackgroundTransparency = 1 label.Text = message label.TextColor3 = Color3.fromRGB(220, 220, 255) label.Font = Enum.Font.GothamMedium label.TextSize = 16 label.ZIndex = 11 label.Parent = frame frame.BackgroundTransparency = 1 stroke.Transparency = 1 label.TextTransparency = 1 TweenService:Create(frame, TweenInfo.new(0.3), {BackgroundTransparency = 0}):Play() TweenService:Create(stroke, TweenInfo.new(0.3), {Transparency = 0}):Play() TweenService:Create(label, TweenInfo.new(0.3), {TextTransparency = 0}):Play() task.wait(3) TweenService:Create(frame, TweenInfo.new(0.3), {BackgroundTransparency = 1}):Play() TweenService:Create(stroke, TweenInfo.new(0.3), {Transparency = 1}):Play() TweenService:Create(label, TweenInfo.new(0.3), {TextTransparency = 1}):Play() task.wait(0.3) notification:Destroy() end ShowNotification("Yomka BHOP "..version.."\nDevice: "..deviceType.." | Mode: "..(isMobileLocal and "Mobile UI" or "Desktop Controls")) local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "YomkaBHOP" ScreenGui.Parent = playerGui ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling ScreenGui.ResetOnSpawn = false local Container = Instance.new("Frame") Container.Name = "Container" Container.Size = isMobileLocal and UDim2.new(0, 180, 0, 80) or UDim2.new(0, 200, 0, 90) Container.Position = isMobileLocal and UDim2.new(1, -190, 1, -90) or UDim2.new(1, -210, 1, -100) Container.BackgroundTransparency = 1 Container.Parent = ScreenGui local function UpdateContainerPosition() local viewportSize = workspace.CurrentCamera.ViewportSize if isMobileLocal then Container.Position = UDim2.new(1, -190, 1, -90) else Container.Position = UDim2.new(1, -210, 1, -100) end end workspace.CurrentCamera:GetPropertyChangedSignal("ViewportSize"):Connect(UpdateContainerPosition) UpdateContainerPosition() local Shadow = Instance.new("Frame") Shadow.Name = "Shadow" Shadow.Size = UDim2.new(1, 6, 1, 6) Shadow.Position = UDim2.new(0, -3, 0, -3) Shadow.BackgroundColor3 = Color3.new(0, 0, 0) Shadow.BackgroundTransparency = 0.8 Shadow.ZIndex = 0 Shadow.Parent = Container local ShadowCorner = Instance.new("UICorner") ShadowCorner.CornerRadius = UDim.new(0, 12) ShadowCorner.Parent = Shadow -- Основной фрейм local MainFrame = Instance.new("Frame") MainFrame.Name = "MainFrame" MainFrame.Size = UDim2.new(1, 0, 1, 0) MainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 45) MainFrame.BorderSizePixel = 0 MainFrame.ZIndex = 1 MainFrame.Parent = Container local MainCorner = Instance.new("UICorner") MainCorner.CornerRadius = UDim.new(0, 8) MainCorner.Parent = MainFrame local MainStroke = Instance.new("UIStroke") MainStroke.Color = Color3.fromRGB(80, 100, 180) MainStroke.Thickness = 2 MainStroke.Parent = MainFrame local TitleLabel = Instance.new("TextLabel") TitleLabel.Name = "Title" TitleLabel.Size = UDim2.new(1, -10, 0, 24) TitleLabel.Position = UDim2.new(0, 5, 0, 5) TitleLabel.BackgroundColor3 = Color3.fromRGB(50, 55, 80) TitleLabel.BorderSizePixel = 0 TitleLabel.Text = "Yomka BHOP "..version TitleLabel.TextColor3 = Color3.fromRGB(220, 220, 255) TitleLabel.Font = Enum.Font.GothamBold TitleLabel.TextSize = isMobileLocal and 14 or 16 TitleLabel.ZIndex = 2 TitleLabel.Parent = MainFrame local TitleCorner = Instance.new("UICorner") TitleCorner.CornerRadius = UDim.new(0, 6) TitleCorner.Parent = TitleLabel local StatusLabel = Instance.new("TextLabel") StatusLabel.Name = "Status" StatusLabel.Size = UDim2.new(1, -10, 0, 24) StatusLabel.Position = UDim2.new(0, 5, 0, isMobileLocal and 34 or 40) StatusLabel.BackgroundTransparency = 1 StatusLabel.Text = "STATUS: OFF" StatusLabel.TextColor3 = Color3.fromRGB(255, 100, 100) StatusLabel.Font = Enum.Font.GothamMedium StatusLabel.TextSize = isMobileLocal and 14 or 15 StatusLabel.ZIndex = 2 StatusLabel.Parent = MainFrame local Indicator = Instance.new("Frame") Indicator.Name = "Indicator" Indicator.Size = UDim2.new(0, 10, 0, 10) Indicator.Position = UDim2.new(1, -20, 0.5, -5) Indicator.BackgroundColor3 = Color3.fromRGB(255, 100, 100) Indicator.BorderSizePixel = 0 Indicator.ZIndex = 2 Indicator.Parent = StatusLabel local IndicatorCorner = Instance.new("UICorner") IndicatorCorner.CornerRadius = UDim.new(1, 0) IndicatorCorner.Parent = Indicator local ToggleButton, MinimizeButton if isMobileLocal then ToggleButton = Instance.new("TextButton") ToggleButton.Name = "ToggleButton" ToggleButton.Size = UDim2.new(0.45, 0, 0, 30) ToggleButton.Position = UDim2.new(0.05, 0, 0, 63) ToggleButton.BackgroundColor3 = Color3.fromRGB(60, 65, 100) ToggleButton.BorderSizePixel = 0 ToggleButton.Text = "TOGGLE BHOP" ToggleButton.TextColor3 = Color3.fromRGB(220, 220, 255) ToggleButton.Font = Enum.Font.GothamMedium ToggleButton.TextSize = 14 ToggleButton.ZIndex = 2 ToggleButton.Parent = MainFrame local ToggleCorner = Instance.new("UICorner") ToggleCorner.CornerRadius = UDim.new(0, 6) ToggleCorner.Parent = ToggleButton MinimizeButton = Instance.new("TextButton") MinimizeButton.Name = "MinimizeButton" MinimizeButton.Size = UDim2.new(0.45, 0, 0, 30) MinimizeButton.Position = UDim2.new(0.5, 0, 0, 63) MinimizeButton.BackgroundColor3 = Color3.fromRGB(60, 65, 100) MinimizeButton.BorderSizePixel = 0 MinimizeButton.Text = "MINIMIZE" MinimizeButton.TextColor3 = Color3.fromRGB(220, 220, 255) MinimizeButton.Font = Enum.Font.GothamMedium MinimizeButton.TextSize = 14 MinimizeButton.ZIndex = 2 MinimizeButton.Parent = MainFrame local MinimizeCorner = Instance.new("UICorner") MinimizeCorner.CornerRadius = UDim.new(0, 6) MinimizeCorner.Parent = MinimizeButton else local ControlsLabel = Instance.new("TextLabel") ControlsLabel.Name = "Controls" ControlsLabel.Size = UDim2.new(1, -10, 0, 20) ControlsLabel.Position = UDim2.new(0, 5, 0, 65) ControlsLabel.BackgroundTransparency = 1 ControlsLabel.Text = "X: Toggle BHOP | Z: Hide GUI" ControlsLabel.TextColor3 = Color3.fromRGB(180, 180, 220) ControlsLabel.Font = Enum.Font.Gotham ControlsLabel.TextSize = 12 ControlsLabel.ZIndex = 2 ControlsLabel.Parent = MainFrame end local BHOPEnabled = false local Character = nil local Humanoid = nil local HumanoidRootPart = nil local LastJump = 0 local JUMP_COOLDOWN = 0.15 local GROUND_CHECK_DISTANCE = 3.5 local MAX_SLOPE_ANGLE = 45 local function IsOnGround() if not Character or not HumanoidRootPart or not Humanoid then return false end local state = Humanoid:GetState() if state == Enum.HumanoidStateType.Jumping or state == Enum.HumanoidStateType.Freefall or state == Enum.HumanoidStateType.Swimming then return false end local raycastParams = RaycastParams.new() raycastParams.FilterType = Enum.RaycastFilterType.Blacklist raycastParams.FilterDescendantsInstances = {Character} raycastParams.IgnoreWater = true local rayOrigin = HumanoidRootPart.Position local rayDirection = Vector3.new(0, -GROUND_CHECK_DISTANCE, 0) local raycastResult = workspace:Raycast(rayOrigin, rayDirection, raycastParams) if not raycastResult then return false end local surfaceNormal = raycastResult.Normal local angle = math.deg(math.acos(surfaceNormal:Dot(Vector3.new(0, 1, 0)))) return angle <= MAX_SLOPE_ANGLE end local Minimized = false local RestoreButton = nil local function ToggleGUI() if isMobileLocal then Minimized = not Minimized if Minimized then -- Свернуть MainFrame.Visible = false if not RestoreButton then RestoreButton = Instance.new("TextButton") RestoreButton.Name = "RestoreButton" RestoreButton.Size = UDim2.new(0, 50, 0, 50) RestoreButton.Position = UDim2.new(1, -60, 1, -60) RestoreButton.BackgroundColor3 = Color3.fromRGB(60, 65, 100) RestoreButton.BorderSizePixel = 0 RestoreButton.Text = ">" RestoreButton.TextColor3 = Color3.fromRGB(220, 220, 255) RestoreButton.Font = Enum.Font.GothamBold RestoreButton.TextSize = 20 RestoreButton.ZIndex = 2 RestoreButton.Parent = Container local RestoreCorner = Instance.new("UICorner") RestoreCorner.CornerRadius = UDim.new(1, 0) RestoreCorner.Parent = RestoreButton RestoreButton.MouseButton1Click:Connect(function() ToggleGUI() end) local function MakeDraggable(frame, target) local dragging = false local dragInput, dragStart, startPos local function update(input) local delta = input.Position - dragStart local newPos = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) target.Position = newPos end frame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = target.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) frame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) UIS.InputChanged:Connect(function(input) if dragging and (input == dragInput) then update(input) end end) end MakeDraggable(RestoreButton, Container) else RestoreButton.Visible = true end else MainFrame.Visible = true if RestoreButton then RestoreButton.Visible = false end end else Container.Visible = not Container.Visible end end local function ToggleBHOP() BHOPEnabled = not BHOPEnabled local statusText = "STATUS: " .. (BHOPEnabled and "ON" or "OFF") local statusColor = BHOPEnabled and Color3.fromRGB(100, 255, 100) or Color3.fromRGB(255, 100, 100) local indicatorColor = BHOPEnabled and Color3.fromRGB(100, 255, 100) or Color3.fromRGB(255, 100, 100) StatusLabel.Text = statusText StatusLabel.TextColor3 = statusColor Indicator.BackgroundColor3 = indicatorColor if BHOPEnabled then TweenService:Create(Indicator, TweenInfo.new(0.1), {Size = UDim2.new(0, 12, 0, 12)}):Play() task.wait(0.1) TweenService:Create(Indicator, TweenInfo.new(0.1), {Size = UDim2.new(0, 10, 0, 10)}):Play() end end local function MakeDraggable(frame, target) local dragging = false local dragInput, dragStart, startPos local function update(input) local delta = input.Position - dragStart local newPos = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) target.Position = newPos end frame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = target.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) frame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) UIS.InputChanged:Connect(function(input) if dragging and (input == dragInput) then update(input) end end) end MakeDraggable(TitleLabel, Container) if isMobileLocal and ToggleButton then MakeDraggable(ToggleButton, Container) end if isMobileLocal and MinimizeButton then MakeDraggable(MinimizeButton, Container) end -- Обработка ввода UIS.InputBegan:Connect(function(input, processed) if processed then return end if input.KeyCode == Enum.KeyCode.X then ToggleBHOP() elseif input.KeyCode == Enum.KeyCode.Z then ToggleGUI() end end) if isMobileLocal and ToggleButton then ToggleButton.MouseButton1Click:Connect(ToggleBHOP) end if isMobileLocal and MinimizeButton then MinimizeButton.MouseButton1Click:Connect(ToggleGUI) end local function HandleJump() if not BHOPEnabled then return end if not Humanoid or Humanoid.Health <= 0 then return end local now = tick() if IsOnGround() and (now - LastJump) > JUMP_COOLDOWN then Humanoid:ChangeState(Enum.HumanoidStateType.Jumping) LastJump = now -- Визуальная обратная связь TweenService:Create(Indicator, TweenInfo.new(0.1), {Size = UDim2.new(0, 12, 0, 12)}):Play() task.wait(0.05) TweenService:Create(Indicator, TweenInfo.new(0.1), {Size = UDim2.new(0, 10, 0, 10)}):Play() end end RunService.Heartbeat:Connect(function() -- Обновляем ссылки на персонажа if not Character or not Character:IsDescendantOf(workspace) then Character = Player.Character or Player.CharacterAdded:Wait() if Character then Humanoid = Character:FindFirstChildOfClass("Humanoid") HumanoidRootPart = Character:FindFirstChild("HumanoidRootPart") else Humanoid = nil HumanoidRootPart = nil end end if Humanoid and Humanoid.Health > 0 and HumanoidRootPart then HandleJump() end end) ToggleBHOP()