Spider man script i made with grok and chatgpt(updt)
Key RequiredUniversal

Spider man script i made with grok and chatgpt(updt)

Universal ScriptJotaperemaJotaperema 1.8K views 10.8K executesUpdated Jan 1, 2026
Unrated
00
Lua Script•416 lines (10920 chars)
-- 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)

Features & Information

You can swing, climb walls and webzip.

Community Comments (2)

worriedBr4worriedBr4Jan 1, 2026

good

DlldldmdmmdmdnDlldldmdmmdmdnJan 12, 2026

I also do scripts with chat gpt

More Scripts for Universal Scripts