-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] --[[ ES Hub v2 - [x2] Ein Schuss ESP = Drawing Aim = nur bei Sichtlinie, RMB halten RightShift = Menue P = ESP E = Aim Q = Speed ]] print("[ES] v2 start") local env = _G pcall(function() env = getgenv() end) if type(env._es_kill) == "function" then pcall(env._es_kill) end local drawings = {} local function D(kind) local ok, obj = pcall(function() return Drawing.new(kind) end) if not ok or not obj then return nil end table.insert(drawings, obj) return obj end local function dset(obj, props) if not obj then return end for k, v in pairs(props) do pcall(function() obj[k] = v end) end end local wm = D("Text") dset(wm, { Text = "ES Hub v2 | RightShift Menue | E Aim | P ESP", Size = 18, Position = Vector2.new(18, 18), Color = Color3.fromRGB(255, 80, 80), Outline = true, Visible = true, Font = 2, }) local statusT = D("Text") dset(statusT, { Text = "v2 bereit - wenn du das liest, Drawing geht", Size = 20, Position = Vector2.new(18, 42), Color = Color3.fromRGB(230, 230, 240), Outline = true, Visible = true, Font = 2, }) local subT = D("Text") dset(subT, { Text = "Aim: E an, RMB halten, nur wenn sichtbar", Size = 16, Position = Vector2.new(18, 66), Color = Color3.fromRGB(180, 180, 190), Outline = true, Visible = true, Font = 2, }) print("[ES] drawing", wm ~= nil) local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UIS = game:GetService("UserInputService") local Lighting = game:GetService("Lighting") local LP = Players.LocalPlayer local VU pcall(function() VU = game:GetService("VirtualUser") end) local CFG = { esp = true, tracers = true, aim = false, aimHold = true, fov = 220, speed = false, speedVal = 28, infJump = false, noclip = false, fullbright = false, clickTp = false, antiAfk = true, } local COL = { red = Color3.fromRGB(255, 70, 70), gold = Color3.fromRGB(255, 210, 50), white = Color3.fromRGB(235, 235, 245), dim = Color3.fromRGB(160, 160, 175), on = Color3.fromRGB(80, 230, 120), off = Color3.fromRGB(255, 90, 90), } local ST = { on = true, menu = true, amb = Lighting.Ambient, outA = Lighting.OutdoorAmbient, br = Lighting.Brightness, clock = Lighting.ClockTime, fog = Lighting.FogEnd, } local function char() return LP and LP.Character end local function hum() local c = char() return c and c:FindFirstChildOfClass("Humanoid") end local function hrp() local c = char() return c and (c:FindFirstChild("HumanoidRootPart") or c.PrimaryPart) end local SLOTS = 16 local slots = {} for i = 1, SLOTS do slots[i] = { name = D("Text"), box = D("Square"), line = D("Line"), } dset(slots[i].name, { Size = 15, Outline = true, Center = true, Font = 2, Visible = false, Color = COL.red, }) dset(slots[i].box, { Thickness = 1, Filled = false, Color = COL.red, Visible = false, }) dset(slots[i].line, { Thickness = 1, Color = COL.red, Visible = false, }) end local fovC = D("Circle") dset(fovC, { Thickness = 1, NumSides = 64, Radius = CFG.fov, Filled = false, Color = COL.red, Visible = false, }) local MENU_X, MENU_Y, MENU_W, ROW_H = 18, 100, 310, 26 local menuBg = D("Square") dset(menuBg, { Position = Vector2.new(MENU_X, MENU_Y), Size = Vector2.new(MENU_W, 400), Color = Color3.fromRGB(18, 10, 10), Filled = true, Visible = true, }) local menuBd = D("Square") dset(menuBd, { Position = Vector2.new(MENU_X, MENU_Y), Size = Vector2.new(MENU_W, 400), Color = COL.red, Filled = false, Visible = true, Thickness = 1, }) local rows, rowDraw = {}, {} local function addLabel(text) local y = MENU_Y + 8 + #rows * ROW_H local t = D("Text") dset(t, { Text = text, Size = 16, Position = Vector2.new(MENU_X + 10, y), Color = COL.gold, Outline = true, Visible = true, Font = 2, }) table.insert(rows, { kind = "label" }) table.insert(rowDraw, { t }) end local function addToggle(label, key) local y = MENU_Y + 8 + #rows * ROW_H local t = D("Text") dset(t, { Text = "", Size = 16, Position = Vector2.new(MENU_X + 10, y), Color = COL.white, Outline = true, Visible = true, Font = 2, }) table.insert(rows, { kind = "toggle", key = key, label = label }) table.insert(rowDraw, { t }) end local function addBtn(label, id) local y = MENU_Y + 8 + #rows * ROW_H local t = D("Text") dset(t, { Text = "[ " .. label .. " ]", Size = 16, Position = Vector2.new(MENU_X + 10, y), Color = COL.gold, Outline = true, Visible = true, Font = 2, }) table.insert(rows, { kind = "btn", id = id, label = label }) table.insert(rowDraw, { t }) end addLabel("COMBAT") addToggle("Player ESP", "esp") addToggle("Tracers", "tracers") addToggle("Aim (Taste E)", "aim") addToggle("Aim nur RMB halten", "aimHold") addLabel("MOVE") addToggle("Speed 28 (Taste Q)", "speed") addToggle("Inf Jump", "infJump") addToggle("Noclip", "noclip") addToggle("Click-TP (Ctrl+Klick)", "clickTp") addToggle("Fullbright", "fullbright") addToggle("Anti-AFK", "antiAfk") addLabel("AKTION") addBtn("FOV 120/220/360", "fov") local function paintMenu() for i, row in ipairs(rows) do local vis = ST.menu and ST.on if row.kind == "toggle" then local on = CFG[row.key] dset(rowDraw[i][1], { Text = (on and "[AN] " or "[AUS] ") .. row.label, Color = on and COL.on or COL.off, Visible = vis, }) else dset(rowDraw[i][1], { Visible = vis }) end end local h = 16 + #rows * ROW_H dset(menuBg, { Size = Vector2.new(MENU_W, h), Visible = ST.menu and ST.on }) dset(menuBd, { Size = Vector2.new(MENU_W, h), Visible = ST.menu and ST.on }) end paintMenu() local FOVS = { 120, 220, 360 } local fi = 2 local function cycleFov() fi = fi % #FOVS + 1 CFG.fov = FOVS[fi] dset(subT, { Text = "FOV = " .. tostring(CFG.fov), Color = COL.gold }) end local function applyFB(on) if on then Lighting.Ambient = Color3.new(1, 1, 1) Lighting.OutdoorAmbient = Color3.new(1, 1, 1) Lighting.Brightness = 2 Lighting.ClockTime = 14 Lighting.FogEnd = 1e6 else Lighting.Ambient = ST.amb Lighting.OutdoorAmbient = ST.outA Lighting.Brightness = ST.br Lighting.ClockTime = ST.clock Lighting.FogEnd = ST.fog end end local function kill() ST.on = false for _, o in ipairs(drawings) do pcall(function() o.Visible = false o:Remove() end) end applyFB(false) env._es_kill = nil print("[ES] killed") end env._es_kill = kill local function partOf(c) if not c then return nil end return c:FindFirstChild("Head") or c:FindFirstChild("HumanoidRootPart") or c.PrimaryPart end local function aliveChar(pl) if not pl or pl == LP then return nil end local c = pl.Character if not c then return nil end local h = c:FindFirstChildOfClass("Humanoid") local p = partOf(c) if h and h.Health > 0 and p then return c, h, p end return nil end local function canSee(fromPos, targetPart, targetChar) if not fromPos or not targetPart or not targetChar then return false end local dir = targetPart.Position - fromPos local mag = dir.Magnitude if mag < 1.2 then return true end local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Exclude local ign = {} local me = char() if me then table.insert(ign, me) end params.FilterDescendantsInstances = ign params.IgnoreWater = true local res = workspace:Raycast(fromPos, dir.Unit * (mag + 0.5), params) if not res then return true end return res.Instance:IsDescendantOf(targetChar) end local function mouseMove(dx, dy) if math.abs(dx) < 0.4 and math.abs(dy) < 0.4 then return end pcall(function() mousemoverel(dx, dy) end) end UIS.InputBegan:Connect(function(inp, gp) if not ST.on then return end if inp.KeyCode == Enum.KeyCode.RightShift then ST.menu = not ST.menu paintMenu() elseif inp.KeyCode == Enum.KeyCode.P and not gp then CFG.esp = not CFG.esp paintMenu() elseif inp.KeyCode == Enum.KeyCode.E and not gp then CFG.aim = not CFG.aim paintMenu() dset(subT, { Text = CFG.aim and "Aim AN - nur wenn sichtbar, RMB halten" or "Aim AUS", Color = CFG.aim and COL.on or COL.off, }) elseif inp.KeyCode == Enum.KeyCode.Q and not gp then CFG.speed = not CFG.speed paintMenu() elseif inp.KeyCode == Enum.KeyCode.Space and not gp and CFG.infJump then local h = hum() if h then h.Jump = true pcall(function() h:ChangeState(Enum.HumanoidStateType.Jumping) end) end elseif CFG.clickTp and not gp and inp.UserInputType == Enum.UserInputType.MouseButton1 and UIS:IsKeyDown(Enum.KeyCode.LeftControl) then local r = hrp() local m = LP and LP:GetMouse() if r and m and m.Hit then r.CFrame = CFrame.new(m.Hit.Position + Vector3.new(0, 3, 0)) end elseif inp.UserInputType == Enum.UserInputType.MouseButton1 and ST.menu then local m = UIS:GetMouseLocation() if m.X >= MENU_X and m.X <= MENU_X + MENU_W then for i, row in ipairs(rows) do local y = MENU_Y + 8 + (i - 1) * ROW_H if m.Y >= y and m.Y <= y + ROW_H then if row.kind == "toggle" then CFG[row.key] = not CFG[row.key] if row.key == "fullbright" then applyFB(CFG.fullbright) end paintMenu() elseif row.kind == "btn" and row.id == "fov" then cycleFov() end end end end end end) if VU and LP then LP.Idled:Connect(function() if CFG.antiAfk then pcall(function() VU:CaptureController() VU:ClickButton2(Vector2.new()) end) end end) end local function hideSlots() for i = 1, SLOTS do dset(slots[i].name, { Visible = false }) dset(slots[i].box, { Visible = false }) dset(slots[i].line, { Visible = false }) end end RunService:BindToRenderStep("ESHub", 200, function() if not ST.on then return end if not LP then LP = Players.LocalPlayer return end local cam = workspace.CurrentCamera if not cam then return end local vs = cam.ViewportSize local mid = Vector2.new(vs.X / 2, vs.Y / 2) dset(fovC, { Position = mid, Radius = CFG.fov, Visible = CFG.aim, Color = COL.red, }) if CFG.speed then local h = hum() if h then h.WalkSpeed = CFG.speedVal end end if CFG.noclip then local c = char() if c then for _, p in ipairs(c:GetDescendants()) do if p:IsA("BasePart") then p.CanCollide = false end end end end local wantAim = CFG.aim if wantAim and CFG.aimHold then wantAim = UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) end local enemies = {} local my = hrp() for _, pl in ipairs(Players:GetPlayers()) do local c, h, p = aliveChar(pl) if c and p then local sp, onScreen = cam:WorldToViewportPoint(p.Position) local dist = my and (p.Position - my.Position).Magnitude or 0 local see = canSee(cam.CFrame.Position, p, c) table.insert(enemies, { pl = pl, c = c, h = h, p = p, sp = sp, on = onScreen and sp.Z > 0, see = see, dist = dist, d2 = (Vector2.new(sp.X, sp.Y) - mid).Magnitude, }) end end if wantAim then local best, bestD = nil, CFG.fov for _, e in ipairs(enemies) do if e.on and e.see and e.d2 < bestD then best, bestD = e, e.d2 end end if best then local dx = (best.sp.X - mid.X) * 0.55 local dy = (best.sp.Y - mid.Y) * 0.55 if dx > 40 then dx = 40 elseif dx < -40 then dx = -40 end if dy > 40 then dy = 40 elseif dy < -40 then dy = -40 end mouseMove(dx, dy) pcall(function() cam.CFrame = CFrame.new(cam.CFrame.Position, best.p.Position) end) end end hideSlots() local shown = 0 if CFG.esp then for _, e in ipairs(enemies) do shown = shown + 1 if shown > SLOTS then break end local sl = slots[shown] local vis = e.on local col = e.see and COL.red or COL.gold dset(sl.name, { Text = e.pl.DisplayName .. " " .. math.floor(e.dist) .. "m", Position = Vector2.new(e.sp.X, e.sp.Y - 28), Visible = vis, Color = col, }) local sz = math.clamp(2200 / math.max(e.dist, 8), 12, 70) dset(sl.box, { Position = Vector2.new(e.sp.X - sz * 0.35, e.sp.Y - sz * 0.2), Size = Vector2.new(sz * 0.7, sz * 1.15), Visible = vis, Color = col, }) dset(sl.line, { From = Vector2.new(vs.X / 2, vs.Y - 8), To = Vector2.new(e.sp.X, e.sp.Y), Visible = vis and CFG.tracers, Color = col, }) end end dset(statusT, { Text = (CFG.esp and "ESP AN" or "ESP AUS") .. " | " .. (CFG.aim and "AIM AN" or "AIM AUS") .. " | Gegner " .. tostring(#enemies), Color = CFG.aim and COL.red or COL.white, Visible = true, }) end) print("[ES] v2 ready place=" .. tostring(game.PlaceId) .. " drawing=" .. tostring(wm ~= nil)) pcall(function() game:GetService("StarterGui"):SetCore("SendNotification", { Title = "ES Hub v2", Text = "Aim nur bei Sicht. Rot = sichtbar, Gelb = Wand", Duration = 7, }) end)