Add marker persistence, respawn, group sync, and fix pushnumber ABI
Marker definitions (position + area ID) now persist across zone transitions. Entities are destroyed on map change but respawned automatically when the player approaches within 200y. Definitions are cleared on logout/exit via onShutdown hook. Group sync via addon messages (WMark prefix, colon-delimited protocol) with permission checks (raid leader/assist, party leader). Includes sync request/response for late joiners and roster change broadcasting. Fix lua_pushnumber calling convention: function is __thiscall (ECX=L, f64 on stack, ret 8), not __fastcall. The patched inreg fastcall was placing the f64's low dword in EDX, corrupting values. Other fixes: - Remove Bindings.xml from .toc files (explicit binding loader needed) - Remove remove_on_shutdown for markers (was killing hooks on logout) - Remove diagnostic entity check code (culling behavior understood) - New Lua APIs: SetMarkerDef, ClearMarkerDef, GetMarkerDef - Rename binding labels to marker colors
This commit is contained in:
@@ -766,6 +766,14 @@ pub fn installHooks() void {
|
||||
}
|
||||
}
|
||||
|
||||
/// Called from CGGameUI_Shutdown (logout/exit) — wipes marker definitions.
|
||||
/// Does NOT touch hooks or mutex. Entities are destroyed separately by
|
||||
/// worldCleanupDetour which fires after shutdown.
|
||||
pub fn onShutdown() void {
|
||||
for (&marker_defs) |*d| d.* = EMPTY_DEF;
|
||||
con.print("[markers] defs cleared (shutdown)\n");
|
||||
}
|
||||
|
||||
pub fn removeHooks() void {
|
||||
if (g_is_hook_owner) {
|
||||
// destroyAllEntities is idempotent — if worldCleanupDetour already ran,
|
||||
|
||||
Reference in New Issue
Block a user