
Key RequiredUniversal

-- OneTap Hub v2 — ESP + Aimbot + Rayfield Gen2 Menu
-- RightShift = toggle menu | Mouse2 (hold) = aimbot aim key
local Rayfield = loadstring(game:HttpGet("https://sirius.menu/gen2"))()
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Camera = workspace.CurrentCamera
local lp = Players.LocalPlayer
local CFG = {
espEnabled=true, boxes=true, healthBars=true, names=true,
distances=true, skeletons=true, tracers=true, teamCheck=false,
aimbotEnabled=true, fov=150, smoothing=0.18, aimbotTeamCheck=false,
}
local function newLine(col,thick)
local l=Drawing.new("Line"); l.Color=col or Color3.new(1,1,1); l.Thickness=thick or 1; l.Visible=false; return l
end
local function newSquare(col,thick)
local s=Drawing.new("Square"); s.Color=col or Color3.new(1,1,1); s.Thickness=thick or 1; s.Filled=false; s.Visible=false; return s
end
local function newText(sz,col)
local t=Drawing.new("Text"); t.Size=sz or 13; t.Color=col or Color3.new(1,1,1)
t.Outline=true; t.OutlineColor=Color3.new(0,0,0); t.Font=Drawing.Fonts.UI; t.Visible=false; return t
end
local BONES={{"Head","Torso"},{"Torso","Left Arm"},{"Torso","Right Arm"},{"Torso","Left Leg"},{"Torso","Right Leg"}}
local LIMBS={"Head","Torso","Left Arm","Right Arm","Left Leg","Right Leg","HumanoidRootPart"}
local drawings={}
local function buildDrawings(p)
local d={
box=newSquare(Color3.fromRGB(255,60,60),1.5),
healthBg=newSquare(Color3.new(0,0,0),1),
healthFill=Drawing.new("Square"),
nameTag=newText(13,Color3.new(1,1,1)),
distTag=newText(11,Color3.fromRGB(220,220,220)),
tracer=newLine(Color3.fromRGB(255,60,60),1),
bones={},
}
d.healthFill.Filled=true; d.healthFill.Color=Color3.fromRGB(60,220,60); d.healthFill.Visible=false
for i=1,#BONES do d.bones[i]=newLine(Color3.new(1,1,1),1) end
drawings[p]=d
end
local function removeDrawings(p)
local d=drawings[p]; if not d then return end
d.box:Remove();d.healthBg:Remove();d.healthFill:Remove()
d.nameTag:Remove();d.distTag:Remove();d.tracer:Remove()
for _,b in ipairs(d.bones) do b:Remove() end; drawings[p]=nil
end
local function hideDrawings(p)
local d=drawings[p]; if not d then return end
d.box.Visible=false;d.healthBg.Visible=false;d.healthFill.Visible=false
d.nameTag.Visible=false;d.distTag.Visible=false;d.tracer.Visible=false
for _,b in ipairs(d.bones) do b.Visible=false end
end
local fovCircle=Drawing.new("Circle")
fovCircle.Thickness=1;fovCircle.Color=Color3.new(1,1,1);fovCircle.Filled=false;fovCircle.Visible=false
local function isSameTeam(p)
if lp.Team and p.Team then return lp.Team==p.Team end; return lp.TeamColor==p.TeamColor
end
local function worldToVP(pos)
local sp,on=Camera:WorldToViewportPoint(pos); return Vector2.new(sp.X,sp.Y),on,sp.Z
end
local function getCharParts(char)
local parts={}
for _,name in ipairs(LIMBS) do local p2=char:FindFirstChild(name); if p2 then parts[name]=p2 end end
return parts
end
local function getAABB(char)
local minX,minY,maxX,maxY=math.huge,math.huge,-math.huge,-math.huge; local anyOn=false
for _,name in ipairs({"Head","Torso","Left Arm","Right Arm","Left Leg","Right Leg"}) do
local part=char:FindFirstChild(name)
if part then
local sp,on,depth=worldToVP(part.Position)
if on and depth>0 then
anyOn=true
if sp.X<minX then minX=sp.X end; if sp.Y<minY then minY=sp.Y end
if sp.X>maxX then maxX=sp.X end; if sp.Y>maxY then maxY=sp.Y end
end
end
end
if not anyOn then return nil end
return Vector2.new(minX,minY),Vector2.new(maxX,maxY)
end
local function screenCenter()
local vps=Camera.ViewportSize; return Vector2.new(vps.X/2,vps.Y/2)
end
local function getClosestTarget()
local center=screenCenter(); local bestDist,bestPart=math.huge,nil
for _,p in ipairs(Players:GetPlayers()) do
if p==lp then continue end
if CFG.aimbotTeamCheck and isSameTeam(p) then continue end
local char=p.Character; if not char then continue end
local hum=char:FindFirstChildOfClass("Humanoid"); if not hum or hum.Health<=0 then continue end
local head=char:FindFirstChild("Head"); if not head then continue end
local sp,on,depth=worldToVP(head.Position); if not on or depth<=0 then continue end
local dist=(sp-center).Magnitude
if dist<CFG.fov and dist<bestDist then bestDist=dist; bestPart=head end
end
return bestPart
end
for _,p in ipairs(Players:GetPlayers()) do if p~=lp then buildDrawings(p) end end
Players.PlayerAdded:Connect(function(p) if p~=lp then buildDrawings(p) end end)
Players.PlayerRemoving:Connect(function(p) removeDrawings(p) end)
local aimHeld=false
UserInputService.InputBegan:Connect(function(input,gpe)
if gpe then return end
if input.UserInputType==Enum.UserInputType.MouseButton2 then aimHeld=true end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType==Enum.UserInputType.MouseButton2 then aimHeld=false end
end)
RunService.RenderStepped:Connect(function()
local vps=Camera.ViewportSize; local center=screenCenter()
fovCircle.Position=center; fovCircle.Radius=CFG.fov; fovCircle.Visible=CFG.aimbotEnabled
if CFG.aimbotEnabled and aimHeld and isrbxactive() then
local target=getClosestTarget()
if target then
local sp=worldToVP(target.Position); local s=math.max(0.01,CFG.smoothing)
mousemoverel((sp.X-center.X)*(1-s),(sp.Y-center.Y)*(1-s))
end
end
for _,p in ipairs(Players:GetPlayers()) do
if p==lp then continue end
local d=drawings[p]; if not d then continue end
local char=p.Character; local hum=char and char:FindFirstChildOfClass("Humanoid")
if not CFG.espEnabled or not char or not hum or hum.Health<=0 then hideDrawings(p); continue end
if CFG.teamCheck and isSameTeam(p) then hideDrawings(p); continue end
local tl,br=getAABB(char); if not tl then hideDrawings(p); continue end
local boxW=br.X-tl.X; local boxH=br.Y-tl.Y
local hrp=char:FindFirstChild("HumanoidRootPart")
local dist3d=hrp and (Camera.CFrame.Position-hrp.Position).Magnitude or 0
if CFG.boxes then
d.box.Position=tl; d.box.Size=Vector2.new(boxW,boxH); d.box.Visible=true
else d.box.Visible=false end
local hpR=math.clamp(hum.Health/math.max(hum.MaxHealth,1),0,1)
if CFG.healthBars then
local barX=tl.X-6
d.healthBg.Position=Vector2.new(barX-1,tl.Y-1); d.healthBg.Size=Vector2.new(4,boxH+2)
d.healthBg.Filled=true; d.healthBg.Visible=true
d.healthFill.Position=Vector2.new(barX,tl.Y+boxH*(1-hpR))
d.healthFill.Size=Vector2.new(2,boxH*hpR)
d.healthFill.Color=Color3.fromHSV(hpR*0.33,1,1); d.healthFill.Visible=true
else d.healthBg.Visible=false; d.healthFill.Visible=false end
if CFG.names then
d.nameTag.Text=p.Name; d.nameTag.Position=Vector2.new(tl.X+boxW/2,tl.Y-16)
d.nameTag.Center=true; d.nameTag.Visible=true
else d.nameTag.Visible=false end
if CFG.distances then
d.distTag.Text=math.floor(dist3d+0.5).."m"
d.distTag.Position=Vector2.new(tl.X+boxW/2,br.Y+2)
d.distTag.Center=true; d.distTag.Visible=true
else d.distTag.Visible=false end
if CFG.skeletons then
local parts=getCharParts(char)
for i,bone in ipairs(BONES) do
local bl=d.bones[i]; local pa=parts[bone[1]]; local pb=parts[bone[2]]
if pa and pb then
local spa,onA=worldToVP(pa.Position); local spb,onB=worldToVP(pb.Position)
if onA and onB then bl.From=spa; bl.To=spb; bl.Visible=true else bl.Visible=false end
else bl.Visible=false end
end
else for _,b in ipairs(d.bones) do b.Visible=false end end
if CFG.tracers then
d.tracer.From=Vector2.new(center.X,vps.Y); d.tracer.To=Vector2.new(tl.X+boxW/2,br.Y)
d.tracer.Visible=true
else d.tracer.Visible=false end
end
end)
local Window=Rayfield:CreateWindow({
Name="OneTap Hub", LoadingTitle="OneTap Hub", LoadingSubtitle="by Real",
Theme="Default", ToggleKey=Enum.KeyCode.RightShift,
DisableRayfieldPrompts=false, DisableBuildWarnings=false,
})
local espTab=Window:CreateTab({ name="ESP" })
espTab:CreateSection("Visuals")
espTab:CreateToggle({ name="ESP Enabled", value=CFG.espEnabled, flag="esp_on", callback=function(v) CFG.espEnabled=v end })
espTab:CreateToggle({ name="Boxes", value=CFG.boxes, flag="esp_box", callback=function(v) CFG.boxes=v end })
espTab:CreateToggle({ name="Health Bars", value=CFG.healthBars, flag="esp_hp", callback=function(v) CFG.healthBars=v end })
espTab:CreateToggle({ name="Names", value=CFG.names, flag="esp_names", callback=function(v) CFG.names=v end })
espTab:CreateToggle({ name="Distances", value=CFG.distances, flag="esp_dist", callback=function(v) CFG.distances=v end })
espTab:CreateToggle({ name="Skeletons", value=CFG.skeletons, flag="esp_skel", callback=function(v) CFG.skeletons=v end })
espTab:CreateToggle({ name="Tracers", value=CFG.tracers, flag="esp_trc", callback=function(v) CFG.tracers=v end })
espTab:CreateToggle({ name="Team Check (hide teammates)", value=CFG.teamCheck, flag="esp_team", callback=function(v) CFG.teamCheck=v end })
local aimTab=Window:CreateTab({ name="Aimbot" })
aimTab:CreateSection("Aimbot Settings")
aimTab:CreateToggle({ name="Aimbot Enabled", value=CFG.aimbotEnabled, flag="aim_on", callback=function(v) CFG.aimbotEnabled=v end })
aimTab:CreateToggle({ name="Team Check (skip teammates)", value=CFG.aimbotTeamCheck, flag="aim_team", callback=function(v) CFG.aimbotTeamCheck=v end })
aimTab:CreateSlider({ name="FOV Radius", min=30,max=500,default=CFG.fov, increment=5,flag="aim_fov", callback=function(v) CFG.fov=v end })
aimTab:CreateSlider({ name="Smoothing %", min=1, max=99, default=math.floor(CFG.smoothing*100), increment=1,flag="aim_smooth", callback=function(v) CFG.smoothing=v/100 end })
local infoTab=Window:CreateTab({ name="Info" })
infoTab:CreateSection("Controls")
infoTab:CreateButton({ name="RightShift → Toggle Menu", callback=function() end })
infoTab:CreateButton({ name="Mouse2 (hold) → Aimbot Aim Key", callback=function() end })No comments yet for this script.



