
KeylessUniversal

-- SPIDER SYSTEM v22.1 FINAL
-- Web Swing REAL + Web Zip + Wall Climb + SUBIR funcional
-- TEIA BRANCA VISÍVEL
-- 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 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", gui)
screenGui.Name = "SpiderUI"
screenGui.ResetOnSpawn = false
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 btnWall = btn("Wall",UDim2.new(0.13,0,0.13,0),UDim2.new(0.06,0,0.75,0),Color3.fromRGB(180,0,0),"")
Instance.new("UICorner",btnWall).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
------------------------------------------------
local function getChar()
local c = player.Character or player.CharacterAdded:Wait()
return c,c:WaitForChild("HumanoidRootPart"),c:WaitForChild("Humanoid")
end
------------------------------------------------
-- WEB SWING (COM TEIA VISÍVEL)
------------------------------------------------
local swinging=false
local rope,anchor,att0,att1,align,beam
local swingConn
local function startSwing()
if swinging then return end
swinging=true
local _,hrp,hum=getChar()
hum.PlatformStand=true
anchor=Instance.new("Part",Workspace)
anchor.Anchored=true
anchor.Transparency=1
anchor.Size=Vector3.new(0.2,0.2,0.2)
anchor.Position=hrp.Position+hrp.CFrame.LookVector*40+Vector3.new(0,15,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 -- usamos Beam no lugar
-- TEIA BRANCA
beam=Instance.new("Beam",hrp)
beam.Attachment0=att0
beam.Attachment1=att1
beam.Width0=0.15
beam.Width1=0.15
beam.Color=ColorSequence.new(Color3.new(1,1,1))
beam.FaceCamera=true
beam.LightEmission=1
align=Instance.new("AlignOrientation",hrp)
align.Attachment0=att1
align.Responsiveness=8
align.MaxTorque=8000
hrp.AssemblyLinearVelocity+=hrp.CFrame.LookVector*55
swingConn=RunService.Heartbeat:Connect(function()
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
local _,_,hum=getChar()
hum.PlatformStand=false
if rope then rope:Destroy() end
if beam then beam:Destroy() end
if anchor then anchor:Destroy() end
if align then align:Destroy() end
end
------------------------------------------------
-- WEB ZIP (SEM MUDAR)
------------------------------------------------
btnZip.MouseButton1Down:Connect(function()
stopSwing()
local _,hrp=getChar()
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 (INALTERADO)
------------------------------------------------
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
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)
local _,_,hum=getChar()
hum.PlatformStand=false
if vel then vel:Destroy() end
if gyro then gyro:Destroy() end
moveDir=Vector3.zero
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
------------------------------------------------
btnSwing.MouseButton1Down:Connect(startSwing)
btnSwing.MouseButton1Up:Connect(stopSwing)
btnSwing.MouseLeave:Connect(stopSwing)
btnWall.MouseButton1Click:Connect(function()
if climbing then stopClimb() else startClimb() end
end)
UserInputService.JumpRequest:Connect(function()
if climbing then stopClimb() end
end)
player.CharacterAdded:Connect(function()
stopSwing()
stopClimb()
end)
print("🕷️ SPIDER SYSTEM v22.1 — TEIA BRANCA VISÍVEL") -- SPIDER ESTILINGUE - FIXED / RESPAWN SAFE
local Players = game:GetService("Players")
local Debris = game:GetService("Debris")
local player = Players.LocalPlayer
-- VARIÁVEIS DE PERSONAGEM (atualizadas no respawn)
local char, humanoid, hrp
local function LoadCharacter()
char = player.Character or player.CharacterAdded:Wait()
humanoid = char:WaitForChild("Humanoid")
hrp = char:WaitForChild("HumanoidRootPart")
end
LoadCharacter()
player.CharacterAdded:Connect(LoadCharacter)
-- ESTADO
local charging = false
local beams = {}
-- GUI
local gui = Instance.new("ScreenGui")
gui.Name = "SpiderSlingshotSolo"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")
local btn = Instance.new("TextButton")
btn.Parent = gui
btn.Size = UDim2.new(0,170,0,55)
btn.Position = UDim2.new(1,-190,0.44,0) -- acima do Web Zip
btn.BackgroundColor3 = Color3.fromRGB(25,25,25)
btn.TextColor3 = Color3.new(1,1,1)
btn.TextScaled = true
btn.Font = Enum.Font.GothamBold
btn.Text = "ESTILINGUE"
btn.BorderSizePixel = 0
btn.ZIndex = 50
Instance.new("UICorner", btn).CornerRadius = UDim.new(0,14)
-- CHECAR CHÃO
local function OnGround()
return humanoid and humanoid.FloorMaterial ~= Enum.Material.Air
end
-- CRIAR TEIA REAL (BEAM)
local function CreateWebs()
for i = 1,2 do
local att0 = Instance.new("Attachment")
att0.Parent = hrp
local anchor = Instance.new("Part")
anchor.Anchored = true
anchor.CanCollide = false
anchor.Transparency = 1
anchor.Size = Vector3.new(1,1,1)
local side = (i == 1 and -8 or 8)
anchor.CFrame = hrp.CFrame * CFrame.new(side, 8, -25)
anchor.Parent = workspace
local att1 = Instance.new("Attachment", anchor)
local beam = Instance.new("Beam")
beam.Attachment0 = att0
beam.Attachment1 = att1
beam.Width0 = 0.15
beam.Width1 = 0.15
beam.Color = ColorSequence.new(Color3.fromRGB(240,240,240))
beam.FaceCamera = true
beam.Parent = hrp
table.insert(beams, {beam, anchor, att0})
end
end
local function ClearWebs()
for _,v in pairs(beams) do
if v[1] then v[1]:Destroy() end
if v[2] then v[2]:Destroy() end
if v[3] then v[3]:Destroy() end
end
beams = {}
end
-- MOVIMENTO PRA TRÁS (FORÇA)
local function PullBack()
local bv = Instance.new("BodyVelocity")
bv.MaxForce = Vector3.new(1e6,0,1e6)
bv.Velocity = -hrp.CFrame.LookVector * 35
bv.Parent = hrp
Debris:AddItem(bv, 0.25)
end
-- LANÇAMENTO
local function Launch()
local bv = Instance.new("BodyVelocity")
bv.MaxForce = Vector3.new(1e6,1e6,1e6)
bv.Velocity = hrp.CFrame.LookVector * 130 + Vector3.new(0,45,0)
bv.Parent = hrp
Debris:AddItem(bv, 0.35)
end
-- BOTÃO
btn.MouseButton1Click:Connect(function()
if not hrp or not humanoid then return end
if not OnGround() then return end
if not charging then
charging = true
btn.Text = "LANÇAR"
CreateWebs()
PullBack()
else
charging = false
btn.Text = "ESTILINGUE"
Launch()
ClearWebs()
end
end)



good
I also do scripts with chat gpt