Appearance
Engine natives
Installed into the client's Lua state by the injected engine. They exist only once the player is in the world, so guard on Nyx.Engine before calling them.
GUIDs are hex strings, never numbers: they are 64-bit and a Lua number is a double, so a numeric GUID would lose precision silently.
24 entry points, 24 documented.
Circle
lua
Nyx.Engine.Circle(x, y, radius, r, g, b, a)Screen-space circle.
draw.cpp
Clear
lua
Nyx.Engine.Clear()Drops every queued shape. Drawings persist until replaced.
draw.cpp
Line
lua
Nyx.Engine.Line(x1, y1, x2, y2, r, g, b, a)Screen-space line in render pixels from the top-left. Prefer Nyx.Draw.Line.
draw.cpp
Rect
lua
Nyx.Engine.Rect(x, y, w, h, r, g, b, a, filled)Screen-space rectangle. filled is 1 or 0.
draw.cpp
WorldCircle
lua
Nyx.Engine.WorldCircle(x, y, z, radius, r, g, b, a)Horizontal ring at a world position. radius is in yards.
draw.cpp
WorldLine
lua
Nyx.Engine.WorldLine(x1, y1, z1, x2, y2, z2, r, g, b, a)Line between two world positions, projected with the client camera.
draw.cpp
camdump
lua
Nyx.Engine.camdump([count]) -> array of floats straight from the camera struct, forfinding which field actually holds the field of view.
object_manager.cpp
camera
lua
Nyx.Engine.camera() -> table describing the client camera, plus the two runtimechecks that stand in for a static proof of its struct layout: it must sit near the player, and its 3x3 must be orthonormal.
object_manager.cpp
count
lua
Nyx.Engine.count() -> numberHow many objects the client currently has in memory. Varies as things enter and leave visibility, which is how you know it is reading live data.
object_manager.cpp
dump
lua
Nyx.Engine.dump(guid, offset, count [, "object"]) -> array of 32-bit words.Reads the descriptor block by default, or the object itself with "object". This is the tool for finding fields nobody has confirmed yet: snapshot, change something in game, snapshot again, and diff. It is how the fields above stopped being guesses, and it is deliberately generic so the next unknown does not need an engine change to chase.
object_manager.cpp
first
lua
Nyx.Engine.first() -> "guid/type"The first object in the manager list, for checking the walk is alive.
object_manager.cpp
fovcal
lua
Nyx.Engine.fovcal(x, y, z, screenX, screenY) -> fovFromVertical, fovFromHorizontalGiven a world point and where it ACTUALLY appears on screen, solve for the field of view that would put it there. Two independent solutions fall out, one from each screen axis; they should agree, and agreeing is what says the answer is real rather than a fudge factor.
object_manager.cpp
guid
lua
Nyx.Engine.guid() -> hex stringThe local player GUID. Falls back to the object manager, because the static global reads 0 on this client.
object_manager.cpp
log
lua
Nyx.Engine.log(text) — append a line to nyx.log. Chat is not always available(loading screens, early login), the log always is.
object_manager.cpp
los
lua
Nyx.Engine.los(x1,y1,z1, x2,y2,z2 [, flags]) -> clear, hitX, hitY, hitZ, fractionclear is true when nothing blocks the ray. The hit point and the fraction along the ray are returned too, which is what makes this usable for more than yes/no - ground height under a point, for instance.
object_manager.cpp
markWorldReady
lua
Nyx.Engine.markWorldReady()Tells the engine the world is up. The bridge calls this itself; a script has no reason to.
object_manager.cpp
mgrguid
lua
Nyx.Engine.mgrguid() -> hex stringThe local player GUID as the object manager reports it. Should equal Nyx.Engine.guid().
object_manager.cpp
reload
lua
Nyx.Engine.reload() — re-read the framework from disk after the current script callreturns. The whole point is editing a rotation without restarting the client.
object_manager.cpp
scan
lua
Nyx.Engine.scan(value) -> array of descriptor offsets whose 32-bit contents equalvalue. Called with a number the client's own Lua API produced, it turns a guessed field offset into a checked one.
object_manager.cpp
setfov
lua
Nyx.Engine.setfov(radians) - override the vertical field of view used forprojection. 0 restores the camera's own field.
object_manager.cpp
unit
lua
Nyx.Engine.unit([guid]) -> table, or nil when the object is not in memory. Omittingthe guid returns the local player.
object_manager.cpp
units
lua
Nyx.Engine.units() -> array of unit tables, every unit and player the client has inmemory. Bounded so a capital city cannot produce an unbounded table.
object_manager.cpp
viewvec
lua
Nyx.Engine.viewvec(x, y, z) -> forward, right, up in camera space.Exposes the dot products that projection is built on, without the field of view. That matters for calibration: the ORDER of units across the screen depends only on right/forward, not on the fov, so units can be matched to the client's own nameplates before the fov is known.
object_manager.cpp
w2s
lua
Nyx.Engine.w2s(x, y, z) -> screenX, screenY, onScreen. The projection the overlayitself uses, exposed so scripts can anchor the client's own FontStrings and textures at world positions - which is how text and health bars get drawn without a font dependency in the engine.
object_manager.cpp