-- 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)