
Key RequiredUniversal

-- SPIDER SYSTEM v23.4 — CASULO GROSSO + BALANÇO NORMAL
-- Web Swing + Web Zip + Wall Climb + Ceiling Web + Slingshot
-- TEIA BRANCA + ANIMAÇÕES + SONS + MÃOS
-- Mobile / Delta / R15
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local Debris = game:GetService("Debris")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local player = Players.LocalPlayer
local backpack = player:WaitForChild("Backpack")
local gui = player:WaitForChild("PlayerGui")
------------------------------------------------
-- TOOL
------------------------------------------------
local tool = Instance.new("Tool")
tool.Name = "SpiderPowers"
tool.RequiresHandle = false
tool.Parent = backpack
------------------------------------------------
-- GUI
------------------------------------------------
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "SpiderUI"
screenGui.ResetOnSpawn = false
screenGui.Enabled = false
screenGui.Parent = gui
local function btn(name, size, pos, color, text)
local b = Instance.new("TextButton")
b.Name = name
b.Size = size
b.Position = pos
b.BackgroundColor3 = color
b.Text = text or ""
b.TextScaled = true
b.ZIndex = 5
b.Parent = screenGui
return b
end
local btnSwing = btn("Swing", UDim2.new(0.22,0,0.12,0), UDim2.new(0.72,0,0.75,0), Color3.fromRGB(220,40,40), "BALANÇAR")
local btnZip = btn("Zip", UDim2.new(0.22,0,0.12,0), UDim2.new(0.72,0,0.60,0), Color3.fromRGB(30,130,220), "WEB ZIP")
local btnSling = btn("Sling", UDim2.new(0.22,0,0.12,0), UDim2.new(0.72,0,0.45,0), Color3.fromRGB(255,140,0), "ESTILINGUE")
local btnWall = btn("Wall", UDim2.new(0.13,0,0.13,0), UDim2.new(0.06,0,0.75,0), Color3.fromRGB(180,0,0), "")
local btnTeto = btn("Teto", UDim2.new(0.13,0,0.13,0), UDim2.new(0.06,0,0.60,0), Color3.fromRGB(140,0,200), "")
Instance.new("UICorner", btnWall).CornerRadius = UDim.new(1,0)
Instance.new("UICorner", btnTeto).CornerRadius = UDim.new(1,0)
local btnSubir = btn("Subir", UDim2.new(0.25,0,0.08,0), UDim2.new(0.375,0,0.04,0), Color3.fromRGB(0,180,0), "SUBIR")
btnSubir.Visible = false
------------------------------------------------
-- SETAS
------------------------------------------------
local arrows = Instance.new("Frame", screenGui)
arrows.Size = UDim2.new(1,0,1,0)
arrows.BackgroundTransparency = 1
arrows.Visible = false
local function arrow(pos, txt)
local b = Instance.new("TextButton")
b.Size = UDim2.new(0.14,0,0.1,0)
b.Position = pos
b.Text = txt
b.TextScaled = true
b.BackgroundColor3 = Color3.fromRGB(40,40,40)
b.TextColor3 = Color3.new(1,1,1)
b.Parent = arrows
return b
end
local up = arrow(UDim2.new(0.43,0,0.75,0), "↑")
local down = arrow(UDim2.new(0.43,0,0.87,0), "↓")
local left = arrow(UDim2.new(0.30,0,0.81,0), "←")
local right = arrow(UDim2.new(0.56,0,0.81,0), "→")
------------------------------------------------
-- CHAR + ANIMAÇÕES
------------------------------------------------
local function getChar()
local c = player.Character or player.CharacterAdded:Wait()
return c, c:WaitForChild("HumanoidRootPart"), c:WaitForChild("Humanoid")
end
local SWING_ANIM_ID = "rbxassetid://507767968"
local CLIMB_ANIM_ID = "rbxassetid://507765644"
local swingTrack, climbTrack
local function loadAnimations(hum)
local animator = hum:FindFirstChildOfClass("Animator")
if not animator then
animator = Instance.new("Animator")
animator.Parent = hum
end
local swingAnim = Instance.new("Animation")
swingAnim.AnimationId = SWING_ANIM_ID
swingTrack = animator:LoadAnimation(swingAnim)
swingTrack.Priority = Enum.AnimationPriority.Action
swingTrack.Looped = true
local climbAnim = Instance.new("Animation")
climbAnim.AnimationId = CLIMB_ANIM_ID
climbTrack = animator:LoadAnimation(climbAnim)
climbTrack.Priority = Enum.AnimationPriority.Action
climbTrack.Looped = true
end
------------------------------------------------
-- LANÇADORES NOS PULSOS
------------------------------------------------
local wristShooters = {}
local function clearWristShooters()
for _, s in pairs(wristShooters) do
if s then s:Destroy() end
end
wristShooters = {}
end
local function createWristShooter(hand, offset)
if not hand then return end
local shooter = Instance.new("Part")
shooter.Name = "WebShooter"
shooter.Size = Vector3.new(0.38, 0.26, 0.48)
shooter.Color = Color3.fromRGB(20, 20, 20)
shooter.Material = Enum.Material.Metal
shooter.CanCollide = false
shooter.Massless = true
shooter.Parent = hand
local weld = Instance.new("Weld")
weld.Part0 = hand
weld.Part1 = shooter
weld.C0 = offset
weld.Parent = shooter
local detail = Instance.new("Part")
detail.Size = Vector3.new(0.14, 0.11, 0.14)
detail.Color = Color3.fromRGB(200, 0, 0)
detail.Material = Enum.Material.Neon
detail.CanCollide = false
detail.Massless = true
detail.Parent = shooter
local detailWeld = Instance.new("Weld")
detailWeld.Part0 = shooter
detailWeld.Part1 = detail
detailWeld.C0 = CFrame.new(0, 0, -0.25)
detailWeld.Parent = detail
table.insert(wristShooters, shooter)
table.insert(wristShooters, detail)
end
local function equipWristShooters(char)
clearWristShooters()
local rightHand = char:FindFirstChild("RightHand") or char:FindFirstChild("Right Arm")
local leftHand = char:FindFirstChild("LeftHand") or char:FindFirstChild("Left Arm")
createWristShooter(rightHand, CFrame.new(0.05, -0.18, 0.22) * CFrame.Angles(math.rad(-8), math.rad(12), 0))
createWristShooter(leftHand, CFrame.new(-0.05, -0.18, 0.22) * CFrame.Angles(math.rad(-8), math.rad(-12), 0))
end
------------------------------------------------
-- CASULO DE TEIA (MAIS GROSSO)
------------------------------------------------
local function playCocoonTransformation(char, hrp)
local hum = char:FindFirstChildOfClass("Humanoid")
if hum then
hum.PlatformStand = true
end
local webSound = Instance.new("Sound")
webSound.SoundId = "rbxassetid://9084017080"
webSound.Volume = 2
webSound.Parent = hrp
webSound:Play()
Debris:AddItem(webSound, 2)
local cocoonParts = {}
local numParts = 105 -- bem mais pedaços
for i = 1, numParts do
local part = Instance.new("Part")
part.Name = "CocoonPiece"
part.Size = Vector3.new(0.7, 0.7, 0.7)
part.Color = Color3.fromRGB(245, 245, 245)
part.Material = Enum.Material.SmoothPlastic
part.CanCollide = false
part.Anchored = true
part.CastShadow = false
part.Parent = Workspace
local theta = math.rad(math.random(0, 360))
local phi = math.rad(math.random(0, 180))
local radius = 2.8 -- casulo maior
local offset = Vector3.new(
radius * math.sin(phi) * math.cos(theta),
radius * math.cos(phi) * 1.1,
radius * math.sin(phi) * math.sin(theta)
)
part.CFrame = CFrame.new(hrp.Position + offset)
table.insert(cocoonParts, part)
local tween = TweenService:Create(part, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
Size = Vector3.new(1.8, 1.8, 1.8)
})
tween:Play()
end
task.wait(0.75)
-- Explosão
local explodeSound = Instance.new("Sound")
explodeSound.SoundId = "rbxassetid://9084017080"
explodeSound.Volume = 2.3
explodeSound.Pitch = 1.25
explodeSound.Parent = hrp
explodeSound:Play()
Debris:AddItem(explodeSound, 2)
for _, part in ipairs(cocoonParts) do
if part and part.Parent then
part.Anchored = false
local dir = (part.Position - hrp.Position).Unit
local bv = Instance.new("BodyVelocity")
bv.MaxForce = Vector3.new(1e5, 1e5, 1e5)
bv.Velocity = dir * math.random(40, 65) + Vector3.new(0, math.random(12, 28), 0)
bv.Parent = part
Debris:AddItem(bv, 0.45)
Debris:AddItem(part, 0.8)
end
end
task.wait(0.15)
if hum then
hum.PlatformStand = false
end
end
------------------------------------------------
-- WEB SWING (NORMAL - SEM MIRA)
------------------------------------------------
local swinging = false
local rope, anchor, att0, att1, align
local handBeams = {}
local swingConn
local lastSwingVelocity = Vector3.zero
local swingHandCycle = 0
local function clearHandBeams()
for _, b in pairs(handBeams) do
if b then b:Destroy() end
end
handBeams = {}
end
local function createHandWebs(char, targetAttachment, mode)
clearHandBeams()
local leftHand = char:FindFirstChild("LeftHand") or char:FindFirstChild("Left Arm")
local rightHand = char:FindFirstChild("RightHand") or char:FindFirstChild("Right Arm")
local function addBeam(hand)
if not hand then return end
local a1 = Instance.new("Attachment", hand)
local hb = Instance.new("Beam")
hb.Attachment0 = targetAttachment
hb.Attachment1 = a1
hb.Width0 = 0.09
hb.Width1 = 0.09
hb.Color = ColorSequence.new(Color3.new(1,1,1))
hb.FaceCamera = true
hb.LightEmission = 1
hb.Parent = hand
table.insert(handBeams, hb)
table.insert(handBeams, a1)
end
if mode == 0 then
addBeam(rightHand)
elseif mode == 1 then
addBeam(leftHand)
else
addBeam(leftHand)
addBeam(rightHand)
end
end
local function startSwing()
if swinging then return end
swinging = true
local char, hrp, hum = getChar()
hum.PlatformStand = true
if not swingTrack then loadAnimations(hum) end
if swingTrack then swingTrack:Play(0.2) end
local webSound = Instance.new("Sound")
webSound.SoundId = "rbxassetid://9084017080"
webSound.Volume = 1.8
webSound.Parent = hrp
webSound:Play()
Debris:AddItem(webSound, 2)
-- Balanço normal (posição à frente)
anchor = Instance.new("Part", Workspace)
anchor.Anchored = true
anchor.Transparency = 1
anchor.CanCollide = false
anchor.Size = Vector3.new(0.3,0.3,0.3)
anchor.Position = hrp.Position + hrp.CFrame.LookVector * 45 + Vector3.new(0, 14, 0)
att0 = Instance.new("Attachment", anchor)
att1 = Instance.new("Attachment", hrp)
rope = Instance.new("RopeConstraint", hrp)
rope.Attachment0 = att0
rope.Attachment1 = att1
rope.Length = (anchor.Position - hrp.Position).Magnitude
rope.Thickness = 0.4
rope.Visible = false
local mode = swingHandCycle % 3
createHandWebs(char, att0, mode)
swingHandCycle = swingHandCycle + 1
align = Instance.new("AlignOrientation", hrp)
align.Attachment0 = att1
align.Responsiveness = 8
align.MaxTorque = 8000
hrp.AssemblyLinearVelocity = hrp.AssemblyLinearVelocity + hrp.CFrame.LookVector * 55
swingConn = RunService.Heartbeat:Connect(function()
if not hrp or not hrp.Parent then return end
lastSwingVelocity = hrp.AssemblyLinearVelocity
local dir = (anchor.Position - hrp.Position).Unit
local vel = hrp.AssemblyLinearVelocity
local radial = dir * vel:Dot(dir)
local tangential = vel - radial
hrp.AssemblyLinearVelocity = tangential + Vector3.new(0, -workspace.Gravity * 0.03, 0)
end)
end
local function stopSwing()
if not swinging then return end
swinging = false
if swingConn then swingConn:Disconnect() end
if swingTrack and swingTrack.IsPlaying then swingTrack:Stop(0.2) end
local _, hrp, hum = getChar()
hum.PlatformStand = false
if hrp and lastSwingVelocity.Magnitude > 5 then
local boostDirection = lastSwingVelocity.Unit
local finalDir = (boostDirection + hrp.CFrame.LookVector * 0.4).Unit
hrp.AssemblyLinearVelocity = hrp.AssemblyLinearVelocity + finalDir * 65 + Vector3.new(0, 25, 0)
end
clearHandBeams()
if rope then rope:Destroy() end
if anchor then anchor:Destroy() end
if align then align:Destroy() end
lastSwingVelocity = Vector3.zero
end
------------------------------------------------
-- WEB ZIP
------------------------------------------------
btnZip.MouseButton1Down:Connect(function()
stopSwing()
local char, hrp = getChar()
local zipAnchor = Instance.new("Part")
zipAnchor.Anchored = true
zipAnchor.CanCollide = false
zipAnchor.Transparency = 1
zipAnchor.Size = Vector3.new(0.2,0.2,0.2)
zipAnchor.Position = hrp.Position + hrp.CFrame.LookVector * 35 + Vector3.new(0,12,0)
zipAnchor.Parent = Workspace
local att0 = Instance.new("Attachment", zipAnchor)
local att1 = Instance.new("Attachment", hrp)
local leftHand = char:FindFirstChild("LeftHand") or char:FindFirstChild("Left Arm")
local rightHand = char:FindFirstChild("RightHand") or char:FindFirstChild("Right Arm")
local extra = {}
for _, hand in ipairs({leftHand, rightHand}) do
if hand then
local a1 = Instance.new("Attachment", hand)
local hb = Instance.new("Beam")
hb.Attachment0 = att0
hb.Attachment1 = a1
hb.Width0 = 0.09
hb.Width1 = 0.09
hb.Color = ColorSequence.new(Color3.new(1,1,1))
hb.FaceCamera = true
hb.LightEmission = 1
hb.Parent = hand
table.insert(extra, hb)
table.insert(extra, a1)
end
end
Debris:AddItem(zipAnchor, 0.35)
Debris:AddItem(att1, 0.35)
for _, v in ipairs(extra) do Debris:AddItem(v, 0.35) end
local webSound = Instance.new("Sound")
webSound.SoundId = "rbxassetid://9084017080"
webSound.Volume = 1.8
webSound.Parent = hrp
webSound:Play()
Debris:AddItem(webSound, 2)
local bv = Instance.new("BodyVelocity", hrp)
bv.MaxForce = Vector3.new(1e7,1e7,1e7)
bv.Velocity = hrp.CFrame.LookVector * 120 + Vector3.new(0,60,0)
Debris:AddItem(bv, 0.3)
end)
------------------------------------------------
-- WALL CLIMB
------------------------------------------------
local climbing = false
local moveDir = Vector3.zero
local vel, gyro
local function getWall(char, hrp)
local params = RaycastParams.new()
params.FilterDescendantsInstances = {char}
params.FilterType = Enum.RaycastFilterType.Blacklist
for _, dir in ipairs({
hrp.CFrame.LookVector,
-hrp.CFrame.LookVector,
hrp.CFrame.RightVector,
-hrp.CFrame.RightVector
}) do
local hit = Workspace:Raycast(hrp.Position, dir * 3, params)
if hit then return hit end
end
end
local function startClimb()
if climbing then return end
stopSwing()
climbing = true
btnWall.BackgroundColor3 = Color3.fromRGB(0,200,0)
arrows.Visible = true
btnSubir.Visible = true
local char, hrp, hum = getChar()
hum.PlatformStand = true
if not climbTrack then loadAnimations(hum) end
if climbTrack then climbTrack:Play(0.2) end
vel = Instance.new("BodyVelocity", hrp)
vel.MaxForce = Vector3.new(1e7,1e7,1e7)
gyro = Instance.new("BodyGyro", hrp)
gyro.MaxTorque = Vector3.new(1e7,1e7,1e7)
gyro.P = 60000
task.spawn(function()
while climbing do
task.wait(0.03)
local hit = getWall(char, hrp)
if hit then
local face = -hit.Normal
local rightVec = face:Cross(Vector3.new(0,1,0)).Unit
local upVec = rightVec:Cross(face).Unit
vel.Velocity = (rightVec * moveDir.X + upVec * moveDir.Y) * 18 + face * 30
gyro.CFrame = CFrame.lookAt(hrp.Position, hrp.Position + face)
else
vel.Velocity = Vector3.zero
end
end
end)
end
local function stopClimb()
if not climbing then return end
climbing = false
arrows.Visible = false
btnSubir.Visible = false
btnWall.BackgroundColor3 = Color3.fromRGB(180,0,0)
if climbTrack and climbTrack.IsPlaying then climbTrack:Stop(0.2) end
local _, _, hum = getChar()
hum.PlatformStand = false
if vel then vel:Destroy() end
if gyro then gyro:Destroy() end
moveDir = Vector3.zero
end
------------------------------------------------
-- TETO
------------------------------------------------
local ceilingMode = false
local ceilingRope, ceilingAnchor, ceilingAtt0, ceilingAtt1
local ceilingConn
local function stopCeiling()
if not ceilingMode then return end
ceilingMode = false
if ceilingConn then ceilingConn:Disconnect() end
if climbTrack and climbTrack.IsPlaying then climbTrack:Stop(0.2) end
local _, _, hum = getChar()
hum.PlatformStand = false
clearHandBeams()
if ceilingRope then ceilingRope:Destroy() end
if ceilingAnchor then ceilingAnchor:Destroy() end
arrows.Visible = false
btnTeto.BackgroundColor3 = Color3.fromRGB(140,0,200)
moveDir = Vector3.zero
end
local function startCeiling()
if ceilingMode then return end
stopSwing()
stopClimb()
local char, hrp, hum = getChar()
local params = RaycastParams.new()
params.FilterDescendantsInstances = {char}
params.FilterType = Enum.RaycastFilterType.Blacklist
local hit = Workspace:Raycast(hrp.Position, Vector3.new(0, 60, 0), params)
if not hit then return end
ceilingMode = true
btnTeto.BackgroundColor3 = Color3.fromRGB(0,200,0)
arrows.Visible = true
hum.PlatformStand = true
if not climbTrack then loadAnimations(hum) end
if climbTrack then climbTrack:Play(0.2) end
local webSound = Instance.new("Sound")
webSound.SoundId = "rbxassetid://9084017080"
webSound.Volume = 1.8
webSound.Parent = hrp
webSound:Play()
Debris:AddItem(webSound, 2)
ceilingAnchor = Instance.new("Part", Workspace)
ceilingAnchor.Anchored = true
ceilingAnchor.Transparency = 1
ceilingAnchor.CanCollide = false
ceilingAnchor.Size = Vector3.new(0.3,0.3,0.3)
ceilingAnchor.Position = hit.Position
ceilingAtt0 = Instance.new("Attachment", ceilingAnchor)
ceilingAtt1 = Instance.new("Attachment", hrp)
ceilingRope = Instance.new("RopeConstraint", hrp)
ceilingRope.Attachment0 = ceilingAtt0
ceilingRope.Attachment1 = ceilingAtt1
ceilingRope.Length = (hit.Position - hrp.Position).Magnitude
ceilingRope.Thickness = 0.4
ceilingRope.Visible = false
createHandWebs(char, ceilingAtt0, 0)
ceilingConn = RunService.Heartbeat:Connect(function()
if not ceilingMode or not hrp or not hrp.Parent then return end
if moveDir.Y > 0 then
ceilingRope.Length = math.max(1, ceilingRope.Length - 0.65)
elseif moveDir.Y < 0 then
ceilingRope.Length = math.min(80, ceilingRope.Length + 0.65)
end
end)
end
------------------------------------------------
-- ESTILINGUE
------------------------------------------------
local slingActive = false
local slingAnchor
local slingBeams = {}
local function clearSlingBeams()
for _, v in pairs(slingBeams) do
if v then v:Destroy() end
end
slingBeams = {}
end
local function stopSling()
if not slingActive then return end
slingActive = false
btnSling.BackgroundColor3 = Color3.fromRGB(255,140,0)
clearSlingBeams()
if slingAnchor then slingAnchor:Destroy() end
slingAnchor = nil
end
local function startSling()
stopSwing()
stopClimb()
stopCeiling()
stopSling()
local char, hrp = getChar()
slingActive = true
btnSling.BackgroundColor3 = Color3.fromRGB(0,220,0)
slingAnchor = Instance.new("Part")
slingAnchor.Anchored = true
slingAnchor.CanCollide = false
slingAnchor.Transparency = 1
slingAnchor.Size = Vector3.new(0.3,0.3,0.3)
slingAnchor.Position = hrp.Position + hrp.CFrame.LookVector * 28 + Vector3.new(0, 10, 0)
slingAnchor.Parent = Workspace
local att0 = Instance.new("Attachment", slingAnchor)
local leftHand = char:FindFirstChild("LeftHand") or char:FindFirstChild("Left Arm")
local rightHand = char:FindFirstChild("RightHand") or char:FindFirstChild("Right Arm")
for _, hand in ipairs({leftHand, rightHand}) do
if hand then
local a1 = Instance.new("Attachment", hand)
local hb = Instance.new("Beam")
hb.Attachment0 = att0
hb.Attachment1 = a1
hb.Width0 = 0.11
hb.Width1 = 0.11
hb.Color = ColorSequence.new(Color3.new(1,1,1))
hb.FaceCamera = true
hb.LightEmission = 1
hb.Parent = hand
table.insert(slingBeams, hb)
table.insert(slingBeams, a1)
end
end
local webSound = Instance.new("Sound")
webSound.SoundId = "rbxassetid://9084017080"
webSound.Volume = 2
webSound.Parent = hrp
webSound:Play()
Debris:AddItem(webSound, 2)
hrp.AssemblyLinearVelocity = hrp.AssemblyLinearVelocity * 0.35 + (-hrp.CFrame.LookVector * 32 + Vector3.new(0, 8, 0))
end
local function launchSling()
if not slingActive then return end
local _, hrp = getChar()
local bv = Instance.new("BodyVelocity", hrp)
bv.MaxForce = Vector3.new(1e7, 1e7, 1e7)
bv.Velocity = hrp.CFrame.LookVector * 165 + Vector3.new(0, 95, 0)
Debris:AddItem(bv, 0.35)
local webSound = Instance.new("Sound")
webSound.SoundId = "rbxassetid://9084017080"
webSound.Volume = 1.6
webSound.Parent = hrp
webSound:Play()
Debris:AddItem(webSound, 2)
stopSling()
end
btnSling.MouseButton1Click:Connect(function()
if not slingActive then
startSling()
else
launchSling()
end
end)
------------------------------------------------
-- SUBIR
------------------------------------------------
btnSubir.MouseButton1Down:Connect(function()
if not climbing then return end
stopClimb()
local _, hrp = getChar()
local bv = Instance.new("BodyVelocity", hrp)
bv.MaxForce = Vector3.new(1e7,1e7,1e7)
bv.Velocity = Vector3.new(0,40,0) + hrp.CFrame.LookVector * 20
Debris:AddItem(bv, 0.25)
end)
------------------------------------------------
-- SETAS
------------------------------------------------
local function bind(b, d)
b.MouseButton1Down:Connect(function() moveDir = d end)
b.MouseButton1Up:Connect(function() moveDir = Vector3.zero end)
b.MouseLeave:Connect(function() moveDir = Vector3.zero end)
end
bind(up, Vector3.new(0,1,0))
bind(down, Vector3.new(0,-1,0))
bind(left, Vector3.new(-1,0,0))
bind(right, Vector3.new(1,0,0))
------------------------------------------------
-- BOTÕES + EQUIPAR
------------------------------------------------
btnSwing.MouseButton1Down:Connect(startSwing)
btnSwing.MouseButton1Up:Connect(stopSwing)
btnSwing.MouseLeave:Connect(stopSwing)
btnWall.MouseButton1Click:Connect(function()
if climbing then stopClimb() else startClimb() end
end)
btnTeto.MouseButton1Click:Connect(function()
if ceilingMode then
stopCeiling()
else
startCeiling()
end
end)
tool.Equipped:Connect(function()
local char, hrp = getChar()
task.spawn(function()
playCocoonTransformation(char, hrp)
screenGui.Enabled = true
equipWristShooters(char)
end)
end)
tool.Unequipped:Connect(function()
screenGui.Enabled = false
stopSwing()
stopClimb()
stopCeiling()
stopSling()
clearWristShooters()
clearHandBeams()
end)
UserInputService.JumpRequest:Connect(function()
if climbing then stopClimb() end
if ceilingMode then stopCeiling() end
if slingActive then stopSling() end
end)
player.CharacterAdded:Connect(function()
stopSwing()
stopClimb()
stopCeiling()
stopSling()
clearHandBeams()
clearWristShooters()
swingTrack = nil
climbTrack = nil
swingHandCycle = 0
screenGui.Enabled = false
end)
print("🕷️ SPIDER SYSTEM v23.4 — CASULO GROSSO + BALANÇO NORMAL")
![Sir Meme Hub | [16 GAMES] [$14.99 LIFETIME] | FARM/AIM/ESP](https://scriptblox.com/images/sb/-1-1791044877945.webp)


Good but need more improvement. especially in animation and Ui.
@JRSGamingOfficial check my prof.
I dont like AI generated codes. But de swing is not cool. But the physics is Okay. Great physics of the web. Pls make a update
@Chainsaww099 new version is out, bro, check my profile.