Description

This is a universal script; it contains many diverse functions such as aimbot, ESp. also its an open source script. press the right alt key to show or hide the menu.

Features

  • + Player
  • + Aim
  • + Esp
  • + Chams
  • + Graphics
  • + Main
  • + Settings

Supported Executors

Xeno

Script

Add Xeno Scripts as a preferred source
--[[ Script Glebasa V2 (Xeno) - Right Alt = show/hide menu ]]
local Pl,UIS,RS,Li,TP,HS=game:GetService("Players"),game:GetService("UserInputService"),game:GetService("RunService"),game:GetService("Lighting"),game:GetService("TeleportService"),game:GetService("HttpService")
local LP=Pl.LocalPlayer
local Cam=workspace.CurrentCamera
local mouse=LP:GetMouse()
if getgenv and getgenv().__GV2 then pcall(getgenv().__GV2) end
local c3=Color3.fromRGB
local W=c3(255,255,255)
local conns,toggles,draws,refresh,cards={},{},{},{},{}
local run=true
local function on(s,f) conns[#conns+1]=s:Connect(f) end
local function char() return LP.Character end
local function hum() local c=LP.Character return c and c:FindFirstChildOfClass("Humanoid") end
local function hrp() local c=LP.Character return c and c:FindFirstChild("HumanoidRootPart") end
local function mk(cl,p,par) local o=Instance.new(cl) for k,v in pairs(p or {}) do o[k]=v end o.Parent=par return o end
local function rnd(o,r) mk("UICorner",{CornerRadius=UDim.new(0,r or 8)},o) return o end
local function ptr(i) return i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch end
local function mount(g)
	for _,f in ipairs{function() return gethui and gethui() end,function() return game:GetService("CoreGui") end,function() return LP:WaitForChild("PlayerGui",5) end} do
		local ok,p=pcall(f)
		if ok and p and pcall(function() g.Parent=p end) and g.Parent==p then return end
	end
end

-- ===== State =====
local S={
	speed=false,speedVal=50,spin=false,spinVal=600,gravity=false,gravVal=50,jump=false,jumpVal=100,
	fly=false,flyVal=60,flyBtns=false,infJump=false,noclip=false,autoHeal=false,antiRagdoll=false,noFall=false,bhop=false,
	aim=false,aimSpeed=30,aimKey="Right mouse",aimPart="Head",aimMode="Closest to cursor",aimTeam=true,aimWall=true,aimMax=1000,
	aimPred=false,aimPredVal=30,aimSticky=false,aimFriends=false,aimHit=100,aimJitter=0,aimShowFov=true,aimFov=150,colFov=W,
	aimLine=false,colAimLine=c3(255,60,60),trigger=false,trigDelay=50,
	esp=false,espMax=2000,espBox=true,colBox=W,espSkeleton=false,colSkel=W,espTracers=false,colTracer=W,espDist=true,colDist=W,
	espName=true,colName=W,espLook=false,espHealth=false,espTool=false,colTool=W,espTeamCol=false,espArrows=false,colArrow=W,
	espNpc=false,colNpc=c3(255,150,40),espItem=false,colItem=c3(255,230,60),radar=false,radarSize=130,radarRange=300,
	chams=false,chamsFill=c3(255,60,60),chamsFillT=50,chamsOutline=W,chamsOutT=0,chamsWalls=true,chamsRainbow=false,chamsRainSpeed=5,
	chamsSelf=false,chamsNeon=false,chamsNeonCol=c3(60,230,255),
	antiAfk=true,clickTP=false,autoRejoin=false,sprint=false,sprintVal=80,antiVoid=false,antiFling=false,invis=false,invisVal=100,
	autoClick=false,clickCps=10,clickDel=false,fpsCap=false,fpsCapVal=144,fov=false,fovVal=100,zoom=false,zoomVal=300,
	fullbright=false,fbBright=2,timeOn=false,timeVal=14,ambient=false,ambCol=W,noFog=false,noShadows=false,noFx=false,
	satOn=false,satVal=0,conOn=false,conVal=0,ambRainbow=false,expOn=false,expVal=0,tintOn=false,tintCol=c3(255,150,40),
	fogOn=false,fogVal=300,fogCol=W,bloomOn=false,bloomVal=30,sunOn=false,sunVal=30,blurOn=false,blurVal=10,
	zoomHold=false,zoomHoldFov=25,potato=false,fpsBoost=false,crossOn=false,crossStyle="Cross",crossSize=12,colCross=c3(70,255,110),
	menuAlpha=20,theme="Gray",menuKey="RightAlt",keyFly="None",keyNoclip="None",keySpeed="None",keySpin="None",keyAim="None",keyEsp="None",
}

-- ===== Originals / helpers =====
local OG,OF,OZ=workspace.Gravity,Cam.FieldOfView,LP.CameraMaxZoomDistance
local LO={} for _,k in ipairs{"Brightness","ClockTime","FogEnd","GlobalShadows","Ambient","OutdoorAmbient","ExposureCompensation","FogStart","FogColor"} do LO[k]=Li[k] end
local function restoreLight() for k,v in pairs(LO) do pcall(function() Li[k]=v end) end end
local cc=mk("ColorCorrectionEffect",{Enabled=false,Name="GV2CC"},Li)
local bloom=mk("BloomEffect",{Enabled=false,Name="GV2Bloom"},Li)
local sun=mk("SunRaysEffect",{Enabled=false,Name="GV2Sun"},Li)
local blur=mk("BlurEffect",{Enabled=false,Size=0,Name="GV2Blur"},Li)
local fxo={}
local function noFx(v)
	if v then
		for _,e in ipairs(Li:GetDescendants()) do
			if (e:IsA("BlurEffect") or e:IsA("BloomEffect") or e:IsA("SunRaysEffect") or e:IsA("DepthOfFieldEffect")) and e.Name:sub(1,3)~="GV2" then
				if fxo[e]==nil then fxo[e]=e.Enabled end
				e.Enabled=false
			end
		end
	else
		for e,o in pairs(fxo) do pcall(function() e.Enabled=o end) end
		fxo={}
	end
end
local oq,od
local function fpsBoost(v)
	if v then
		pcall(function() oq=settings().Rendering.QualityLevel settings().Rendering.QualityLevel=Enum.QualityLevel.Level01 end)
		pcall(function() od=workspace.Terrain.Decoration workspace.Terrain.Decoration=false end)
		noFx(true)
	else
		pcall(function() if oq then settings().Rendering.QualityLevel=oq end end)
		pcall(function() if od~=nil then workspace.Terrain.Decoration=od end end)
		noFx(S.noFx)
	end
end
local potO={}
local function potato(v)
	if v then
		task.spawn(function()
			local n=0
			for _,d in ipairs(workspace:GetDescendants()) do
				if not S.potato then break end
				if d:IsA("BasePart") then
					local m=d:FindFirstAncestorOfClass("Model")
					if not potO[d] and not(m and m:FindFirstChildOfClass("Humanoid")) then potO[d]={d.Material} d.Material=Enum.Material.SmoothPlastic end
				elseif (d:IsA("Decal") or d:IsA("Texture")) and not potO[d] then
					potO[d]={d.Transparency} d.Transparency=1
				end
				n+=1 if n%1500==0 then task.wait() end
			end
		end)
	else
		for o,x in pairs(potO) do
			if o.Parent then pcall(function() if o:IsA("BasePart") then o.Material=x[1] else o.Transparency=x[1] end end) end
		end
		potO={}
	end
end
local function ragdoll(en)
	local h=hum()
	if h then pcall(function() h:SetStateEnabled(Enum.HumanoidStateType.Ragdoll,en) h:SetStateEnabled(Enum.HumanoidStateType.FallingDown,en) end) end
end
local sel,specOn,specB
local function stopSpec() specOn=false local h=hum() if h then Cam.CameraSubject=h end if specB then specB.Text="Spectate" end end
local function tpSel()
	local r,t=hrp(),sel and sel.Character and sel.Character:FindFirstChild("HumanoidRootPart")
	if r and t then r.CFrame=t.CFrame*CFrame.new(0,0,3) end
end

local saved
local function respawnHere()
	local r=hrp() if not r then return end
	local cf,conn=r.CFrame
	conn=LP.CharacterAdded:Connect(function(c)
		conn:Disconnect()
		local hr=c:WaitForChild("HumanoidRootPart",5)
		if hr then task.wait(.2) hr.CFrame=cf end
	end)
	local h=hum() if h then h.Health=0 end
end

-- ===== Fly =====
local fbv,fbg,flyUp,flyDn
local function flyOff()
	if fbv then fbv:Destroy() fbv=nil end
	if fbg then fbg:Destroy() fbg=nil end
	local h=hum() if h then h.PlatformStand=false end
end
local function flyOn()
	local r,h=hrp(),hum()
	if not(r and h) then return end
	flyOff()
	fbv=mk("BodyVelocity",{MaxForce=Vector3.one*1e9,Velocity=Vector3.zero},r)
	fbg=mk("BodyGyro",{MaxTorque=Vector3.one*1e9,P=9e4},r)
	h.PlatformStand=true
end
on(RS.RenderStepped,function()
	if not(S.fly and fbv and hrp()) then return end
	local d,l,rt=Vector3.zero,Cam.CFrame.LookVector,Cam.CFrame.RightVector
	local function k(c) return UIS:IsKeyDown(c) end
	if k(Enum.KeyCode.W) then d+=l end
	if k(Enum.KeyCode.S) then d-=l end
	if k(Enum.KeyCode.D) then d+=rt end
	if k(Enum.KeyCode.A) then d-=rt end
	if k(Enum.KeyCode.Space) or flyUp then d+=Vector3.yAxis end
	if k(Enum.KeyCode.LeftControl) or flyDn then d-=Vector3.yAxis end
	local h=hum()
	if h and d.Magnitude==0 and h.MoveDirection.Magnitude>0 then
		local rel=Cam.CFrame:VectorToObjectSpace(h.MoveDirection)
		d=l*-rel.Z+rt*rel.X
	end
	fbv.Velocity=d.Magnitude>0 and d.Unit*S.flyVal or Vector3.zero
	fbg.CFrame=Cam.CFrame
end)
on(LP.CharacterAdded,function() task.wait(.5) if S.fly then flyOn() end end)

-- ===== Main loop (movement, survival, world) =====
local wasZ,wasSp,lastSafe,clickT,capApplied=false,false,nil,0,nil
local rp=RaycastParams.new() rp.FilterType=Enum.RaycastFilterType.Exclude
local neonO,neonT={},0
local function neonRestore() for p,o in pairs(neonO) do if p.Parent then pcall(function() p.Material=o[1] p.Color=o[2] end) end end neonO={} end
local invO={}
local function invisRestore() for pt,v in pairs(invO) do if pt.Parent then pt.Transparency=v end end invO={} end
on(RS.Heartbeat,function(dt)
	local h,r=hum(),hrp()
	if h then
		if S.speed then h.WalkSpeed=S.speedVal end
		if S.sprint and UIS:IsKeyDown(Enum.KeyCode.LeftShift) then h.WalkSpeed=S.sprintVal wasSp=true
		elseif wasSp then wasSp=false if not S.speed then h.WalkSpeed=16 end end
		if S.jump then h.UseJumpPower=true h.JumpPower=S.jumpVal end
		if S.autoHeal and h.Health>0 then h.Health=h.MaxHealth end
		if S.antiRagdoll then
			ragdoll(false)
			local st=h:GetState()
			if st==Enum.HumanoidStateType.Ragdoll or st==Enum.HumanoidStateType.FallingDown then h:ChangeState(Enum.HumanoidStateType.GettingUp) end
		end
		if S.bhop and UIS:IsKeyDown(Enum.KeyCode.Space) and h.FloorMaterial~=Enum.Material.Air then h:ChangeState(Enum.HumanoidStateType.Jumping) end
	end
	if r then
		if h and h.FloorMaterial~=Enum.Material.Air then lastSafe=r.CFrame end
		if S.antiVoid and lastSafe and r.Position.Y<workspace.FallenPartsDestroyHeight+80 then
			r.CFrame=lastSafe r.AssemblyLinearVelocity=Vector3.zero
		end
		if S.spin then r.CFrame=r.CFrame*CFrame.Angles(0,math.rad(S.spinVal)*dt,0) end
		if S.noFall and not S.fly and r.AssemblyLinearVelocity.Y<-60 then
			rp.FilterDescendantsInstances={char()}
			if workspace:Raycast(r.Position,Vector3.new(0,-14,0),rp) then
				local v=r.AssemblyLinearVelocity r.AssemblyLinearVelocity=Vector3.new(v.X,0,v.Z)
			end
		end
	end
	if S.gravity then workspace.Gravity=S.gravVal end
	if S.zoomHold and UIS:IsKeyDown(Enum.KeyCode.Z) then Cam.FieldOfView=S.zoomHoldFov wasZ=true
	elseif S.fov then Cam.FieldOfView=S.fovVal wasZ=false
	elseif wasZ then Cam.FieldOfView=OF wasZ=false end
	if S.zoom then LP.CameraMaxZoomDistance=S.zoomVal end
	if S.fullbright then Li.Brightness=S.fbBright Li.Ambient=W Li.OutdoorAmbient=W Li.GlobalShadows=false end
	if S.expOn then Li.ExposureCompensation=S.expVal/10 end
	if S.fogOn then Li.FogStart=0 Li.FogEnd=S.fogVal Li.FogColor=S.fogCol end
	if S.noFog then Li.FogEnd=1e6 end
	if S.ambient then Li.Ambient=S.ambCol Li.OutdoorAmbient=S.ambCol end
	if S.ambRainbow then local rc=Color3.fromHSV(os.clock()*.2%1,.6,1) Li.Ambient=rc Li.OutdoorAmbient=rc end
	if S.noShadows or S.fpsBoost then Li.GlobalShadows=false end
	if S.timeOn then Li.ClockTime=S.timeVal end
	cc.Saturation=S.satOn and S.satVal/100 or 0
	cc.Contrast=S.conOn and S.conVal/100 or 0
	cc.TintColor=S.tintOn and S.tintCol or W
	cc.Enabled=S.satOn or S.conOn or S.tintOn
	bloom.Enabled=S.bloomOn bloom.Intensity=S.bloomVal/25
	sun.Enabled=S.sunOn sun.Intensity=S.sunVal/100
	blur.Enabled=S.blurOn blur.Size=S.blurVal
	if specOn and sel and sel.Character then
		local th=sel.Character:FindFirstChildOfClass("Humanoid")
		if th and Cam.CameraSubject~=th then Cam.CameraSubject=th end
	end
	clickT+=dt
	if S.autoClick and mouse1click and clickT>=1/S.clickCps then clickT=0 pcall(mouse1click) end
	if S.fpsCap and setfpscap and capApplied~=S.fpsCapVal then capApplied=S.fpsCapVal pcall(setfpscap,S.fpsCapVal) end
	neonT+=dt
	if neonT>.25 then
		neonT=0
		if S.invis and char() then
			for _,pt in ipairs(char():GetDescendants()) do
				if (pt:IsA("BasePart") and pt.Name~="HumanoidRootPart") or pt:IsA("Decal") then
					if invO[pt]==nil then invO[pt]=pt.Transparency end
					pt.Transparency=S.invisVal/100
				end
			end
		end
		if S.chamsNeon then
			for _,p in ipairs(Pl:GetPlayers()) do
				if p~=LP and p.Character then
					for _,pt in ipairs(p.Character:GetDescendants()) do
						if pt:IsA("BasePart") and pt.Name~="HumanoidRootPart" then
							if not neonO[pt] then neonO[pt]={pt.Material,pt.Color} end
							pt.Material=Enum.Material.Neon pt.Color=S.chamsNeonCol
						end
					end
				end
			end
		end
	end
end)
on(RS.Stepped,function()
	if S.noclip and char() then for _,p in ipairs(char():GetDescendants()) do if p:IsA("BasePart") then p.CanCollide=false end end end
end)
on(UIS.JumpRequest,function() local h=hum() if S.infJump and h then h:ChangeState(Enum.HumanoidStateType.Jumping) end end)
on(LP.Idled,function() if S.antiAfk then local v=game:GetService("VirtualUser") v:CaptureController() v:ClickButton2(Vector2.new()) end end)
on(mouse.Button1Down,function()
	if S.clickTP and UIS:IsKeyDown(Enum.KeyCode.LeftControl) and mouse.Hit and hrp() then hrp().CFrame=CFrame.new(mouse.Hit.Position+Vector3.new(0,3,0)) end
end)

on(RS.Stepped,function()
	if not S.antiFling then return end
	for _,pl in ipairs(Pl:GetPlayers()) do
		if pl~=LP and pl.Character then
			for _,pt in ipairs(pl.Character:GetDescendants()) do if pt:IsA("BasePart") then pt.CanCollide=false end end
		end
	end
end)
on(mouse.Button1Down,function()
	local t=mouse.Target
	if S.clickDel and t and UIS:IsKeyDown(Enum.KeyCode.X) and not(char() and t:IsDescendantOf(char())) then pcall(function() t:Destroy() end) end
end)

-- ===== Chams =====
local chl,rb={},0
on(RS.RenderStepped,function(dt)
	rb+=dt*S.chamsRainSpeed*.1
	local rc=Color3.fromHSV(rb%1,1,1)
	for _,p in ipairs(Pl:GetPlayers()) do
		local c=p.Character
		if S.chams and c and (p~=LP or S.chamsSelf) then
			local hl=chl[p]
			if not(hl and hl.Parent and hl.Adornee==c) then
				if hl then hl:Destroy() end
				hl=mk("Highlight",{Name="GV2Cham",Adornee=c},c) chl[p]=hl
			end
			hl.FillColor=S.chamsRainbow and rc or S.chamsFill
			hl.OutlineColor=S.chamsRainbow and rc or S.chamsOutline
			hl.FillTransparency=S.chamsFillT/100
			hl.OutlineTransparency=S.chamsOutT/100
			hl.DepthMode=S.chamsWalls and Enum.HighlightDepthMode.AlwaysOnTop or Enum.HighlightDepthMode.Occluded
		elseif chl[p] then chl[p]:Destroy() chl[p]=nil end
	end
end)

-- ===== ESP (frame based) =====
local eg=mk("ScreenGui",{Name="GV2ESP",ResetOnSpawn=false,IgnoreGuiInset=true,DisplayOrder=5}) mount(eg)
local function line() return mk("Frame",{AnchorPoint=Vector2.new(.5,.5),BorderSizePixel=0,BackgroundColor3=W,Visible=false},eg) end
local function setLine(f,a,b)
	local d=b-a
	f.Size=UDim2.fromOffset(d.Magnitude,1.5) f.Position=UDim2.fromOffset((a.X+b.X)/2,(a.Y+b.Y)/2)
	f.Rotation=math.deg(math.atan2(d.Y,d.X)) f.Visible=true
end
local function txt(ay) return mk("TextLabel",{AnchorPoint=Vector2.new(.5,ay),Size=UDim2.fromOffset(160,14),BackgroundTransparency=1,TextColor3=W,TextStrokeTransparency=0,Font=Enum.Font.GothamBold,TextSize=13,Visible=false},eg) end
local function w2s(p) local v=Cam:WorldToViewportPoint(p) return Vector2.new(v.X,v.Y),v.Z>0 end
local function pcol(p,b) if S.espTeamCol and p.Team then return p.TeamColor.Color end return b end
local R15={{"Head","UpperTorso"},{"UpperTorso","LowerTorso"}}
for _,s in ipairs{"Left","Right"} do
	for _,v in ipairs{{"UpperTorso",s.."UpperArm"},{s.."UpperArm",s.."LowerArm"},{s.."LowerArm",s.."Hand"},{"LowerTorso",s.."UpperLeg"},{s.."UpperLeg",s.."LowerLeg"},{s.."LowerLeg",s.."Foot"}} do R15[#R15+1]=v end
end
local R6={{"Head","Torso"},{"Torso","Left Arm"},{"Torso","Right Arm"},{"Torso","Left Leg"},{"Torso","Right Leg"}}
local esp={}
local function mkEsp(p)
	if p==LP or esp[p] then return end
	local a,o={},{}
	local function r(i) a[#a+1]=i return i end
	o.box=r(mk("Frame",{BackgroundTransparency=1,BorderSizePixel=0,Visible=false},eg))
	o.st=mk("UIStroke",{Thickness=1.5},o.box)
	o.name=r(txt(1)) o.dist=r(txt(0)) o.tool=r(txt(0))
	o.hp=r(mk("Frame",{BackgroundColor3=Color3.new(0,0,0),BorderSizePixel=0,Visible=false},eg))
	o.hpf=mk("Frame",{AnchorPoint=Vector2.new(0,1),Position=UDim2.new(0,0,1,0),BorderSizePixel=0},o.hp)
	o.tr=r(line()) o.lk=r(line())
	o.bones={} for i=1,14 do o.bones[i]=r(line()) end
	o.ar=r(txt(.5)) o.ar.Text=">" o.ar.TextSize=26 o.ar.Size=UDim2.fromOffset(30,30)
	o.all=a esp[p]=o
end
local function hide(o) for _,g in ipairs(o.all) do g.Visible=false end end
local function rmEsp(p) local o=esp[p] if o then for _,g in ipairs(o.all) do g:Destroy() end esp[p]=nil end end
local function upEsp(p,o)
	local c=p.Character
	local root,head,h=c and c:FindFirstChild("HumanoidRootPart"),c and c:FindFirstChild("Head"),c and c:FindFirstChildOfClass("Humanoid")
	if not(S.esp and root and head and h and h.Health>0) then return hide(o) end
	local dist=(Cam.CFrame.Position-root.Position).Magnitude
	if dist>S.espMax then return hide(o) end
	local top,onT=w2s(head.Position+Vector3.new(0,.7,0))
	local bot,onB=w2s(root.Position-Vector3.new(0,3.2,0))
	if not(onT and onB) then
		hide(o)
		if S.espArrows then
			local rel=Cam.CFrame:PointToObjectSpace(root.Position)
			local d=Vector2.new(rel.X,-rel.Y) if d.Magnitude<.01 then d=Vector2.new(0,1) end
			local vs=Cam.ViewportSize
			local pos=vs/2+d.Unit*(math.min(vs.X,vs.Y)/2-50)
			o.ar.Position=UDim2.fromOffset(pos.X,pos.Y) o.ar.Rotation=math.deg(math.atan2(d.Y,d.X))
			o.ar.TextColor3=pcol(p,S.colArrow) o.ar.Visible=true
		end
		return
	end
	o.ar.Visible=false
	local ht=math.abs(bot.Y-top.Y) local wd=ht*.55 local cx=(top.X+bot.X)/2
	o.st.Color=pcol(p,S.colBox)
	o.box.Visible=S.espBox
	if S.espBox then o.box.Size=UDim2.fromOffset(wd,ht) o.box.Position=UDim2.fromOffset(cx-wd/2,top.Y) end
	o.hp.Visible=S.espHealth
	if S.espHealth then
		local f=math.clamp(h.Health/math.max(h.MaxHealth,1),0,1)
		o.hp.Size=UDim2.fromOffset(4,ht) o.hp.Position=UDim2.fromOffset(cx-wd/2-7,top.Y)
		o.hpf.Size=UDim2.new(1,0,f,0) o.hpf.BackgroundColor3=Color3.fromHSV(f*.33,1,1)
	end
	o.name.Visible=S.espName
	if S.espName then o.name.Text=p.DisplayName o.name.TextColor3=pcol(p,S.colName) o.name.Position=UDim2.fromOffset(cx,top.Y-2) end
	o.dist.Visible=S.espDist
	if S.espDist then o.dist.Text=math.floor(dist).." studs" o.dist.TextColor3=pcol(p,S.colDist) o.dist.Position=UDim2.fromOffset(cx,bot.Y+2) end
	local tl=S.espTool and c:FindFirstChildOfClass("Tool")
	o.tool.Visible=tl and true or false
	if tl then o.tool.Text=tl.Name o.tool.TextColor3=S.colTool o.tool.Position=UDim2.fromOffset(cx,bot.Y+(S.espDist and 16 or 2)) end
	if S.espTracers then
		local vs=Cam.ViewportSize o.tr.BackgroundColor3=pcol(p,S.colTracer)
		setLine(o.tr,Vector2.new(vs.X/2,vs.Y),Vector2.new(cx,bot.Y))
	else o.tr.Visible=false end
	if S.espLook then
		local mh=char() and char():FindFirstChild("Head")
		local tm=(mh and mh.Position or Cam.CFrame.Position)-head.Position
		local lk=tm.Magnitude>0 and head.CFrame.LookVector:Dot(tm.Unit)>.96
		o.lk.BackgroundColor3=lk and c3(255,40,40) or c3(255,140,0)
		local a,oa=w2s(head.Position) local b,ob=w2s(head.Position+head.CFrame.LookVector*10)
		if oa and ob then setLine(o.lk,a,b) else o.lk.Visible=false end
	else o.lk.Visible=false end
	local prs=c:FindFirstChild("UpperTorso") and R15 or R6
	for i,l in ipairs(o.bones) do
		local pr=S.espSkeleton and prs[i]
		local pa,pb=pr and c:FindFirstChild(pr[1]),pr and c:FindFirstChild(pr[2])
		if pa and pb then
			local a,oa=w2s(pa.Position) local b,ob=w2s(pb.Position)
			if oa and ob then l.BackgroundColor3=pcol(p,S.colSkel) setLine(l,a,b) else l.Visible=false end
		else l.Visible=false end
	end
end
for _,p in ipairs(Pl:GetPlayers()) do mkEsp(p) end
on(Pl.PlayerAdded,mkEsp)
on(RS.RenderStepped,function() for p,o in pairs(esp) do upEsp(p,o) end end)

-- ===== NPC / item ESP =====
local wl,wlb={},{}
task.spawn(function()
	while run do
		pcall(function()
			local l={}
			if S.espNpc or S.espItem then
				for _,d in ipairs(workspace:GetDescendants()) do
					if #l>=80 then break end
					if S.espNpc and d:IsA("Humanoid") then
						local m=d.Parent
						if m and d.Health>0 and not Pl:GetPlayerFromCharacter(m) then
							local r=m:FindFirstChild("HumanoidRootPart") or m:FindFirstChild("Torso") or m:FindFirstChild("Head")
							if r then l[#l+1]={r,m.Name,true} end
						end
					elseif S.espItem and d:IsA("Tool") then
						local pa=d.Parent
						if pa and not pa:IsA("Backpack") and not pa:FindFirstChildOfClass("Humanoid") then
							local hd=d:FindFirstChild("Handle") or d:FindFirstChildWhichIsA("BasePart")
							if hd then l[#l+1]={hd,d.Name,false} end
						end
					end
				end
			end
			wl=l
		end)
		task.wait(3)
	end
end)
on(RS.RenderStepped,function()
	local n=0
	for _,e in ipairs(wl) do
		if e[1] and e[1].Parent then
			local sp,os=w2s(e[1].Position)
			local d=(Cam.CFrame.Position-e[1].Position).Magnitude
			if os and d<=S.espMax then
				n+=1
				local lb=wlb[n] or txt(.5) wlb[n]=lb
				lb.Text=e[2].." ["..math.floor(d).."]" lb.TextColor3=e[3] and S.colNpc or S.colItem
				lb.Position=UDim2.fromOffset(sp.X,sp.Y) lb.Visible=true
			end
		end
	end
	for i=n+1,#wlb do wlb[i].Visible=false end
end)

-- ===== Aim =====
local fc=rnd(mk("Frame",{AnchorPoint=Vector2.new(.5,.5),BackgroundTransparency=1,Visible=false},eg),999)
local fcs=mk("UIStroke",{Thickness=1.5},fc)
local aimL=line()
local rayP=RaycastParams.new() rayP.FilterType=Enum.RaycastFilterType.Exclude
local frc={}
local function skip(p)
	if S.aimTeam and LP.Team and p.Team==LP.Team then return true end
	if S.aimFriends then
		if frc[p]==nil then local ok,r=pcall(function() return LP:IsFriendsWith(p.UserId) end) frc[p]=(ok and r) and true or false end
		return frc[p]
	end
	return false
end
local function partOf(c)
	if S.aimPart=="Head" then return c:FindFirstChild("Head") end
	return c:FindFirstChild("UpperTorso") or c:FindFirstChild("Torso") or c:FindFirstChild("HumanoidRootPart")
end
local function seen(pt,c)
	rayP.FilterDescendantsInstances={char() or workspace.Terrain}
	local o=Cam.CFrame.Position
	local r=workspace:Raycast(o,pt.Position-o,rayP)
	return r==nil or r.Instance:IsDescendantOf(c)
end
local function eval(p,m)
	local c=p.Character
	if p==LP or not c or skip(p) then return end
	local h,pt=c:FindFirstChildOfClass("Humanoid"),partOf(c)
	if not(h and h.Health>0 and pt) then return end
	local sp,os=w2s(pt.Position)
	local d3=(Cam.CFrame.Position-pt.Position).Magnitude
	if not os or d3>S.aimMax then return end
	local d2=(sp-m).Magnitude
	if d2>S.aimFov or (S.aimWall and not seen(pt,c)) then return end
	return pt,S.aimMode=="Closest distance" and d3 or d2
end
local sticky
local function target(m,lock)
	if lock and S.aimSticky and sticky then
		local pt=eval(sticky,m)
		if pt then return sticky,pt end
		sticky=nil
	end
	local bp,bpt,bs
	for _,p in ipairs(Pl:GetPlayers()) do
		local pt,sc=eval(p,m)
		if pt and (not bs or sc<bs) then bp,bpt,bs=p,pt,sc end
	end
	if lock and S.aimSticky then sticky=bp end
	return bp,bpt
end
local function aimActive()
	if S.aimKey=="Always" then return true end
	return UIS:IsMouseButtonPressed(S.aimKey=="Left mouse" and Enum.UserInputType.MouseButton1 or Enum.UserInputType.MouseButton2)
end
local off,nextR=Vector3.zero,0
pcall(function() RS:UnbindFromRenderStep("GV2Aim") end)
RS:BindToRenderStep("GV2Aim",Enum.RenderPriority.Camera.Value+1,function()
	local m=UIS:GetMouseLocation()
	fc.Visible=S.aim and S.aimShowFov
	if fc.Visible then fc.Size=UDim2.fromOffset(S.aimFov*2,S.aimFov*2) fc.Position=UDim2.fromOffset(m.X,m.Y) fcs.Color=S.colFov end
	aimL.Visible=false
	if not S.aim then sticky=nil return end
	local act=aimActive()
	if not act then sticky=nil end
	local p,pt=target(m,act)
	if not p then return end
	local pos=pt.Position
	if S.aimPred then pos+=pt.AssemblyLinearVelocity*(S.aimPredVal/1000) end
	if S.aimLine then
		local tp,o=w2s(pos)
		if o then aimL.BackgroundColor3=S.colAimLine setLine(aimL,m,tp) end
	end
	if act then
		if tick()>nextR then
			nextR=tick()+.25
			local mag=math.random(1,100)>S.aimHit and 4 or S.aimJitter/10
			local v=Vector3.new(math.random()-.5,math.random()-.5,math.random()-.5)
			off=v.Magnitude>0 and v.Unit*mag or Vector3.zero
		end
		Cam.CFrame=Cam.CFrame:Lerp(CFrame.lookAt(Cam.CFrame.Position,pos+off),math.clamp(S.aimSpeed/100,.01,1))
	end
end)
local lastShot=0
on(RS.Heartbeat,function()
	if not(S.trigger and mouse1click) then return end
	local t=mouse.Target
	local m=t and t:FindFirstAncestorOfClass("Model")
	local p=m and Pl:GetPlayerFromCharacter(m)
	if not p or p==LP or skip(p) then return end
	local h=m:FindFirstChildOfClass("Humanoid")
	if h and h.Health>0 and (tick()-lastShot)*1000>=S.trigDelay then lastShot=tick() pcall(mouse1click) end
end)

-- ===== Server =====
local function rejoin()
	pcall(function()
		if #Pl:GetPlayers()<=1 then TP:Teleport(game.PlaceId,LP) else TP:TeleportToPlaceInstance(game.PlaceId,game.JobId,LP) end
	end)
end
local function hop()
	local ok=pcall(function()
		local d=HS:JSONDecode(game:HttpGet("https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?sortOrder=Asc&limit=100"))
		local ids={}
		for _,sv in ipairs(d.data) do if sv.id~=game.JobId and sv.playing<sv.maxPlayers then ids[#ids+1]=sv.id end end
		if #ids==0 then error("none") end
		TP:TeleportToPlaceInstance(game.PlaceId,ids[math.random(1,#ids)],LP)
	end)
	if not ok then pcall(function() TP:Teleport(game.PlaceId,LP) end) end
end

pcall(function()
	on(game:GetService("GuiService").ErrorMessageChanged,function() if S.autoRejoin then task.wait(2) rejoin() end end)
end)

-- ===== GUI =====
local C={bg=c3(38,38,42),bar=c3(8,8,8),card=c3(14,14,16),off=c3(85,85,90),dim=c3(185,185,190)}
local PAL={c3(255,255,255),c3(255,60,60),c3(255,150,40),c3(255,230,60),c3(70,255,110),c3(60,230,255),c3(70,120,255),c3(170,90,255),c3(255,110,200)}
local GB=Enum.Font.GothamBold
local function lab(par,t,pos,size,col,sz,font)
	return mk("TextLabel",{Text=t,Position=pos,Size=size,BackgroundTransparency=1,TextXAlignment=Enum.TextXAlignment.Left,TextColor3=col,Font=font or Enum.Font.Gotham,TextSize=sz},par)
end
local gui=mk("ScreenGui",{Name="GV2",ResetOnSpawn=false,ZIndexBehavior=Enum.ZIndexBehavior.Sibling,DisplayOrder=10}) mount(gui)
local WW,HH=420,470
local main=rnd(mk("Frame",{Size=UDim2.fromOffset(WW,HH),Position=UDim2.new(.5,-WW/2,.5,-HH/2),BackgroundColor3=C.bg,BackgroundTransparency=.2,BorderSizePixel=0,ClipsDescendants=true},gui),12)
mk("UIStroke",{Color=W,Transparency=.75,Thickness=1.5},main)
local bar=mk("Frame",{Size=UDim2.new(1,0,0,38),BackgroundColor3=C.bar,BackgroundTransparency=.1,BorderSizePixel=0},main)
lab(bar,"Script Glebasa V2",UDim2.new(0,14,0,0),UDim2.new(1,-90,1,0),W,14,GB)
local function bb(t,x) return rnd(mk("TextButton",{Size=UDim2.fromOffset(26,26),Position=UDim2.new(1,x,.5,-13),BackgroundColor3=C.off,Text=t,TextColor3=W,Font=GB,TextSize=14},bar),6) end
local minB,clsB=bb("-",-62),bb("X",-32)

local ICONS={
	Player={{"f",6,1,6,6,99},{"f",3,9,12,8,5}},
	Aim={{"r",3,3,12,12,99},{"f",8.25,0,1.5,18},{"f",0,8.25,18,1.5}},
	Esp={{"r",1,3.5,16,11,99},{"f",6,6,6,6,99}},
	Chams={{"r",3.5,3.5,11,11,2,45},{"f",6.5,6.5,5,5,1,45}},
	Graphics={{"r",1,2,16,11,2},{"f",7.5,13.5,3,2},{"f",4,15.5,10,1.5}},
	Main={{"f",1,3,16,1.5},{"f",1,8.25,16,1.5},{"f",1,13.5,16,1.5},{"f",10,1.25,5,5,99},{"f",3,6.5,5,5,99},{"f",8,11.75,5,5,99}},
	Settings={{"r",4,4,10,10,99},{"f",8,0,2,3},{"f",8,15,2,3},{"f",0,8,3,2},{"f",15,8,3,2},{"f",7.5,7.5,3,3,99}},
}
local tabBar=mk("Frame",{Position=UDim2.new(0,10,0,46),Size=UDim2.new(1,-20,0,44),BackgroundTransparency=1},main)
mk("UIListLayout",{FillDirection=Enum.FillDirection.Horizontal,Padding=UDim.new(0,6)},tabBar)
local holder=mk("Frame",{Position=UDim2.new(0,0,0,98),Size=UDim2.new(1,0,1,-102),BackgroundTransparency=1},main)
local pages,tabs,curTab={},{},"Player"
local function pick(n)
	curTab=n
	for k,pg in pairs(pages) do
		local a=k==n
		pg.Visible=a
		local t=tabs[k]
		t.b.BackgroundColor3=a and W or C.card
		t.b.BackgroundTransparency=a and 0 or .3
		local col=a and C.bar or C.dim
		t.l.TextColor3=col
		for _,e in ipairs(t.p) do if e.f then e.f.BackgroundColor3=col else e.s.Color=col end end
	end
end
local function addTab(n)
	local b=rnd(mk("TextButton",{Size=UDim2.new(1/7,-6,1,0),BackgroundColor3=C.card,Text="",AutoButtonColor=false},tabBar))
	local ic=mk("Frame",{Size=UDim2.fromOffset(18,18),Position=UDim2.new(.5,-9,0,5),BackgroundTransparency=1},b)
	local ps={}
	for _,s in ipairs(ICONS[n]) do
		local f=mk("Frame",{Position=UDim2.fromOffset(s[2],s[3]),Size=UDim2.fromOffset(s[4],s[5]),BorderSizePixel=0,BackgroundColor3=C.dim,Rotation=s[7] or 0},ic)
		if s[6] then rnd(f,s[6]) end
		if s[1]=="r" then f.BackgroundTransparency=1 ps[#ps+1]={s=mk("UIStroke",{Thickness=1.5,Color=C.dim},f)} else ps[#ps+1]={f=f} end
	end
	local l=lab(b,n,UDim2.new(0,0,1,-17),UDim2.new(1,0,0,14),C.dim,11,GB) l.TextXAlignment=Enum.TextXAlignment.Center
	tabs[n]={b=b,l=l,p=ps}
	local pg=mk("ScrollingFrame",{Size=UDim2.new(1,0,1,0),BackgroundTransparency=1,BorderSizePixel=0,ScrollBarThickness=3,ScrollBarImageColor3=W,CanvasSize=UDim2.new(),AutomaticCanvasSize=Enum.AutomaticSize.Y,Visible=false},holder)
	mk("UIListLayout",{Padding=UDim.new(0,6),HorizontalAlignment=Enum.HorizontalAlignment.Center},pg)
	mk("UIPadding",{PaddingTop=UDim.new(0,2),PaddingBottom=UDim.new(0,10)},pg)
	pages[n]=pg
	b.MouseButton1Click:Connect(function() pick(n) end)
	return pg
end

-- rows
local function row(pg,h) local f=rnd(mk("Frame",{Size=UDim2.new(1,-20,0,h or 34),BackgroundColor3=C.card,BackgroundTransparency=.3},pg)) cards[#cards+1]=f return f end
local function sbtn(par,t,size,pos) return rnd(mk("TextButton",{Size=size,Position=pos,BackgroundColor3=C.off,TextColor3=W,Font=GB,TextSize=12,Text=t},par),6) end
local function sec(pg,t) lab(pg,t:upper(),UDim2.new(),UDim2.new(1,-24,0,18),C.dim,11,GB) end
local dragFn
on(UIS.InputChanged,function(i) if dragFn and (i.UserInputType==Enum.UserInputType.MouseMovement or i.UserInputType==Enum.UserInputType.Touch) then dragFn(i.Position.X) end end)
on(UIS.InputEnded,function(i) if ptr(i) then dragFn=nil end end)

-- card = toggle (+ slider) (+ color palette). sl={label,key,min,max}
local function card(pg,name,key,fn,sl,col)
	local y0=34+(sl and 38 or 0)
	local f=row(pg,y0+(col and 36 or 0))
	local b=mk("TextButton",{Size=UDim2.new(1,0,0,34),BackgroundTransparency=1,Text="",AutoButtonColor=false},f)
	lab(b,name,UDim2.new(0,12,0,0),UDim2.new(1,-60,1,0),W,13)
	if key then
		local sw=rnd(mk("Frame",{Size=UDim2.fromOffset(38,20),Position=UDim2.new(1,-48,.5,-10)},b),10)
		local kn=rnd(mk("Frame",{Size=UDim2.fromOffset(16,16)},sw),8)
		local function draw(anim)
			local v=S[key]
			sw.BackgroundColor3=v and W or C.off kn.BackgroundColor3=v and C.bar or W
			local p=v and UDim2.new(1,-18,.5,-8) or UDim2.new(0,2,.5,-8)
			if anim then kn:TweenPosition(p,"Out","Quad",.15,true) else kn.Position=p end
		end
		draw() draws[key]=draw
		toggles[key]=function(v) S[key]=v draw(true) if fn then fn(v) end end
		b.MouseButton1Click:Connect(function() toggles[key](not S[key]) end)
	end
	if sl or col then mk("Frame",{Size=UDim2.new(1,-24,0,1),Position=UDim2.new(0,12,0,34),BackgroundColor3=C.off,BorderSizePixel=0},f) end
	if sl then
		local lb=lab(f,"",UDim2.new(0,12,0,39),UDim2.new(1,-24,0,18),C.dim,12)
		local tr=rnd(mk("Frame",{Size=UDim2.new(1,-24,0,6),Position=UDim2.new(0,12,0,60),BackgroundColor3=C.off,BorderSizePixel=0},f),3)
		local fl=rnd(mk("Frame",{BackgroundColor3=W,BorderSizePixel=0},tr),3)
		local k,mn,mx=sl[2],sl[3],sl[4]
		local function set(v) v=math.clamp(math.floor(v+.5),mn,mx) S[k]=v lb.Text=sl[1]..": "..v fl.Size=UDim2.new((v-mn)/(mx-mn),0,1,0) end
		set(S[k]) refresh[#refresh+1]=function() set(S[k]) end
		local function up(x) set(mn+(mx-mn)*math.clamp((x-tr.AbsolutePosition.X)/tr.AbsoluteSize.X,0,1)) end
		tr.InputBegan:Connect(function(i) if ptr(i) then dragFn=up up(i.Position.X) end end)
	end
	if col then
		local rw=mk("Frame",{Position=UDim2.new(0,12,0,y0+5),Size=UDim2.new(1,-24,0,24),BackgroundTransparency=1},f)
		mk("UIListLayout",{FillDirection=Enum.FillDirection.Horizontal,Padding=UDim.new(0,5)},rw)
		local ss={}
		local function mark() for c,s in pairs(ss) do s.Thickness=S[col]==c and 2 or 0 end end
		for _,c in ipairs(PAL) do
			local sb=rnd(mk("TextButton",{Size=UDim2.fromOffset(24,24),BackgroundColor3=c,Text="",AutoButtonColor=false},rw),12)
			ss[c]=mk("UIStroke",{Color=c3(120,170,255),Thickness=0,ApplyStrokeMode=Enum.ApplyStrokeMode.Border},sb)
			sb.MouseButton1Click:Connect(function() S[col]=c mark() end)
		end
		mark() refresh[#refresh+1]=mark
	end
end
local function choice(pg,n,k,opts)
	local f=row(pg) lab(f,n,UDim2.new(0,12,0,0),UDim2.new(.4,0,1,0),W,13)
	local b=sbtn(f,S[k],UDim2.new(.55,-12,0,24),UDim2.new(.45,0,0,5))
	b.MouseButton1Click:Connect(function() S[k]=opts[(table.find(opts,S[k]) or 0)%#opts+1] b.Text=S[k] end)
	refresh[#refresh+1]=function() b.Text=S[k] end
end
local cap
local function keybind(pg,n,k)
	local f=row(pg) lab(f,n,UDim2.new(0,12,0,0),UDim2.new(.4,0,1,0),W,13)
	local b=sbtn(f,S[k],UDim2.new(.55,-12,0,24),UDim2.new(.45,0,0,5))
	b.MouseButton1Click:Connect(function() cap={k,b} b.Text="press a key..." end)
	refresh[#refresh+1]=function() b.Text=S[k] end
end
local function button(pg,t,fn)
	local b=sbtn(row(pg),t,UDim2.new(1,-16,0,26),UDim2.new(0,8,.5,-13))
	b.MouseButton1Click:Connect(function() fn(b) end)
end
local function pickCard(pg)
	local f=row(pg,74) lab(f,"Player",UDim2.new(0,12,0,0),UDim2.new(.4,0,0,34),W,13)
	local nb=sbtn(f,"none",UDim2.new(.55,-12,0,24),UDim2.new(.45,0,0,5))
	nb.MouseButton1Click:Connect(function()
		local l={} for _,p in ipairs(Pl:GetPlayers()) do if p~=LP then l[#l+1]=p end end
		sel=#l>0 and l[(table.find(l,sel) or 0)%#l+1] or nil
		nb.Text=sel and sel.DisplayName or "none"
	end)
	sbtn(f,"Teleport",UDim2.new(.5,-14,0,26),UDim2.new(0,8,0,40)).MouseButton1Click:Connect(tpSel)
	specB=sbtn(f,"Spectate",UDim2.new(.5,-14,0,26),UDim2.new(.5,6,0,40))
	specB.MouseButton1Click:Connect(function() if specOn then stopSpec() elseif sel then specOn=true specB.Text="Stop spectate" end end)
end

-- theme / alpha / config
local THEMES={Gray={c3(38,38,42),c3(8,8,8),c3(14,14,16)},Black={c3(14,14,16),c3(0,0,0),c3(28,28,32)},Blue={c3(13,20,42),c3(5,7,14),c3(8,11,22)}}
local function applyAlpha()
	local t=S.menuAlpha/100
	main.BackgroundTransparency=t bar.BackgroundTransparency=t*.5
	for _,f in ipairs(cards) do f.BackgroundTransparency=math.clamp(t+.1,0,.95) end
end
local function applyTheme(n)
	local t=THEMES[n] or THEMES.Gray
	C.bg,C.bar,C.card=t[1],t[2],t[3]
	main.BackgroundColor3=C.bg bar.BackgroundColor3=C.bar
	for _,f in ipairs(cards) do f.BackgroundColor3=C.card end
	for _,d in pairs(draws) do d() end
	pick(curTab) applyAlpha()
end
local lastA,lastT=-1,""
on(RS.Heartbeat,function()
	if S.theme~=lastT then lastT=S.theme lastA=S.menuAlpha applyTheme(S.theme)
	elseif S.menuAlpha~=lastA then lastA=S.menuAlpha applyAlpha() end
end)
local CFG="GlebasaV2_config.json"
local function save()
	if not writefile then return "No file API" end
	local t={} for k,v in pairs(S) do t[k]=typeof(v)=="Color3" and {r=v.R,g=v.G,b=v.B} or v end
	return pcall(function() writefile(CFG,HS:JSONEncode(t)) end) and "Saved!" or "Save failed"
end
local function load()
	if not(readfile and isfile) then return "No file API" end
	if not isfile(CFG) then return "No saved config" end
	local ok,d=pcall(function() return HS:JSONDecode(readfile(CFG)) end)
	if not ok or type(d)~="table" then return "Load failed" end
	for k,v in pairs(d) do
		if S[k]~=nil then
			if typeof(S[k])=="Color3" then if type(v)=="table" and v.r then S[k]=Color3.new(v.r,v.g,v.b) end
			elseif type(v)==type(S[k]) then S[k]=v end
		end
	end
	for k,fn in pairs(toggles) do pcall(fn,S[k]) end
	for _,fn in ipairs(refresh) do pcall(fn) end
	return "Loaded!"
end

-- ===== Tabs =====
local p=addTab("Player")
card(p,"Speed","speed",function(v) if not v and hum() then hum().WalkSpeed=16 end end,{"Speed value","speedVal",16,300})
card(p,"Spin","spin",nil,{"Spin speed","spinVal",50,3000})
card(p,"Gravity","gravity",function(v) if not v then workspace.Gravity=OG end end,{"Gravity value","gravVal",0,196})
card(p,"Jump","jump",function(v) if not v and hum() then hum().JumpPower=50 end end,{"Jump value","jumpVal",50,400})
card(p,"Fly (WASD / Space / Ctrl)","fly",function(v) if v then flyOn() else flyOff() end end,{"Fly speed","flyVal",10,300})
card(p,"Fly buttons on screen (mobile)","flyBtns")
card(p,"Infinite Jump","infJump")
card(p,"Noclip","noclip")
card(p,"Invisible (only you see it)","invis",function(v) if not v then invisRestore() end end,{"Transparency %","invisVal",0,100})
sec(p,"Survival")
card(p,"Auto heal","autoHeal")
card(p,"Anti ragdoll","antiRagdoll",function(v) if not v then ragdoll(true) end end)
card(p,"No fall damage","noFall")
card(p,"Bunny hop (hold Space)","bhop")
sec(p,"Players")
pickCard(p)

p=addTab("Aim")
sec(p,"Aimbot")
card(p,"Aimbot","aim",nil,{"Aim speed (100 = instant)","aimSpeed",1,100})
choice(p,"Aim key","aimKey",{"Right mouse","Left mouse","Always"})
choice(p,"Target part","aimPart",{"Head","Torso"})
choice(p,"Target mode","aimMode",{"Closest to cursor","Closest distance"})
sec(p,"Filters")
card(p,"Team check","aimTeam")
card(p,"Wall check (visible only)","aimWall")
card(p,"Max distance",nil,nil,{"Distance","aimMax",50,5000})
card(p,"Prediction (moving targets)","aimPred",nil,{"Prediction strength","aimPredVal",0,100})
card(p,"Sticky target","aimSticky")
card(p,"Ignore friends","aimFriends")
card(p,"Hit chance",nil,nil,{"Hit chance %","aimHit",1,100})
card(p,"Random offset",nil,nil,{"Offset (tenths of a stud)","aimJitter",0,50})
sec(p,"FOV circle")
card(p,"Show FOV circle","aimShowFov",nil,{"Radius","aimFov",20,600},"colFov")
sec(p,"Extras")
card(p,"Target line","aimLine",nil,nil,"colAimLine")
card(p,"Triggerbot (auto click)","trigger",nil,{"Delay (ms)","trigDelay",0,500})

p=addTab("Esp")
card(p,"ESP","esp",nil,{"Max distance","espMax",100,5000})
card(p,"Box","espBox",nil,nil,"colBox")
card(p,"Skeleton","espSkeleton",nil,nil,"colSkel")
card(p,"Lines (tracers)","espTracers",nil,nil,"colTracer")
card(p,"Distance","espDist",nil,nil,"colDist")
card(p,"Nickname","espName",nil,nil,"colName")
card(p,"Look line (orange / red = looking at you)","espLook")
card(p,"Health bar","espHealth")
card(p,"Tool / weapon name","espTool",nil,nil,"colTool")
card(p,"Team colors","espTeamCol")
card(p,"Offscreen arrows","espArrows",nil,nil,"colArrow")
sec(p,"World")
card(p,"NPC ESP","espNpc",nil,nil,"colNpc")
card(p,"Item ESP (tools on the ground)","espItem",nil,nil,"colItem")
sec(p,"Radar")
card(p,"Radar","radar",nil,{"Radar size","radarSize",80,260})
card(p,"Radar range",nil,nil,{"Range (studs)","radarRange",50,1000})

p=addTab("Chams")
sec(p,"Chams")
card(p,"Chams (players)","chams")
card(p,"Fill color",nil,nil,{"Fill transparency %","chamsFillT",0,100},"chamsFill")
card(p,"Outline color",nil,nil,{"Outline transparency %","chamsOutT",0,100},"chamsOutline")
card(p,"See through walls","chamsWalls")
card(p,"Rainbow","chamsRainbow",nil,{"Rainbow speed","chamsRainSpeed",1,30})
card(p,"Self chams (my character)","chamsSelf")
sec(p,"Material")
card(p,"Neon body","chamsNeon",function(v) if not v then neonRestore() end end,nil,"chamsNeonCol")

p=addTab("Graphics")
local function rl(v) if not v then restoreLight() end end
sec(p,"Lighting")
card(p,"Fullbright","fullbright",rl,{"Brightness","fbBright",1,10})
card(p,"Time of day","timeOn",rl,{"Hour (0-24)","timeVal",0,24})
card(p,"Exposure","expOn",rl,{"Exposure (x0.1)","expVal",-30,30})
card(p,"Custom ambient light","ambient",rl,nil,"ambCol")
card(p,"Rainbow ambient","ambRainbow",rl)
card(p,"Color tint","tintOn",nil,nil,"tintCol")
card(p,"Saturation","satOn",nil,{"Saturation (-100 gray, +100 vivid)","satVal",-100,100})
card(p,"Contrast","conOn",nil,{"Contrast","conVal",-100,100})
sec(p,"Fog and shadows")
card(p,"No fog","noFog",rl)
card(p,"Custom fog","fogOn",rl,{"Fog distance","fogVal",20,2000},"fogCol")
card(p,"No shadows","noShadows",rl)
sec(p,"Effects")
card(p,"Bloom (glow)","bloomOn",nil,{"Intensity","bloomVal",0,100})
card(p,"Sun rays","sunOn",nil,{"Intensity","sunVal",0,100})
card(p,"Blur","blurOn",nil,{"Blur size","blurVal",0,40})
card(p,"Disable game effects","noFx",noFx)
sec(p,"Camera")
card(p,"Custom FOV","fov",function(v) if not v then Cam.FieldOfView=OF end end,{"FOV","fovVal",40,120})
card(p,"Zoom (hold Z)","zoomHold",nil,{"Zoom FOV","zoomHoldFov",5,60})
card(p,"Max zoom","zoom",function(v) if not v then LP.CameraMaxZoomDistance=OZ end end,{"Zoom distance","zoomVal",10,2000})
sec(p,"Performance")
card(p,"FPS booster","fpsBoost",fpsBoost)
card(p,"Potato graphics (plain textures)","potato",potato)
sec(p,"HUD")
card(p,"Custom crosshair","crossOn",nil,{"Size","crossSize",4,40},"colCross")
choice(p,"Crosshair style","crossStyle",{"Cross","Dot","Circle","Cross+Dot"})

p=addTab("Main")
sec(p,"General")
card(p,"Anti AFK","antiAfk")
card(p,"Click TP (Ctrl + click)","clickTP")
card(p,"Auto rejoin on disconnect","autoRejoin")
sec(p,"Movement helpers")
card(p,"Sprint (hold Shift)","sprint",nil,{"Sprint speed","sprintVal",16,300})
card(p,"Anti void (back to last safe spot)","antiVoid")
card(p,"Anti fling (no player collisions)","antiFling")
sec(p,"Utility")
card(p,"Auto clicker","autoClick",nil,{"Clicks per second","clickCps",1,30})
card(p,"Click delete (hold X + click)","clickDel")
card(p,"FPS cap","fpsCap",function(v) if not v then capApplied=nil if setfpscap then pcall(setfpscap,60) end end end,{"FPS limit","fpsCapVal",30,360})
sec(p,"Position")
button(p,"Save position",function(b) local r=hrp() if r then saved=r.CFrame b.Text="Saved!" else b.Text="No character" end task.delay(1.5,function() b.Text="Save position" end) end)
button(p,"Teleport to saved position",function(b) local r=hrp() if r and saved then r.CFrame=saved b.Text="Teleported!" else b.Text="Nothing saved" end task.delay(1.5,function() b.Text="Teleport to saved position" end) end)
button(p,"Reset character",function() local h=hum() if h then h.Health=0 end end)
button(p,"Respawn at same spot",respawnHere)
sec(p,"Info")
local info=lab(row(p),"",UDim2.new(0,12,0,0),UDim2.new(1,-24,1,0),C.dim,12)
do
	local t0,ia=os.clock(),1
	on(RS.Heartbeat,function(dt)
		ia+=dt
		if ia>=1 then
			ia=0
			local t=math.floor(os.clock()-t0)
			info.Text="Players: "..#Pl:GetPlayers().."/"..Pl.MaxPlayers.."   Session: "..math.floor(t/60)..":"..string.format("%02d",t%60)
		end
	end)
end
local function copyBtn(t,val)
	button(p,t,function(b)
		local clip=setclipboard or toclipboard
		b.Text=clip and (pcall(clip,tostring(val)) and "Copied!" or "Copy failed") or "No clipboard API"
		task.delay(1.5,function() b.Text=t end)
	end)
end
copyBtn("Copy Place ID",game.PlaceId)
copyBtn("Copy Job ID (server)",game.JobId)
sec(p,"Server")
button(p,"Rejoin",function(b) b.Text="Rejoining..." rejoin() end)
button(p,"Server hop",function(b) b.Text="Searching server..." hop() end)

p=addTab("Settings")
sec(p,"Menu")
card(p,"Menu transparency",nil,nil,{"Transparency %","menuAlpha",0,80})
choice(p,"Theme","theme",{"Gray","Black","Blue"})
keybind(p,"Menu key","menuKey")
sec(p,"Hotkeys (toggle features)")
for _,v in ipairs{{"Fly","keyFly"},{"Noclip","keyNoclip"},{"Speed","keySpeed"},{"Spin","keySpin"},{"Aimbot","keyAim"},{"ESP","keyEsp"}} do keybind(p,v[1],v[2]) end
sec(p,"Config")
button(p,"Save config",function(b) b.Text=save() task.delay(1.5,function() b.Text="Save config" end) end)
button(p,"Load config",function(b) b.Text=load() task.delay(1.5,function() b.Text="Load config" end) end)
pick("Player")

-- ===== Overlays: FPS/ping, fly buttons, crosshair, radar =====
local sg=mk("ScreenGui",{Name="GV2Stats",ResetOnSpawn=false,IgnoreGuiInset=true,DisplayOrder=20}) mount(sg)
local sf=rnd(mk("Frame",{AnchorPoint=Vector2.new(1,0),Position=UDim2.new(1,-10,0,10),Size=UDim2.fromOffset(170,26),BackgroundColor3=C.bar,BackgroundTransparency=.35,BorderSizePixel=0},sg))
mk("UIStroke",{Color=W,Transparency=.8},sf)
local stx=mk("TextLabel",{Size=UDim2.new(1,0,1,0),BackgroundTransparency=1,TextColor3=W,Font=GB,TextSize=12,Text="FPS: -- | Ping: --"},sf)
local function fb(t,y)
	local b=rnd(mk("TextButton",{AnchorPoint=Vector2.new(1,1),Position=UDim2.new(1,-110,1,y),Size=UDim2.fromOffset(64,44),BackgroundColor3=C.bar,BackgroundTransparency=.3,Text=t,TextColor3=W,Font=GB,TextSize=14,Visible=false},sg),10)
	return b
end
local fU,fD=fb("UP",-130),fb("DOWN",-76)
local function hold(b,set)
	b.InputBegan:Connect(function(i) if ptr(i) then set(true) end end)
	b.InputEnded:Connect(function(i) if ptr(i) then set(false) end end)
end
hold(fU,function(v) flyUp=v end) hold(fD,function(v) flyDn=v end)
local function bx() return mk("Frame",{AnchorPoint=Vector2.new(.5,.5),BorderSizePixel=0,Visible=false},sg) end
local ch={bx(),bx(),bx(),bx()} local dot=bx()
local ring=rnd(mk("Frame",{AnchorPoint=Vector2.new(.5,.5),BackgroundTransparency=1,Visible=false},sg),999)
local rst=mk("UIStroke",{Thickness=1.5},ring)
local rad=rnd(mk("Frame",{Position=UDim2.fromOffset(10,90),BackgroundColor3=C.bar,BackgroundTransparency=.4,BorderSizePixel=0,Visible=false},sg),999)
mk("UIStroke",{Color=W,Transparency=.7},rad)
rnd(mk("Frame",{AnchorPoint=Vector2.new(.5,.5),Position=UDim2.fromScale(.5,.5),Size=UDim2.fromOffset(6,6),BackgroundColor3=c3(255,230,60),BorderSizePixel=0},rad),3)
local rd={}
local Stats=game:GetService("Stats")
local acc,fr=0,0
on(RS.RenderStepped,function(dt)
	acc+=dt fr+=1
	if acc>=.5 then
		local ping=0
		pcall(function() ping=math.floor(Stats.Network.ServerStatsItem["Data Ping"]:GetValue()+.5) end)
		stx.Text="FPS: "..math.floor(fr/acc+.5).." | Ping: "..ping.." ms"
		acc,fr=0,0
	end
	local sf2=S.fly and S.flyBtns
	fU.Visible=sf2 fD.Visible=sf2
	if not sf2 then flyUp=false flyDn=false end
	local st,sz,cl=S.crossStyle,S.crossSize,S.colCross
	local ln=S.crossOn and (st=="Cross" or st=="Cross+Dot")
	local g=3+sz/2
	local ps={{-g,0,sz,2},{g,0,sz,2},{0,-g,2,sz},{0,g,2,sz}}
	for i,f in ipairs(ch) do
		local q=ps[i]
		f.Visible=ln f.BackgroundColor3=cl f.Position=UDim2.new(.5,q[1],.5,q[2]) f.Size=UDim2.fromOffset(q[3],q[4])
	end
	dot.Visible=S.crossOn and (st=="Dot" or st=="Cross+Dot" or st=="Circle")
	dot.BackgroundColor3=cl dot.Size=UDim2.fromOffset(4,4) dot.Position=UDim2.fromScale(.5,.5)
	ring.Visible=S.crossOn and st=="Circle"
	ring.Size=UDim2.fromOffset(sz*2,sz*2) ring.Position=UDim2.fromScale(.5,.5) rst.Color=cl
	rad.Visible=S.radar
	if not S.radar then return end
	rad.Size=UDim2.fromOffset(S.radarSize,S.radarSize)
	local R=S.radarSize/2
	for _,pl in ipairs(Pl:GetPlayers()) do
		if pl~=LP then
			local d=rd[pl]
			if not d then d=rnd(mk("Frame",{AnchorPoint=Vector2.new(.5,.5),Size=UDim2.fromOffset(6,6),BorderSizePixel=0},rad),3) rd[pl]=d end
			local c=pl.Character
			local root,h=c and c:FindFirstChild("HumanoidRootPart"),c and c:FindFirstChildOfClass("Humanoid")
			if root and h and h.Health>0 then
				local rel=Cam.CFrame:PointToObjectSpace(root.Position)
				local v=Vector2.new(rel.X,rel.Z)/S.radarRange*R
				if v.Magnitude>R-4 then v=v.Unit*(R-4) end
				d.Position=UDim2.fromOffset(R+v.X,R+v.Y) d.BackgroundColor3=pcol(pl,c3(255,60,60)) d.Visible=true
			else d.Visible=false end
		end
	end
end)
on(Pl.PlayerRemoving,function(pl)
	if chl[pl] then chl[pl]:Destroy() chl[pl]=nil end
	if rd[pl] then rd[pl]:Destroy() rd[pl]=nil end
	if sel==pl then if specOn then stopSpec() end sel=nil end
	rmEsp(pl)
end)

-- ===== Drag / minimize / close / hotkeys =====
do
	local dg,sp,si
	bar.InputBegan:Connect(function(i) if ptr(i) then dg,si,sp=true,i.Position,main.Position end end)
	on(UIS.InputChanged,function(i)
		if dg and (i.UserInputType==Enum.UserInputType.MouseMovement or i.UserInputType==Enum.UserInputType.Touch) then
			local d=i.Position-si
			main.Position=UDim2.new(sp.X.Scale,sp.X.Offset+d.X,sp.Y.Scale,sp.Y.Offset+d.Y)
		end
	end)
	on(UIS.InputEnded,function(i) if ptr(i) then dg=false end end)
end
local mini=false
minB.MouseButton1Click:Connect(function() mini=not mini main:TweenSize(UDim2.fromOffset(WW,mini and 38 or HH),"Out","Quad",.2,true) end)
local function destroy()
	run=false
	for k,v in pairs(S) do if type(v)=="boolean" then S[k]=false end end
	pcall(stopSpec) pcall(function() ragdoll(true) end) fpsBoost(false) potato(false) flyOff() neonRestore() invisRestore() noFx(false) restoreLight()
	workspace.Gravity=OG Cam.FieldOfView=OF LP.CameraMaxZoomDistance=OZ
	pcall(function() RS:UnbindFromRenderStep("GV2Aim") end)
	local h=hum() if h then h.WalkSpeed=16 h.JumpPower=50 end
	if setfpscap and capApplied then pcall(setfpscap,60) end
	for _,c in ipairs(conns) do pcall(function() c:Disconnect() end) end
	for _,hl in pairs(chl) do hl:Destroy() end
	cc:Destroy() bloom:Destroy() sun:Destroy() blur:Destroy() eg:Destroy() sg:Destroy() gui:Destroy()
end
clsB.MouseButton1Click:Connect(destroy)
if getgenv then getgenv().__GV2=destroy end
local HK={fly="keyFly",noclip="keyNoclip",speed="keySpeed",spin="keySpin",aim="keyAim",esp="keyEsp"}
on(UIS.InputBegan,function(i,gp)
	if i.UserInputType~=Enum.UserInputType.Keyboard then return end
	if cap then
		local n=i.KeyCode==Enum.KeyCode.Escape and "None" or i.KeyCode.Name
		S[cap[1]]=n cap[2].Text=n cap=nil
		return
	end
	if gp then return end
	local kn=i.KeyCode.Name
	if kn==S.menuKey then gui.Enabled=not gui.Enabled return end
	for f,k in pairs(HK) do if S[k]~="None" and kn==S[k] and toggles[f] then toggles[f](not S[f]) end end
end)
Script worked? 🚀 Boost it to #1 so others find it too.

Comments (0)

Log in to add a comment.