Guide: Visuals From Luau
Driving the ESP from a script: per-target profiles, distance filtering, and reacting to what is happening in game.
The External draws the overlay itself — you do not draw shapes, you configure what it draws. That means a visual script is a loop that reads game state and writes world.settings, rather than one that pushes pixels.
The pay-off is that everything stays stream proof and outside the instance tree for free.
-- Master switches.
world.settings.esp_enabled = true
world.settings.esp_showPlayers = true
world.settings.esp_streamProof = true
world.settings.esp_onlyRoblox = true
-- Start from nothing, then turn on what you want.
for _, profile in ipairs({ "enemy", "self", "npc" }) do
local target = world.settings[profile]
target.enabled = false
target.showBox = false
target.showNames = false
target.showChams = false
target.showDistance = false
target.skeleton = false
end
local enemy = world.settings.enemy
enemy.enabled = true
enemy.showBox = true
enemy.showNames = true
enemy.showDistance = true
enemy.maxDistance = 500Because the settings table is live, a loop can change the configuration as the situation changes — widening the range when nobody is close, dropping detail when a lot of people are.
task.spawn(function()
while true do
local dm = get_datamodel()
local players = dm ~= 0 and find_first_child(dm, "Players") or 0
if players ~= 0 then
local count = #get_children(players)
local enemy = world.settings.enemy
if count > 20 then
-- Busy server: boxes only, closer in.
enemy.showNames = false
enemy.skeleton = false
enemy.maxDistance = 250
else
enemy.showNames = true
enemy.skeleton = true
enemy.maxDistance = 750
end
end
wait(1)
end
end)One second is plenty
Configuration changes do not need to happen per frame — the overlay redraws itself. A slow loop here costs nothing and keeps the memory reads down.
The same table carries the world-level modifications, which pair naturally with an ESP setup.
world.settings.fullbright = true
world.settings.clearAtmosphere = true
world.settings.noGrass = true
world.settings.clearWater = true
world.settings.useTimeOfDay = true
world.settings.timeOfDay = 14 -- early afternoon
world.settings.unlockFps = true
world.settings.fpsTarget = 240Every field is listed in the Configuration chapter.