Choosing an Executor
Not all executors are equal. The scripting techniques in this school — especially Executor APIs (hookfunction, getgc, getrawmetatable, file access) — require a fully UNC-compliant executor. Running them on a low-quality executor produces silent failures, crashes, or incomplete behavior.
What is UNC?
UNC (Unified Naming Convention) is a standard that defines which functions an executor must expose and how they must behave. A 99-100% UNC executor implements the full standard correctly.
Executors that partially implement UNC either:
- Don't have the function at all (
hookfunctionisnil) - Have it but it's broken (wrong behavior, crashes)
- Have renamed versions that don't match standard names
Scripts written to the UNC standard will not work reliably on partial executors.
Checking trusted executors and UNC scores
cheat.today is a community-maintained directory of Roblox executors with UNC compliance scores, trust ratings, and reviews. Before buying or using any executor, check it there first to see its UNC percentage and whether the community considers it safe.
Filter by UNC score — anything below 95% will likely have issues with the techniques in this school.
Recommended: Potassium
Potassium is the recommended executor for this workflow. It offers:
- Full UNC compliance (99-100%)
- Lifetime key for ~$15 — pay once, use forever, no subscription
- Stable injection
- Regular updates
A lifetime key at $15 is a one-time cost that's cheaper than a month of most competitors. Get it from the official Potassium site/Discord.
Executors that won't work for these tutorials
The following executors have incomplete UNC implementations or stability issues that will cause problems with the techniques covered here:
| Executor | Issue |
|---|---|
| Xeno | Incomplete UNC — many hooks and environment functions missing |
| Solara | Below 99% UNC, inconsistent hook behavior |
| Most free executors | Partial or no UNC implementation |
If you're using one of these and a script isn't working, the first thing to check is whether the function you're calling actually exists:
print(hookfunction) -- nil if not supported
print(getgc) -- nil if not supported
print(readfile) -- nil if not supported
Switching to Potassium fixes the majority of "it doesn't work" issues that are actually executor limitations.
For simpler scripts (no advanced APIs)
If you're only building scripts that use basic Roblox APIs (remote firing, property changes, Drawing API, BillboardGui) and don't need hookfunction, getgc, or file access, many executors will work fine. The limitation only matters for the advanced techniques in Executor APIs and Hooking & Intercepting.
For anything beyond that — use Potassium.
Injection workflow
- Open Roblox on your alt account (see Environment Setup)
- Join the game you want to test
- Open your executor
- Attach/inject into the Roblox process
- Open or paste your script (
build/script.obf.luaorbuild/script.lua) - Execute
During active development, use rb watch in your terminal so the script rebuilds every time you save a source file. Then just re-execute in your executor after each rebuild — no need to rejoin the game.