Basic
selectorsCommon direct target groups and their aliases.
all · everyone · * · others · other · me · self · random · nearest · closest · farthest · furthest
Load the script, understand the split/offline cache, find commands, build .na/.iy plugins with Plugin Maker, check manual plugin examples, and copy useful stuff without digging through walls of text.
These launchers prefer GitHub, save a validated local loader, and fall back to that copy when GitHub cannot be reached.
local url = "https://raw.githubusercontent.com/ltseverydayyou/Nameless-Admin/main/Source.lua"
local cache = "NA-split/Source.lua"
local ok, source = pcall(game.HttpGet, game, url)
local chunk, compileError
if ok and type(source) == "string" and source ~= "" then
chunk, compileError = loadstring(source)
if chunk and type(writefile) == "function" then
if type(makefolder) == "function" then pcall(makefolder, "NA-split") end
pcall(writefile, cache, source)
end
end
if not chunk and type(readfile) == "function" then
local readOk, cached = pcall(readfile, cache)
if readOk and type(cached) == "string" and cached ~= "" then
chunk, compileError = loadstring(cached)
end
end
assert(chunk, compileError or "Nameless Admin loader unavailable and no local cache exists")
chunk()
local url = "https://raw.githubusercontent.com/ltseverydayyou/Nameless-Admin/main/NA%20testing.lua"
local cache = "NA-split/NA testing.lua"
local ok, source = pcall(game.HttpGet, game, url)
local chunk, compileError
if ok and type(source) == "string" and source ~= "" then
chunk, compileError = loadstring(source)
if chunk and type(writefile) == "function" then
if type(makefolder) == "function" then pcall(makefolder, "NA-split") end
pcall(writefile, cache, source)
end
end
if not chunk and type(readfile) == "function" then
local readOk, cached = pcall(readfile, cache)
if readOk and type(cached) == "string" and cached ~= "" then
chunk, compileError = loadstring(cached)
end
end
assert(chunk, compileError or "Nameless Admin testing loader unavailable and no local cache exists")
chunk()
Nameless Admin no longer ships its entire runtime as one huge source unit. The small loader coordinates ordered chunks, version checks, local caching, and outage fallback.
Source.lua and NA testing.lua are small bootstraps. They compile and execute the ordered part-XXX.lua files independently in the same private runtime environment instead of feeding the executor one multi-megabyte source unit.
NA-split/common/manifest.lua carries the runtime build version and chunk count. On startup NA fetches the small remote manifest and compares it with the complete local cache.
If the remote runtime version is newer, NA downloads the required chunks, runs them, then writes the chunk files and finally the new manifest. If versions match, it loads the local chunks instead of redownloading them.
The active bootstrap is cached too: NA-split/Source.lua or NA-split/NA testing.lua. The manifest exposes a separate loader_version, so loader updates do not require pointless redownloads on every run.
The resilient launcher first tries the remote loader. If that request or compile fails, it reads the matching local loader. That cached loader can then use the already-cached manifest and runtime chunks when the remote manifest is unavailable.
Offline fallback cannot exist before anything has been cached. A user needs one successful online run (or a manually supplied local loader + complete chunk cache) before NA can survive a GitHub outage.
The normal cache lives in the executor workspace. NA also recognizes the older nested chunk-cache roots for compatibility.
NA-split/
├── Source.lua
├── .Source_lua.version
├── NA testing.lua
├── .NA_testing_lua.version
└── common/
├── manifest.lua
├── part-001.lua
├── part-002.lua
└── ...
Try GitHub. Compile-check the response. Save a usable loader locally.
Read any complete local cache, then check the remote manifest when available.
Use matching local chunks, or fetch the newer remote set when the runtime version changed.
After a successful remote load, write chunk files first and the new manifest last so an interrupted update does not advertise an incomplete cache.
NA-split/common/, Nameless-Admin/NA-split/common/, and Nameless Admin/NA-split/common/. The matching loader cache is stored one directory above common/ for the selected root.
Short version of what Nameless Admin is built around.
Admin command workflow with aliases, arguments, patched commands and quick search.
Player selectors support aliases, exact UserId/name/display targeting, unions, include/exclude filters, teams, radius checks, cursor targeting, and persistent loop targets.
Native .na and Infinite Yield-style .iy support, plus a built-in Plugin Maker with visual actions, code editors, ServiceResolver service selection, preview and installation.
Command bar, settings, notifications, user buttons and mobile-aware controls.
Versioned runtime chunks plus a persistent loader/chunk cache reduce giant compile units and provide a local fallback when GitHub is unavailable.
Webhook helpers, teleport scripts, server info copying and Bloxstrap RPC text.
No long guide. Just the normal flow.
Run the main loader from your executor.
Press the prefix key. Default is ;.
Try fly 3, noclip or view random.
Run pluginmaker to build one visually, or drop an existing .na/.iy file in the right plugin folder and reload it.
Use these anywhere a command accepts a player argument. Examples: fling nearest, view alive+closest, hitbox all-me 8, bring %red, and tp userid:123456.
Common direct target groups and their aliases.
all · everyone · * · others · other · me · self · random · nearest · closest · farthest · furthest
Target teammates or players outside your team. Neutral/no-team players are treated as nonteam.
team · teammate · teammates · allies · ally · nonteam · nonteams · noteam · noteams · notteam · enemies · enemy
Target players by team name prefix.
%<team prefix>
Target by character state, rig type, or basic avatar checks.
alive · dead · seated · sat · stood · standing · r6 · r15 · invisible · bacon · slenders · short
Target friends or non-friends.
friends · friend · nonfriends · nonfriend
Selectors that carry a number or query inside the argument.
#3 · 3 · age30 · group123456 · rad50 · cursor
Use NPC selectors for supported NPC-aware commands. A selector may be placed after npc:, npcs:, or inside brackets.
npc · npcs · npc:nearest · npc:[alive] · npcs:rad50 · npc:[nearest,farthest]
Plain text matches usernames or display names by prefix. Prefixing the query with @ restricts it to usernames.
ghost · displaynameprefix · @usernameprefix
Choose which player field is searched instead of relying on normal username/display-name matching.
userid:<id> · id:<id> · username:<prefix> · name:<prefix> · display:<prefix>
Join separate result groups with a comma or pipe. Within one group, use + to narrow the current results and - to remove matches.
nearest,farthest · nearest|farthest · alive+nearest · all-me · others-dead · team+rad50
Long-running target commands resolve the selector first, then remember each matched player by UserId.
loopfling nearest · bang random · glue username:player
Dedicated ESP commands for all players, enemies/nonteam, allies, and specific teams.
Normal player ESP plus explicit all-player reset.
esp · espplayers · playeresp · espall · allesp · espallplayers
Targets players outside your team. In no-team games, it targets all other players.
espenemies · espenemy · espnonteam · espnonteams · espnoteam · espnoteams
Targets only your current team.
espallies · espally · espteammates · espteamates
Targets players whose team name starts with the given text.
espteam <team prefix> · teamesp · espteamname · espbyteam · locateteam
Same targeting modes as ESP, but without the text labels.
chamsenemies · chamsnonteam · chamsallies · chamsteammates · chamsteam <team prefix>
Turns off player ESP/chams modes.
unesp · unchams · unespteam · unespenemies · unespallies · unchamsteam
These are useful but easy to miss when only browsing the raw command list.
pesp, pespfind, folderesp, modelesp, unanchored, collisionesp, nocollisionesp, and matching un... commands.
aura [distance] and npcaura [distance] repeatedly touch nearby targets with your equipped tool. unaura and unnpcaura stop them.
hitbox <player/selector> {size} supports selectors like nonteam, enemies, %red, and rad50. unhitbox removes it.
loop, unloop, repeat, propertychanged, and unpropertychanged can rerun commands or react to instance changes.
addalias, removealias, clearaliases, addbutton, and removebutton let users make shortcuts and mobile buttons.
cmdbar2 opens the HD Admin-style command bar. The docs still pull commands.json for searchable command cards.
pluginmaker / makeplugin opens the visual .na/.iy builder with actions, custom code, ServiceResolver services, preview and install support.
Build native .na or Infinite Yield-style .iy plugins inside Nameless Admin. The builder is aimed at users who do not want to write the entire plugin by hand, but it still exposes raw startup and command code when needed.
The command opens the resizable Plugin Maker window.
pluginmaker
Switch the top-right format button between native NA and Infinite Yield-style output.
.NA ⇄ .IY
Add, duplicate, remove and select commands. Each command can have aliases, an argument hint, description, Requires Args, Override Alias, and an optional user button.
Stack actions in order without writing the command body yourself. Actions can be moved up/down or removed.
Plugin Startup Code runs when the generated plugin loads. Command Code runs inside the selected command after its visual actions.
Select only the Roblox services the plugin needs. The picker is searchable, supports Common / All / Clear presets and custom service names, and generated service locals resolve through NA's ServiceResolver.
Preview the complete generated source or copy it before saving. Save operations compile-check the generated Lua/Luau without executing the generated plugin first.
Save to the executor workspace or write directly to the correct NA plugin folder and reload plugins. Existing filenames prompt for overwrite, copy, backup-and-replace, or cancel.
The Edit button lists installed .na/.iy files with search. Existing raw source can be edited, compile-checked, written back and reloaded.
The Plugins button opens NA's normal plugin manager so enabled state, reloads and file management stay in the main plugin system.
Notify
Run NA Command
Load URL / loadstring
Wait
Print
Copy Text
Run Command - Mobile Only
Run Command - PC Only
Notify - Mobile Only
Notify - PC Only
Add User Button
Remove User Button
Stop Command
Custom Lua
Text/command actions can insert command arguments and player/session values without manual string concatenation.
{1} · {2} · {args} · {user} · {display} · {placeid} · {jobid}
Commands can create a plugin user button and choose whether the button remembers typed arguments. Actions can also add or remove buttons at runtime.
loadstring(game:HttpGet("https://raw.githubusercontent.com/username/repository/main/script.lua"))()
-- Select Players, Workspace and TweenService in the Services picker.
-- Plugin Maker creates these locals through NA's ServiceResolver:
print(LocalPlayer and LocalPlayer.Name)
print(Workspace)
print(TweenService)
-- Lazy access is also available:
local HttpService = Services.HttpService
-- Native .na command code can access the resolver/context directly:
local PlayersRaw = ctx.ServiceResolver.gs("Players")
local PlayersResolved = ctx.ServiceResolver.cs("Players")
local PlayersFromContext = ctx.Services.Players
nil when it is unavailable in the current client/context.Players or TweenService. Selecting Players also generates LocalPlayer.ctx for its generated/custom command code.Manual native .na plugin API reference. If you do not want to write the file from scratch, use the Plugin Maker above.
local plugin = Plugin.new("Example", "Manual plugin example")
plugin:cmd("hello", "hi")
-- :args(text) shows the usage hint in command lists and autofill.
:args("<name>")
-- :info(text) is the command description.
:info("Say hi")
-- :requiresArgs() blocks empty command input.
:requiresArgs()
-- :userButton(...) creates a temporary plugin button when the plugin loads.
:userButton({ Label = "Hello", SaveArgs = true })
-- :run(function(ctx, ...)) is the command code.
:run(function(ctx, name)
ctx:notify("Hello " .. tostring(name), 3)
end)
-- OverrideAliases is opt-in. Use it only when this plugin intentionally
-- needs to take a base NA alias that already exists.
-- Without it, the conflict is remapped to plugin:<alias>.
-- Another plugin alias or a saved user alias is not replaced.
-- The original base alias returns when the plugin is disabled, unloaded, or reloaded.
--
-- plugin:cmd("fly", "customfly")
-- :OverrideAliases()
-- :args("[speed]")
-- :info("Custom replacement for the base fly command")
-- :run(function(ctx, speed)
-- ctx:notify("Custom fly speed: " .. tostring(speed or "default"), 3)
-- end)
plugin:cmd("fastfly")
:info("Starts fly at speed 50")
:run(function(ctx)
ctx:run("fly 50")
end)
plugin:cmd("torandom")
:info("Teleports to a random player")
:run(function(ctx)
ctx:run("to", "random")
end)
plugin:cmd("clipagain")
:info("Runs noclip from a table command call")
:run(function(ctx)
ctx:run({"noclip"})
end)
plugin:cmd("note")
:args("<text>")
:info("Shows a notification")
:requiresArgs()
:userButton({ Label = "Note", SaveArgs = true })
:run(function(ctx, ...)
ctx:notify(table.concat({...}, " "), 3)
end)
PluginUI.addUserButton("Noclip", "noclip")
PluginUI.addToggleButton("Clip", "noclip", "clip")
PluginUI.addUserButton({ Label = "Fly", Command = "fly", SaveArgs = true })
PluginUI.removeUserButton("Fly")
plugin:cmd("panelon")
:info("Creates a mobile-only panel button")
:buttonOnRun({
Id = "panel-toggle",
Label = "Panel",
Command = "panelon",
Command2 = "paneloff",
MobileOnly = true
})
:run(function(ctx)
if ctx.IsOnMobile then
ctx:notify("Panel button ready", 2)
end
end)
plugin:cmd("paneloff")
:info("Removes the panel button")
:removeButtonOnRun("panel-toggle")
:run(function(ctx)
ctx:notify("Panel button removed", 2)
end)
plugin:cmd("makenotebutton")
:info("Creates the Note button when this command is run")
:run(function(ctx)
ctx:addUserButton({
Label = "Note",
Command = "note",
SaveArgs = true
})
end)
-- Useful ctx values inside :run(...):
-- ctx:notify("message", 3)
-- ctx:run("fly 50")
-- ctx:run("to", "random")
-- ctx:run({"noclip"})
-- ctx:addUserButton({ Label = "Fly", Command = "fly", SaveArgs = true })
-- ctx:removeUserButton("Fly")
-- ctx.IsOnMobile / ctx.IsOnPC / ctx.IsMobile / ctx.IsPC
-- IsOnMobile / IsOnPC / IsMobile / IsPC
-- NA_GRAB_BODY
-- getRoot(character), getChar(), getHum(character)
-- ctx.Services.Players
-- ctx.ServiceResolver.cs("Players") -- resolved/cloneref service
-- ctx.ServiceResolver.gs("Players") -- raw service
-- ctx.LocalPlayer
-- ctx.UI
-- ctx.File
-- ctx.Path
Nameless-Admin/Plugins
.na plugins use Plugin.new(...).
Nameless-Admin/PluginsIY
.iy plugins stay in the Infinite Yield style folder.
Plugins can create temporary user buttons, toggle buttons and command-run buttons.
ctx gives helpers for notifications, command calls, user buttons, UI/file data, device flags, LocalPlayer, Services and ServiceResolver.
Plugin service access is routed through NA's resolver. Use ctx.Services.Name, ctx.ServiceResolver.cs(name) for the resolved/cloneref service, or ctx.ServiceResolver.gs(name) for the raw service.
Run pluginmaker for the built-in visual/low-code builder, service picker, source preview, installation and existing-plugin editor.
Add :OverrideAliases() after plugin:cmd(...) to claim conflicting base NA aliases. Without it, conflicts are renamed to plugin:<alias>.
Table and Infinite Yield-style commands use OverrideAliases = true. Plugin-owned aliases and saved user aliases remain protected.
Overridden base aliases are restored when the plugin is disabled, unloaded, removed, or reloaded.
-- Native .na builder form
plugin:cmd("fly", "customfly")
:OverrideAliases()
:info("Custom replacement for the base fly command")
:run(function(ctx, speed)
ctx:notify("Custom fly speed: " .. tostring(speed or "default"), 3)
end)
-- Table / Infinite Yield-style command form
return {
PluginName = "Override Example",
Commands = {
fly = {
ListName = "fly",
Aliases = {"customfly"},
OverrideAliases = true,
Description = "Custom replacement for the base fly command",
Function = function(args, speaker)
print("Custom fly speed:", args[1] or "default")
end
}
}
}
The commands Nameless Admin has.
Command overrides and fixes Nameless Admin includes.