Skip to content

Troubleshooting ​

Find common symptoms, their causes, and the steps to resolve them.

SymptomCheck or correction
Script is not listedUse Open Lua Folder, save directly in that folder with a lowercase .lua extension, then Refresh Scripts. Subfolder modules are not entry scripts.
File fails before executionCheck that it is a regular nonempty text file no larger than 1 MiB; entry symlinks and bytecode are not accepted.
Status reports a syntax errorOpen the reported file and line, correct the Lua source, save, and Reload.
attempt to index a nil value for a playerA disconnected slot or absent selection can return nil; test it before reading fields.
Wrong person after a player leavesPreserve and validate the ID/generation pair; a slot is reusable.
Overlay disappears immediatelyDraw from script.on_tick(); initial/menu callback drawing is cleared before publication.
Overlay has wrong scale or positionCoordinates are pixels, not normalized 0–1 coordinates; inspect draw.screen().
Toggle changes in the menu but local state does notcontrol:set() does not invoke the callback; update your own state too.
Menu option no longer existsA removed control handle is stale; do not reuse it.
Page has no rename, set, or remove methodThose are control methods; MenuPage only exposes page builders.
Callback budget exceededReturn promptly, avoid busy loops, and spread work across timers/updates.
WAIT/native sleep failsUse script.every() or script.after().
Native name returns nilCheck namespace casing, spelling, and leading underscores against the index.
Native argument count/type errorMatch the declared prototype; a pointer argument is not an automatically allocated out-parameter.
A hash loses precisionUse an exact integer or 0x string for 64-bit bridge hashes; do not round through a floating-point number.
print fails for several valuesBuild one string with tostring, concatenation, or string.format.
io, os, debug, or coroutine is missingThose standard libraries are not opened by Harmony.
require cannot find a moduleCheck LUA/module.lua or LUA/module/init.lua; native DLL module loading is disabled.
Timer/option/drawing limit reachedReuse controls and callbacks; avoid registering them every update.
Social Club returns busyThe service is shared; wait and retry in a bounded way.
Network registration is unavailableCheck the corresponding availability function and wait for a stable active session.
A filter stopped after a session changeRules are session-scoped and expire; a retained numeric rule ID is not proof it remains installed.
Observer return true does not blockObserver returns are ignored; filtering is performed by pre-registered rules before callback delivery.
Scan/patch rejected in a callbackThose operations are initial-load-only.
A memory scan result is truthy but unusableIt returns a Pointer even on failure; check pointer:is_null().
Memory/string range errorCheck ownership, full bounds, page access, and string termination; do not continue with an invalid pointer.
Real names appear in a custom overlay while streamingYour script owns its display policy; use labels such as player_<id> instead of raw identity fields.

When reporting a problem, include the Harmony build, script.api_version, script filename, relevant Status/log text, minimal source that reproduces the issue, and whether it occurred while loading, in a menu callback, or during updates. Remove real names and IDs from shared diagnostic output when they are not needed.