-- [[ 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 ]] --[[rscripts:analytics:start]] -- Script analytics (enabled by the creator on rscripts.net). -- Runs in its own thread and cannot affect the script below. task.spawn(function() pcall(function() loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6ad4cb4c08f6937e2a87fc1d"))() end) end) --[[rscripts:analytics:end]] -- Eastern Reforged hub (light, no GitHub): ESP + Silent aim + Teleport + FPS boost + no corpses / trees -- RightShift = menu | T = TP to crosshair | B = back | F3 = save position | F6 = cancel TP | End = unload local P, RS, UIS, WS, CG, LT, HS = game:GetService("Players"), game:GetService("RunService"), game:GetService("UserInputService"), game:GetService("Workspace"), game:GetService("CoreGui"), game:GetService("Lighting"), game:GetService("HttpService") local LP, Cam = P.LocalPlayer, WS.CurrentCamera for _, k in ipairs({ "__ER_UNLOAD", "__TOWN_HUB_UNLOAD" }) do if shared[k] then pcall(shared[k]) end end local C = { ESP = true, Names = true, Team = true, SilentAim = false, AimPart = "Head", FOV = 180, WallCheck = true, DropComp = true, Lead = true, TPMode = "Instant", HopSize = 150, TPSpeed = 45, TPLift = 25, GroundCheck = true, CrosshairTP = true, Delete = false, FPS = false, NoCorpses = true, NoTrees = true } local alive, conns = true, {} local note local function tr(c) conns[#conns + 1] = c return c end local function new(cl, pr, par) local i = Instance.new(cl) for k, v in pairs(pr) do i[k] = v end i.Parent = par return i end local function foe(p) if p == LP or (C.Team and p.Team and p.Team == LP.Team) then return end local c = p.Character local h = c and c:FindFirstChildOfClass("Humanoid") local r = c and c:FindFirstChild("HumanoidRootPart") if h and r and h.Health > 0 then return c, h, r end end -- ESP: heavy work 5x/sec, per-frame only label positions local ent, seen, foes = {}, {}, {} local function drop(i) local e = ent[i] if e then e.h:Destroy() e.t:Remove() ent[i] = nil end end local function scan() table.clear(seen) table.clear(foes) for _, p in ipairs(P:GetPlayers()) do local c, h, r = foe(p) if c then foes[#foes + 1] = { c = c, r = r } if C.ESP then local e = ent[c] if not e then local t = Drawing.new("Text") t.Size, t.Center, t.Outline = 14, true, true e = { t = t, h = new("Highlight", { DepthMode = Enum.HighlightDepthMode.AlwaysOnTop, FillTransparency = 0.6, OutlineTransparency = 0, Adornee = c }, CG) } ent[c] = e end seen[c] = true local col = p.Team and p.TeamColor.Color or Color3.fromRGB(255, 60, 60) e.h.FillColor, e.h.OutlineColor, e.h.Enabled, e.t.Color = col, Color3.new(1, 1, 1), true, col e.t.Text = ("%s [%d] %dm"):format(p.Name, math.floor(h.Health), math.floor((Cam.CFrame.Position - r.Position).Magnitude)) end end end for c, e in pairs(ent) do if not seen[c] then e.h.Enabled, e.t.Visible = false, false if not c.Parent then drop(c) end end end end local function labels() for _, f in ipairs(foes) do local e = ent[f.c] if e then local sp, on = Cam:WorldToViewportPoint(f.r.Position + Vector3.new(0, 3.2, 0)) e.t.Visible = C.Names and on if on then e.t.Position = Vector2.new(sp.X, sp.Y) end end end end -- Silent aim (the __index hook is installed only the first time you turn it on) local target, tHrp, bal, orig local function pick() target, tHrp = nil, nil local ctr, best = Cam.ViewportSize / 2, C.FOV local rp = RaycastParams.new() rp.FilterType = Enum.RaycastFilterType.Exclude for _, f in ipairs(foes) do local part = f.c:FindFirstChild(C.AimPart) or f.r if part:IsA("BasePart") then local v, on = Cam:WorldToViewportPoint(part.Position) if on then local d = (Vector2.new(v.X, v.Y) - ctr).Magnitude if d < best then local ok = true if C.WallCheck then rp.FilterDescendantsInstances = { LP.Character, f.c, Cam } local o = Cam.CFrame.Position ok = WS:Raycast(o, part.Position - o, rp) == nil end if ok then best, target, tHrp = d, part, f.r end end end end end end local function refreshBal() bal = nil local c = LP.Character local t = c and c:FindFirstChildOfClass("Tool") local m = t and t:FindFirstChild("ACS_Modules") local st = m and m:FindFirstChild("Settings") if st and st:IsA("ModuleScript") then local ok, s = pcall(require, st) if ok and type(s) == "table" and type(s.BSpeed) == "number" and s.BSpeed > 0 then bal = { s.BSpeed, 196.2 * (s.BDrop or 0) } end end end local function hook() if orig then return end orig = hookmetamethod(game, "__index", newcclosure(function(self, key) if key == "CFrame" and alive and C.SilentAim and target and not checkcaller() then if typeof(self) == "Instance" and orig(self, "Name") == "SmokePart" and UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) then local cs = getcallingscript() if cs and cs.Name == "Client" then local o = orig(self, "CFrame").Position local tp = target.Position if bal then local t = (tp - o).Magnitude / bal[1] if C.Lead and tHrp then tp += tHrp.AssemblyLinearVelocity * t end if C.DropComp then tp += Vector3.new(0, 0.5 * bal[2] * t * t, 0) end end return CFrame.lookAt(o, tp) end end end return orig(self, key) end)) end -- Corpses: removed locally the moment they spawn local rcon local function corpses(on) if rcon then rcon:Disconnect() rcon = nil end if not on then return end local core = WS:FindFirstChild("Core") local rg = core and core:FindFirstChild("Ragdolls") if not rg then return end local function purge(m) task.defer(function() pcall(m.Destroy, m) end) end for _, m in ipairs(rg:GetChildren()) do purge(m) end rcon = rg.ChildAdded:Connect(purge) end -- Trees + grass: Workspace.Game.trees / .grass are detached locally (restored when turned off), terrain grass decoration off local fh, decV = {}, nil local function foliage(on) local g = WS:FindFirstChild("Game") if on then for _, n in ipairs({ "trees", "grass" }) do local f = g and g:FindFirstChild(n) if f then fh[#fh + 1] = { f, g } f.Parent = nil end end local ok, v = pcall(gethiddenproperty, WS.Terrain, "Decoration") if ok then decV = v end pcall(sethiddenproperty, WS.Terrain, "Decoration", false) else for i = #fh, 1, -1 do local e = fh[i] if e[2].Parent then e[1].Parent = e[2] end fh[i] = nil end if decV ~= nil then pcall(sethiddenproperty, WS.Terrain, "Decoration", decV) end end end -- FPS boost (reversible): shadows, effects, particles, water, texture quality, mesh detail local fs, fc, fv, fcon, fxn = {}, {}, nil, nil, 0 local FX = { ParticleEmitter = 1, Smoke = 1, Fire = 1, Sparkles = 1, BloomEffect = 1, BlurEffect = 1, SunRaysEffect = 1, ColorCorrectionEffect = 1, DepthOfFieldEffect = 1 } local function fxOff(d) if FX[d.ClassName] and fs[d] == nil then fs[d] = d.Enabled d.Enabled = false fxn += 1 end end local function fps(on) if on then local T = WS.Terrain fv = { sh = LT.GlobalShadows, ww = T.WaterWaveSize, wr = T.WaterReflectance, es = LT.EnvironmentSpecularScale } LT.GlobalShadows, T.WaterWaveSize, T.WaterReflectance, LT.EnvironmentSpecularScale = false, 0, 0, 0 pcall(function() local r = settings().Rendering fv.q, fv.m = r.QualityLevel, r.MeshPartDetailLevel r.QualityLevel, r.MeshPartDetailLevel = Enum.QualityLevel.Level01, Enum.MeshPartDetailLevel.Level04 end) fxn = 0 fcon = WS.DescendantAdded:Connect(fxOff) task.spawn(function() local n, c = 0, 0 for _, root in ipairs({ WS, LT, Cam }) do for _, d in ipairs(root:GetDescendants()) do if not C.FPS then return end fxOff(d) if d:IsA("BasePart") and d.CastShadow then fc[d] = true d.CastShadow = false c += 1 end n += 1 if n % 1500 == 0 then task.wait() end end end note(("FPS boost on: %d part shadows, %d effects off"):format(c, fxn)) end) else if fcon then fcon:Disconnect() fcon = nil end for d, v in pairs(fs) do if d.Parent then d.Enabled = v end fs[d] = nil end for d in pairs(fc) do if d.Parent then d.CastShadow = true end fc[d] = nil end if fv then LT.GlobalShadows, WS.Terrain.WaterWaveSize, WS.Terrain.WaterReflectance, LT.EnvironmentSpecularScale = fv.sh, fv.ww, fv.wr, fv.es pcall(function() local r = settings().Rendering if fv.q then r.QualityLevel = fv.q end if fv.m then r.MeshPartDetailLevel = fv.m end end) fv = nil end end end -- Teleport local tpTok, prev, tpErr = 0, nil, "" local function cancelTP() tpTok += 1 end local function settle(hrp) task.spawn(function() for _ = 1, 10 do RS.Heartbeat:Wait() if not hrp.Parent then return end hrp.AssemblyLinearVelocity, hrp.AssemblyAngularVelocity = Vector3.zero, Vector3.zero end end) end local function tpTo(dest) local ch = LP.Character local hrp0 = ch and ch:FindFirstChild("HumanoidRootPart") if not hrp0 then tpErr = "no character" return false end if dest.Y < -50 then tpErr = "target below the map" return false end if C.GroundCheck then local rp = RaycastParams.new() rp.FilterType = Enum.RaycastFilterType.Exclude rp.FilterDescendantsInstances = { ch } if not WS:Raycast(dest + Vector3.new(0, 3, 0), Vector3.new(0, -250, 0), rp) then tpErr = "no ground below target" return false end end cancelTP() prev = hrp0.Position if C.TPMode == "Instant" then hrp0.CFrame = CFrame.new(dest) * hrp0.CFrame.Rotation hrp0.AssemblyLinearVelocity = Vector3.zero settle(hrp0) return true end local tok, smooth, wi = tpTok, C.TPMode == "Smooth", 1 local wps = { dest } if smooth then local s = hrp0.Position local y = math.max(s.Y, dest.Y) + C.TPLift wps = { Vector3.new(s.X, y, s.Z), Vector3.new(dest.X, y, dest.Z), dest } end local cn cn = RS.Heartbeat:Connect(function(dt) local c = LP.Character local hrp = c and c:FindFirstChild("HumanoidRootPart") local hum = c and c:FindFirstChildOfClass("Humanoid") if tok ~= tpTok or not alive or not hrp or not hum or hum.Health <= 0 then cn:Disconnect() return end local delta = wps[wi] - hrp.Position local dist = delta.Magnitude if dist < 1 then wi += 1 if wi > #wps then cn:Disconnect() settle(hrp) end return end hrp.CFrame += delta.Unit * (smooth and math.min(dist, C.TPSpeed * dt) or math.min(dist, C.HopSize)) hrp.AssemblyLinearVelocity, hrp.AssemblyAngularVelocity = Vector3.zero, Vector3.zero end) tr(cn) return true end -- Menu local BG, PN, AC, TX, OFFC, MUT = Color3.fromRGB(22, 22, 28), Color3.fromRGB(34, 34, 44), Color3.fromRGB(96, 140, 255), Color3.fromRGB(235, 235, 245), Color3.fromRGB(70, 70, 88), Color3.fromRGB(150, 150, 170) local root = CG pcall(function() if gethui then root = gethui() end end) local gui = new("ScreenGui", { Name = "ERHub", ResetOnSpawn = false, DisplayOrder = 999 }, root) local main = new("Frame", { Size = UDim2.fromOffset(470, 400), Position = UDim2.new(0.5, -235, 0.5, -200), BackgroundColor3 = BG, BorderSizePixel = 0 }, gui) local function corner(p, r) new("UICorner", { CornerRadius = UDim.new(0, r or 8) }, p) end corner(main, 10) local function isPtr(i, mv) local t = i.UserInputType return t == Enum.UserInputType.MouseButton1 or t == Enum.UserInputType.Touch or (mv and t == Enum.UserInputType.MouseMovement) end local function lbl(par, txt, sz, pos, col, al) return new("TextLabel", { Size = sz, Position = pos, BackgroundTransparency = 1, Text = txt, TextColor3 = col or TX, Font = Enum.Font.Gotham, TextSize = 13, TextXAlignment = al or Enum.TextXAlignment.Left }, par) end note = function(t) local l = new("TextLabel", { Size = UDim2.fromOffset(340, 28), Position = UDim2.new(0.5, -170, 1, -90), BackgroundColor3 = PN, TextColor3 = TX, Font = Enum.Font.GothamMedium, TextSize = 13, Text = t, BorderSizePixel = 0 }, gui) corner(l) task.delay(2.5, function() l:Destroy() end) end local function go(dest, label) if tpTo(dest) then note("Teleport: " .. label) else note("Teleport failed: " .. tpErr) end end local tb = new("Frame", { Size = UDim2.new(1, 0, 0, 34), BackgroundTransparency = 1 }, main) lbl(tb, "Eastern Reforged", UDim2.new(1, -50, 1, 0), UDim2.fromOffset(12, 0)).Font = Enum.Font.GothamBold local xb = new("TextButton", { Size = UDim2.fromOffset(28, 22), Position = UDim2.new(1, -36, 0, 6), BackgroundColor3 = PN, Text = "X", TextColor3 = TX, Font = Enum.Font.GothamBold, TextSize = 12, AutoButtonColor = false, BorderSizePixel = 0 }, tb) corner(xb, 6) tr(xb.MouseButton1Click:Connect(function() shared.__ER_UNLOAD() end)) local dr, ds, sp tr(tb.InputBegan:Connect(function(i) if isPtr(i) then dr, ds, sp = true, i.Position, main.Position end end)) tr(UIS.InputChanged:Connect(function(i) if dr and isPtr(i, true) then local d = i.Position - ds main.Position = UDim2.new(sp.X.Scale, sp.X.Offset + d.X, sp.Y.Scale, sp.Y.Offset + d.Y) end end)) tr(UIS.InputEnded:Connect(function(i) if isPtr(i) then dr = false end end)) local pages, tabs = {}, {} local function sel(n) for k, p in pairs(pages) do p.Visible = k == n tabs[k].BackgroundColor3 = k == n and AC or PN end end local function page(n, px) local b = new("TextButton", { Size = UDim2.fromOffset(108, 26), Position = UDim2.fromOffset(px, 38), BackgroundColor3 = PN, Text = n, TextColor3 = TX, Font = Enum.Font.GothamMedium, TextSize = 13, AutoButtonColor = false, BorderSizePixel = 0 }, main) corner(b) local p = new("ScrollingFrame", { Size = UDim2.new(1, -16, 1, -74), Position = UDim2.fromOffset(8, 70), BackgroundTransparency = 1, BorderSizePixel = 0, ScrollBarThickness = 3, AutomaticCanvasSize = Enum.AutomaticSize.Y, CanvasSize = UDim2.new(), Visible = false }, main) new("UIListLayout", { Padding = UDim.new(0, 6), SortOrder = Enum.SortOrder.LayoutOrder }, p) pages[n], tabs[n] = p, b tr(b.MouseButton1Click:Connect(function() sel(n) end)) return p end local function row(pg, h, cl) local r = new(cl, { Size = UDim2.new(1, -6, 0, h), BackgroundColor3 = PN, BorderSizePixel = 0, LayoutOrder = #pg:GetChildren() }, pg) if cl == "TextButton" then r.Text, r.AutoButtonColor = "", false end corner(r) return r end local function tog(pg, txt, key, cb) local r = row(pg, 32, "TextButton") lbl(r, txt, UDim2.new(1, -60, 1, 0), UDim2.fromOffset(10, 0)) local pill = new("Frame", { Size = UDim2.fromOffset(36, 18), Position = UDim2.new(1, -46, 0.5, -9), BorderSizePixel = 0 }, r) corner(pill, 9) local k = new("Frame", { Size = UDim2.fromOffset(14, 14), BackgroundColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0 }, pill) corner(k, 7) local function rd() pill.BackgroundColor3 = C[key] and AC or OFFC k.Position = C[key] and UDim2.new(1, -16, 0.5, -7) or UDim2.new(0, 2, 0.5, -7) end rd() tr(r.MouseButton1Click:Connect(function() C[key] = not C[key] rd() if cb then cb(C[key]) end end)) end local function sld(pg, txt, key, mn, mx, st, fmt) local r = row(pg, 46, "Frame") lbl(r, txt, UDim2.new(1, -110, 0, 24), UDim2.fromOffset(10, 2)) local v = lbl(r, "", UDim2.fromOffset(100, 24), UDim2.new(1, -110, 0, 2), AC, Enum.TextXAlignment.Right) local bar = new("TextButton", { Size = UDim2.new(1, -20, 0, 6), Position = UDim2.fromOffset(10, 32), BackgroundColor3 = OFFC, Text = "", AutoButtonColor = false, BorderSizePixel = 0 }, r) local f = new("Frame", { BackgroundColor3 = AC, BorderSizePixel = 0 }, bar) local function rd() f.Size = UDim2.new((C[key] - mn) / (mx - mn), 0, 1, 0) v.Text = fmt:format(C[key]) end rd() local function set(px) local rel = math.clamp((px - bar.AbsolutePosition.X) / bar.AbsoluteSize.X, 0, 1) local nv = math.clamp(math.floor((mn + rel * (mx - mn)) / st + 0.5) * st, mn, mx) if nv ~= C[key] then C[key] = nv rd() end end local d tr(bar.InputBegan:Connect(function(i) if isPtr(i) then d = true set(i.Position.X) end end)) tr(UIS.InputChanged:Connect(function(i) if d and isPtr(i, true) then set(i.Position.X) end end)) tr(UIS.InputEnded:Connect(function(i) if isPtr(i) then d = false end end)) end local function cyc(pg, txt, key, opts) local r = row(pg, 32, "TextButton") lbl(r, txt, UDim2.new(1, -170, 1, 0), UDim2.fromOffset(10, 0)) local v = lbl(r, C[key], UDim2.fromOffset(156, 32), UDim2.new(1, -166, 0, 0), AC, Enum.TextXAlignment.Right) tr(r.MouseButton1Click:Connect(function() C[key] = opts[(table.find(opts, C[key]) or 0) % #opts + 1] v.Text = C[key] end)) end local function btn(pg, title, desc, cb) local r = row(pg, desc and 40 or 32, "TextButton") lbl(r, title, UDim2.new(1, -20, 0, desc and 22 or 32), UDim2.fromOffset(10, desc and 2 or 0)) if desc then lbl(r, desc, UDim2.new(1, -20, 0, 14), UDim2.fromOffset(10, 22), MUT).TextSize = 11 end tr(r.MouseButton1Click:Connect(cb)) return r end local function inp(pg, ph, cb) local r = row(pg, 32, "Frame") local t = new("TextBox", { Size = UDim2.new(1, -20, 1, 0), Position = UDim2.fromOffset(10, 0), BackgroundTransparency = 1, PlaceholderText = ph, Text = "", TextColor3 = TX, PlaceholderColor3 = Color3.fromRGB(120, 120, 140), Font = Enum.Font.Gotham, TextSize = 13, ClearTextOnFocus = false, TextXAlignment = Enum.TextXAlignment.Left }, r) tr(t:GetPropertyChangedSignal("Text"):Connect(function() cb(t.Text) end)) end -- saved positions local saved, FILE = {}, "EasternReforged_pos_" .. game.PlaceId .. ".json" local function persist() local o = {} for _, s in ipairs(saved) do o[#o + 1] = { name = s.name, x = s.pos.X, y = s.pos.Y, z = s.pos.Z } end pcall(writefile, FILE, HS:JSONEncode(o)) end do local ok, raw = pcall(function() return isfile(FILE) and readfile(FILE) end) local ok2, d = false, nil if ok and raw then ok2, d = pcall(HS.JSONDecode, HS, raw) end if ok2 and type(d) == "table" then local m for _, e in ipairs(d) do local n = tostring(e.name) local k = n:match("^Позиція%s*(%d+)$") -- old Ukrainian default name -> English if k then n, m = "Position " .. k, true end saved[#saved + 1] = { name = n, pos = Vector3.new(e.x, e.y, e.z) } end if m then persist() end end end local pV = page("Visuals", 8) tog(pV, "Player ESP", "ESP") tog(pV, "Name / HP / distance", "Names") tog(pV, "Skip my team", "Team") tog(pV, "Remove trees and grass", "NoTrees", foliage) tog(pV, "Remove corpses (no walking on them)", "NoCorpses", corpses) tog(pV, "FPS boost (shadows, effects, water, mesh detail)", "FPS", fps) -- Ultra FPS never runs by itself: it needs two clicks within 3 seconds local armed = 0 btn(pV, "Ultra FPS (click twice to confirm)", "Plain materials, no textures. Stays until you rejoin", function() if os.clock() - armed > 3 then armed = os.clock() note("Click Ultra FPS again within 3 seconds to confirm") return end armed = 0 task.spawn(function() local n, T = 0, WS.Terrain for _, d in ipairs(WS:GetDescendants()) do if d:IsA("BasePart") and d ~= T then d.Material, d.Reflectance, d.CastShadow = Enum.Material.SmoothPlastic, 0, false elseif d:IsA("Decal") or d:IsA("Texture") then d.Transparency = 1 end n += 1 if n % 1500 == 0 then task.wait() end end note("Ultra FPS applied") end) end) local pA = page("Aim", 120) tog(pA, "Silent aim (while holding LMB)", "SilentAim", function(v) if v then hook() end end) sld(pA, "FOV radius", "FOV", 50, 500, 5, "%d") cyc(pA, "Aim part (click)", "AimPart", { "Head", "UpperTorso", "HumanoidRootPart" }) tog(pA, "Visibility check", "WallCheck") tog(pA, "Bullet drop compensation", "DropComp") tog(pA, "Target lead", "Lead") local pT = page("Teleport", 232) cyc(pT, "Mode (click)", "TPMode", { "Instant", "Fast hops", "Smooth" }) sld(pT, "Fast hops: studs / frame", "HopSize", 20, 500, 10, "%d") sld(pT, "Smooth: speed", "TPSpeed", 15, 150, 5, "%d st/s") sld(pT, "Smooth: flight height", "TPLift", 0, 80, 5, "%d") tog(pT, "Refuse if no ground below target", "GroundCheck") tog(pT, "T key = teleport to crosshair", "CrosshairTP") btn(pT, "Back to previous spot (B)", nil, function() if prev then go(prev, "Previous spot") else note("No previous spot yet") end end) btn(pT, "Cancel teleport (F6)", nil, cancelTP) local pend = "" local function addPos(s) s.row = btn(pT, s.name, ("%d, %d, %d"):format(s.pos.X, s.pos.Y, s.pos.Z), function() if C.Delete then for i, e in ipairs(saved) do if e == s then table.remove(saved, i) break end end s.row:Destroy() persist() note("Deleted " .. s.name) else go(s.pos, s.name) end end) end local function savePos(name) local hrp = LP.Character and LP.Character:FindFirstChild("HumanoidRootPart") if not hrp then return end local b = (name and name ~= "") and name or ("Position " .. (#saved + 1)) local n, i, taken = b, 1, true while taken do taken = false for _, s in ipairs(saved) do if s.name == n then taken = true end end if taken then i += 1 n = b .. " (" .. i .. ")" end end local s = { name = n, pos = hrp.Position + Vector3.new(0, 1, 0) } saved[#saved + 1] = s persist() addPos(s) note("Saved " .. n) end inp(pT, "New position name...", function(t) pend = t end) btn(pT, "Save current position (F3)", nil, function() savePos(pend) end) tog(pT, "Delete mode (click a saved position)", "Delete") for _, s in ipairs(saved) do addPos(s) end local pM = page("Map points", 344) local nexus = WS:FindFirstChild("NEXUS") or WS:WaitForChild("NEXUS", 3) local caps = {} for _, m in ipairs(nexus and nexus:GetChildren() or {}) do if m:IsA("Model") and m:FindFirstChild("Zone") then caps[#caps + 1] = m end end table.sort(caps, function(a, b) return tostring(a:GetAttribute("DisplayName") or a.Name) < tostring(b:GetAttribute("DisplayName") or b.Name) end) for _, m in ipairs(caps) do local n = tostring(m:GetAttribute("DisplayName") or m.Name) local p0 = m:GetPivot().Position btn(pM, "Capture point " .. n, ("%d, %d, %d"):format(p0.X, p0.Y, p0.Z), function() go(m:GetPivot().Position + Vector3.new(0, 4, 0), "Capture point " .. n) end) end if #caps == 0 then btn(pM, "No capture points found", "Re-run the script once the round has started", function() end) end for _, d in ipairs(WS:FindFirstChild("Menu") and WS.Menu:GetDescendants() or {}) do local ln = d.Name:lower() if d:IsA("SpawnLocation") and d.Position.Y > -20 and not (ln:find("train") or ln:find("platform") or ln:find("station")) then local nm, pos = (d.Name:gsub("_", " ")), d.Position + Vector3.new(0, 4, 0) btn(pM, nm, ("%d, %d, %d"):format(pos.X, pos.Y, pos.Z), function() go(pos, nm) end) end end local wp = WS:FindFirstChild("Waypoint") if wp and wp:IsA("BasePart") then btn(pM, "Waypoint", nil, function() go(wp.Position + Vector3.new(0, 4, 0), "Waypoint") end) end local pq = "" inp(pM, "Player (part of the nickname)...", function(t) pq = t end) btn(pM, "Teleport to that player", nil, function() local q = pq:lower() for _, p in ipairs(P:GetPlayers()) do local r = q ~= "" and p ~= LP and (p.Name:lower():find(q, 1, true) or p.DisplayName:lower():find(q, 1, true)) and p.Character and p.Character:FindFirstChild("HumanoidRootPart") if r then go(r.Position - r.CFrame.LookVector * 4 + Vector3.new(0, 2, 0), p.Name) return end end note("Player not found / not loaded") end) sel("Visuals") -- loop (throttled), hotkeys, unload local fov = Drawing.new("Circle") fov.Thickness, fov.Filled, fov.Color, fov.Transparency = 1, false, Color3.new(1, 1, 1), 0.6 local tScan, tPick, tSlow = 0, 0, 0 tr(RS.RenderStepped:Connect(function() if not alive then return end Cam = WS.CurrentCamera local now = os.clock() if now - tScan > 0.2 then tScan = now scan() end if C.SilentAim and now - tPick > 0.05 then tPick = now pick() end if now - tSlow > 1 then tSlow = now if C.SilentAim then refreshBal() end if C.NoCorpses then corpses(true) end end if C.ESP then labels() end fov.Visible = C.SilentAim if C.SilentAim then fov.Radius, fov.Position = C.FOV, Cam.ViewportSize / 2 end end)) tr(UIS.InputBegan:Connect(function(i, g) if g then return end local k = i.KeyCode if k == Enum.KeyCode.RightShift then main.Visible = not main.Visible elseif k == Enum.KeyCode.F3 then savePos(nil) elseif k == Enum.KeyCode.F6 then cancelTP() elseif k == Enum.KeyCode.B then if prev then go(prev, "Previous spot") end elseif k == Enum.KeyCode.T and C.CrosshairTP then local rp = RaycastParams.new() rp.FilterType = Enum.RaycastFilterType.Exclude rp.FilterDescendantsInstances = { LP.Character } local sz = Cam.ViewportSize local ray = Cam:ViewportPointToRay(sz.X / 2, sz.Y / 2) local r = WS:Raycast(ray.Origin, ray.Direction * 3000, rp) if r then go(r.Position + Vector3.new(0, 3.5, 0), "Crosshair") else note("Nothing under the crosshair") end elseif k == Enum.KeyCode.End then shared.__ER_UNLOAD() end end)) shared.__ER_UNLOAD = function() alive = false cancelTP() for _, c in ipairs(conns) do pcall(c.Disconnect, c) end if rcon then rcon:Disconnect() end foliage(false) C.FPS = false fps(false) for c in pairs(ent) do drop(c) end pcall(fov.Remove, fov) pcall(gui.Destroy, gui) shared.__ER_UNLOAD = nil end corpses(C.NoCorpses) if C.NoTrees then foliage(true) end note("RightShift = menu | trees and corpses removed")