7.4 KiB
Standard Library Reference
Analysis of the shared Lua library at ../lib (/home/regela/Workspace/lua/lib/). Contains ~163 files across 17 directories (6.4MB total).
Currently Used by Project
| Module | Import | Purpose |
|---|---|---|
ffi |
Built-in LuaJIT | FFI to load libarz_core.so, imgui bindings |
encoding |
require("encoding") |
UTF-8 / CP1251 conversion |
cjson |
require("cjson") |
JSON encode/decode |
mimgui |
require("mimgui") |
ImGui binding for in-game UI |
samp.events |
require("samp.events") |
SA-MP event hooking (RPC/packets) |
lua_thread |
Global | Coroutine-based threading (MonetLoader built-in) |
High-Value Unused Libraries
SAMemory — Game Memory Access
Path: lib/SAMemory/
Size: 50+ files covering all game entity types
Direct FFI-based access to GTA SA game structures: CPed, CVehicle, CEntity, CCamera, CWorld, etc. Read player position, health, vehicle state, weapon data directly from memory.
Use cases for modules:
- Read player coordinates for location-based automation
- Check vehicle state (speed, health, passengers)
- Access weapon/ammo data
- Read game time, weather, gravity
Key files:
SAMemory/init.lua— main entry pointSAMemory/game/CPed.lua— player/NPC structuresSAMemory/game/CVehicle.lua— vehicle structuresSAMemory/game/CCamera.lua— camera state
requests.lua — HTTP Client
Path: lib/requests.lua (~270 lines)
Full HTTP/HTTPS client built on LuaSocket + LuaSec. Supports:
- GET, POST, PUT, DELETE methods
- Basic and Digest authentication
- Automatic HTTPS
- Cookie handling
- Custom headers
Use cases: External API calls, webhooks, data sync with remote servers.
inicfg.lua — INI Config Files
Path: lib/inicfg.lua (~150 lines)
Read/write .ini config files with sections. Auto-creates defaults.
local inicfg = require("inicfg")
local cfg = inicfg.load({section = {key = "default"}}, "mymod.ini")
cfg.section.key = "new_value"
inicfg.save(cfg, "mymod.ini")
Note: The framework already has DB persistence, but inicfg is useful for human-editable config files.
jsoncfg.lua — JSON Config Files
Path: lib/jsoncfg.lua (~150 lines)
Similar to inicfg but uses JSON format. Supports deep merge of defaults.
game/ — Game Constants
Path: lib/game/
| File | Content |
|---|---|
globals.lua (~650 lines) |
Script variables $0-$2000 |
models.lua (~500 lines) |
Object/vehicle model IDs |
weapons.lua (~100 lines) |
Weapon IDs and names |
keys.lua (~50 lines) |
Control key constants |
Use cases: Reference weapon names, vehicle model IDs, key bindings in modules.
Crypto & Encoding
| Module | Path | Purpose |
|---|---|---|
md5.lua |
lib/md5.lua |
MD5 hashing |
sha1/ |
lib/sha1/ |
SHA-1 hashing + HMAC (multiple implementations) |
basexx.lua |
lib/basexx.lua |
Base16, Base32, Base64 encoding/decoding |
Use cases: Data integrity checks, API signatures, obfuscation.
copas.lua — Async I/O
Path: lib/copas.lua (~1500 lines) + submodules
Coroutine-based async TCP/IP dispatcher. Non-blocking HTTP, FTP, SMTP.
Submodules:
copas/http.lua— async HTTP clientcopas/smtp.lua— async email sendingcopas/ftp.lua— async FTPcopas/timer.lua— timer supportcopas/lock.lua,queue.lua,semaphore.lua— async primitives
Note: The framework already uses Rust's tokio for async. Copas is an alternative for pure-Lua async if needed.
timerwheel.lua — Efficient Timers
Path: lib/timerwheel.lua (~300 lines)
O(1) timer wheel for managing many concurrent timers efficiently. Better than individual lua_thread coroutines when you have dozens of timers.
monethook.lua — Function Hooking
Path: lib/monethook.lua (~80 lines)
Inline function hooking for MonetLoader >= 2.8.0. Intercept game function calls at the assembly level.
Medium-Value Libraries
Math
| Module | Path | Purpose |
|---|---|---|
vector3d.lua |
lib/vector3d.lua |
3D vector ops (normalize, dot, cross) |
matrix3x3.lua |
lib/matrix3x3.lua |
3x3 matrix ops |
Networking Stack
| Module | Path | Purpose |
|---|---|---|
socket.lua |
lib/socket.lua |
LuaSocket TCP wrapper |
ssl.lua |
lib/ssl.lua |
LuaSec TLS/SSL |
socket/http.lua |
lib/socket/http.lua |
Low-level HTTP client |
socket/url.lua |
lib/socket/url.lua |
URL parsing (RFC 3986) |
socket/ftp.lua |
lib/socket/ftp.lua |
FTP client |
socket/smtp.lua |
lib/socket/smtp.lua |
SMTP client |
socket/headers.lua |
lib/socket/headers.lua |
HTTP header utils |
Prefer requests.lua over raw socket modules for HTTP.
Data Processing
| Module | Path | Purpose |
|---|---|---|
ltn12.lua |
lib/ltn12.lua |
Source/sink/pump data streaming |
mime.lua |
lib/mime.lua |
Base64, quoted-printable MIME encoding |
binaryheap.lua |
lib/binaryheap.lua |
Priority queue (O(log n)) |
Low-Value / Specialized
Android-Specific
| Module | Path | Purpose |
|---|---|---|
android/arizona.lua |
MonetLoader Arizona RP API | Only on Android |
android/jnienv.lua |
JNI environment helpers | Java/Lua interop |
android/jni-raw.lua |
Raw JNI access | Low-level |
android/jar/arzapi.jar |
Arizona API JAR | Binary |
Platform / Runtime
| Module | Path | Purpose |
|---|---|---|
MoonMonet/ |
Material Design 3 color generation | Theming |
monetloader.lua |
MonetLoader constants | TAG types |
moonloader.lua |
MoonLoader compat layer | Logging codes |
sa_renderfix.lua |
Screen scaling fixes | Rendering |
bitex.lua |
Bit extraction utilities | Bit manipulation |
widgets.lua |
SAMP widget constants | Vehicle/player keys |
sampfuncs.lua |
RPC/packet ID constants | SAMP protocol |
UI
| Module | Path | Purpose |
|---|---|---|
imgui_piemenu.lua |
Circular pie menu for imgui | Alternative menu |
webviews/ |
WebView integration | Android WebView + JAR |
SAMP Event System Deep Dive
Path: lib/samp/
The framework hooks all SAMP events via samp.events. Key files:
| File | Purpose |
|---|---|
samp/events.lua |
Main entry point, event registration |
samp/events/core.lua |
Event dispatcher (~200 lines) |
samp/events/handlers.lua |
Specialized RPC handlers (~150 lines) |
samp/events/bitstream_io.lua |
Binary data serialization (~300 lines) |
samp/events/utils.lua |
Helper functions |
samp/events/extra_types.lua |
Extended data types |
samp/raknet.lua |
RakNet protocol constants |
samp/synchronization.lua |
Player/vehicle sync state |
sampfuncs.lua |
RPC and packet ID constants |
The framework's setup_event_hooks() iterates over all entries in sampev.INTERFACE (OUTCOMING_RPCS, INCOMING_RPCS, OUTCOMING_PACKETS, INCOMING_PACKETS) and creates hooks for each event name. This gives modules access to all ~200+ SAMP events without manual registration.
Summary: Recommended for Integration
Priority order for adding to new modules:
- SAMemory — most powerful, enables location/state-aware automation
- game/* — essential constants for any game-interacting module
- requests.lua — if modules need external HTTP APIs
- md5/sha1/basexx — if data integrity or encoding needed
- inicfg/jsoncfg — if human-editable config files needed
- timerwheel — if module manages many concurrent timers