local Players = game:GetService("Players") local RunService = game:GetService("RunService") local CoreGui = game:GetService("CoreGui") local player = Players.LocalPlayer local CLIMB_SPEED = 12 local RAY_DISTANCE = 2.5 local screenGui = Instance.new("ScreenGui") screenGui.Name = "CompactSpiderHax" screenGui.ResetOnSpawn = false pcall(function() screenGui.Parent = CoreGui end) if not screenGui.Parent then screenGui.Parent = player:WaitForChild("PlayerGui") end local mainFrame = Instance.new("Frame") mainFrame.Size = UDim2.new(0, 240, 0, 100) mainFrame.Position = UDim2.new(0.5, -120, 0.5, -50) mainFrame.BackgroundColor3 = Color3.fromRGB(235, 242, 250) mainFrame.BorderSizePixel = 1 mainFrame.BorderColor3 = Color3.fromRGB(130, 165, 200) mainFrame.Active = true mainFrame.Draggable = true mainFrame.Parent = screenGui local titleBar = Instance.new("Frame") titleBar.Size = UDim2.new(1, 0, 0, 24) titleBar.BackgroundColor3 = Color3.fromRGB(185, 215, 240) titleBar.BorderSizePixel = 0 titleBar.Parent = mainFrame local titleLabel = Instance.new("TextLabel") titleLabel.Size = UDim2.new(1, -35, 1, 0) titleLabel.Position = UDim2.new(0, 8, 0, 0) titleLabel.BackgroundTransparency = 1 titleLabel.Text = "cool spider script for cool people" titleLabel.TextColor3 = Color3.fromRGB(30, 60, 90) titleLabel.TextXAlignment = Enum.TextXAlignment.Left titleLabel.Font = Enum.Font.SourceSans titleLabel.TextSize = 13 titleLabel.Parent = titleBar local closeBtn = Instance.new("TextButton") closeBtn.Size = UDim2.new(0, 32, 0, 16) closeBtn.Position = UDim2.new(1, -36, 0, 4) closeBtn.BackgroundColor3 = Color3.fromRGB(230, 90, 90) closeBtn.BorderSizePixel = 1 closeBtn.BorderColor3 = Color3.fromRGB(170, 50, 50) closeBtn.Text = "X" closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255) closeBtn.Font = Enum.Font.SourceSansBold closeBtn.TextSize = 12 closeBtn.Parent = titleBar closeBtn.MouseButton1Click:Connect(function() screenGui:Destroy() end) local injectButton = Instance.new("TextButton") injectButton.Size = UDim2.new(0, 200, 0, 28) injectButton.Position = UDim2.new(0.5, -100, 0, 34) injectButton.BackgroundColor3 = Color3.fromRGB(245, 245, 245) injectButton.BorderSizePixel = 1 injectButton.BorderColor3 = Color3.fromRGB(160, 160, 160) injectButton.Text = "Enable" injectButton.TextColor3 = Color3.fromRGB(30, 30, 30) injectButton.Font = Enum.Font.SourceSans injectButton.TextSize = 14 injectButton.Parent = mainFrame local checkboxFrame = Instance.new("Frame") checkboxFrame.Size = UDim2.new(1, 0, 0, 24) checkboxFrame.Position = UDim2.new(0, 0, 0, 68) checkboxFrame.BackgroundTransparency = 1 checkboxFrame.Parent = mainFrame local checkboxBtn = Instance.new("TextButton") checkboxBtn.Size = UDim2.new(0, 12, 0, 12) checkboxBtn.Position = UDim2.new(0, 20, 0.5, -6) checkboxBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255) checkboxBtn.BorderSizePixel = 1 checkboxBtn.BorderColor3 = Color3.fromRGB(140, 170, 200) checkboxBtn.Text = "✓" checkboxBtn.TextColor3 = Color3.fromRGB(50, 120, 200) checkboxBtn.Font = Enum.Font.SourceSansBold checkboxBtn.TextSize = 11 checkboxBtn.Parent = checkboxFrame local checkboxLabel = Instance.new("TextLabel") checkboxLabel.Size = UDim2.new(0, 100, 1, 0) checkboxLabel.Position = UDim2.new(0, 38, 0, 0) checkboxLabel.BackgroundTransparency = 1 checkboxLabel.Text = "Add cool eyeglasses" checkboxLabel.TextColor3 = Color3.fromRGB(40, 60, 80) checkboxLabel.TextXAlignment = Enum.TextXAlignment.Left checkboxLabel.Font = Enum.Font.SourceSans checkboxLabel.TextSize = 12 checkboxLabel.Parent = checkboxFrame local watermarkLabel = Instance.new("TextLabel") watermarkLabel.Size = UDim2.new(0, 100, 1, 0) watermarkLabel.Position = UDim2.new(1, -115, 0, 0) watermarkLabel.BackgroundTransparency = 1 watermarkLabel.Text = "made by tuxx" watermarkLabel.TextColor3 = Color3.fromRGB(140, 150, 160) watermarkLabel.TextXAlignment = Enum.TextXAlignment.Right watermarkLabel.Font = Enum.Font.SourceSansItalic watermarkLabel.TextSize = 9 watermarkLabel.Parent = checkboxFrame local useGlasses = true checkboxBtn.MouseButton1Click:Connect(function() useGlasses = not useGlasses if useGlasses then checkboxBtn.Text = "✓" else checkboxBtn.Text = "" end end) local isFeatureEnabled = false local spiderConnection = nil local bodyVelocity = nil local function removeGlasses(character) if character then local oldGlasses = character:FindFirstChild("CoolGlasses") if oldGlasses then oldGlasses:Destroy() end end end local function addGlasses(character, head) removeGlasses(character) local glasses = Instance.new("Part") glasses.Name = "CoolGlasses" glasses.Size = Vector3.new(1, 0.5, 1) glasses.CanCollide = false glasses.Massless = true local mesh = Instance.new("SpecialMesh") mesh.MeshId = "rbxassetid://1577360" mesh.TextureId = "rbxassetid://1577349" mesh.Scale = Vector3.new(1.05, 1.05, 1.05) mesh.Parent = glasses local weld = Instance.new("Weld") weld.Part0 = head weld.Part1 = glasses weld.C0 = CFrame.new(0, 0.18, -0.15) weld.Parent = glasses glasses.Parent = character end local function stopClimbing(character) if bodyVelocity then bodyVelocity:Destroy() bodyVelocity = nil end if character and character.Parent then for _, part in ipairs(character:GetChildren()) do if part:IsA("BasePart") then part.CanCollide = true end end local humanoid = character:FindFirstChildOfClass("Humanoid") local rootJoint = character.HumanoidRootPart:FindFirstChild("RootJoint") local animator = humanoid and humanoid:FindFirstChildOfClass("Animator") if humanoid then humanoid:ChangeState(Enum.HumanoidStateType.Running) end if rootJoint then rootJoint.Transform = CFrame.new() end if animator then for _, track in ipairs(animator:GetPlayingAnimationTracks()) do track:AdjustSpeed(1) end end end end local function cleanUp() if spiderConnection then spiderConnection:Disconnect() spiderConnection = nil end if player.Character then stopClimbing(player.Character) removeGlasses(player.Character) end end local function startSpider(character) if spiderConnection then spiderConnection:Disconnect() end local rootPart = character:WaitForChild("HumanoidRootPart", 10) local humanoid = character:WaitForChild("Humanoid", 10) local head = character:WaitForChild("Head", 10) if not rootPart or not humanoid or not head then return end humanoid.RequiresNeck = false if useGlasses then addGlasses(character, head) end local rootJoint = rootPart:WaitForChild("RootJoint", 5) local animator = humanoid:WaitForChild("Animator", 5) local isClimbing = false spiderConnection = RunService.Heartbeat:Connect(function() if not character or not character.Parent or not rootPart or not humanoid or not humanoid.Parent or humanoid.Health <= 0 then cleanUp() return end local isTouchingWall = false if humanoid.MoveDirection.Magnitude > 0 then local raycastOrigin = rootPart.Position local raycastDirection = rootPart.CFrame.LookVector * RAY_DISTANCE local raycastParams = RaycastParams.new() raycastParams.FilterDescendantsInstances = {character} raycastParams.FilterType = Enum.RaycastFilterType.Exclude local raycastResult = workspace:Raycast(raycastOrigin, raycastDirection, raycastParams) if raycastResult then isTouchingWall = true isClimbing = true for _, part in ipairs(character:GetChildren()) do if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then part.CanCollide = false end end if not bodyVelocity then bodyVelocity = Instance.new("LinearVelocity") bodyVelocity.MaxForce = math.huge bodyVelocity.VelocityConstraintMode = Enum.VelocityConstraintMode.Vector bodyVelocity.Attachment0 = rootPart:FindFirstChildOfClass("Attachment") or Instance.new("Attachment", rootPart) bodyVelocity.Parent = rootPart end bodyVelocity.VectorVelocity = Vector3.new(rootPart.AssemblyLinearVelocity.X, CLIMB_SPEED, rootPart.AssemblyLinearVelocity.Z) rootPart.AssemblyAngularVelocity = Vector3.new(0, 0, 0) local pushBack = raycastResult.Normal * 0.1 rootPart.CFrame = CFrame.new(rootPart.Position + pushBack) * CFrame.lookAt(Vector3.new(), -raycastResult.Normal).Rotation if rootJoint then rootJoint.Transform = CFrame.Angles(math.rad(-90), math.rad(180), 0) * CFrame.Angles(math.rad(-12), 0, 0) end if animator then for _, track in ipairs(animator:GetPlayingAnimationTracks()) do if track.Name:lower():find("fall") or track.Name:lower():find("jump") then track:Stop() else track:AdjustSpeed(0) end end end else if isClimbing then local ledgeCheckOrigin = rootPart.Position + Vector3.new(0, 2, 0) local ledgeCheckDirection = rootPart.CFrame.LookVector * RAY_DISTANCE local ledgeResult = workspace:Raycast(ledgeCheckOrigin, ledgeCheckDirection, raycastParams) if not ledgeResult and isClimbing then isTouchingWall = false rootPart.CFrame = rootPart.CFrame * CFrame.new(0, 3, -1.8) humanoid:ChangeState(Enum.HumanoidStateType.Running) end end end end if not isTouchingWall and isClimbing then isClimbing = false stopClimbing(character) end end) end injectButton.MouseButton1Click:Connect(function() isFeatureEnabled = not isFeatureEnabled if isFeatureEnabled then injectButton.Text = "Disable" injectButton.BackgroundColor3 = Color3.fromRGB(255, 220, 220) injectButton.BorderColor3 = Color3.fromRGB(220, 100, 100) if player.Character then task.spawn(startSpider, player.Character) end else injectButton.Text = "Enable" injectButton.BackgroundColor3 = Color3.fromRGB(245, 245, 245) injectButton.BorderColor3 = Color3.fromRGB(160, 160, 160) cleanUp() end end) player.CharacterAdded:Connect(function(character) if isFeatureEnabled then task.spawn(startSpider, character) end end)