free BEST universal spider script
Key RequiredUniversal

free BEST universal spider script

Universal Scripttuxxtuxx 158 views 1.9K executesUpdated Aug 3, 2026
Unrated
00
Lua Script•300 lines (9914 chars)
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)

Features & Information

A cool script for climbing walls (also adds cool glasses >:3)
#aero#menu#spider#climb#wallclimb

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts