This repository has been archived on 2026-10-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Ananta-ps/pkg/protocol/methods/gm_utils_methods.go
T

31 lines
1.9 KiB
Go
Raw Normal View History

package methods
//
// IGameGMToClient.SyncRunGmUtils(String methodName, List<String> args) — methodId 66042045.
// S2C: asks the client to execute a local GM utility command by name — the same native entry
// point the in-game ALT+F1 admin console drives (L50Game.dll:
// RunGmUtils_Public_Static_String_String_List_1_String_0 / RunGmUtilsCommand_Private_Static_…
// resolves the method by name and invokes it with the string args). Execution happens entirely
// client-side, so locally-spawned units get the full AI / hit-reaction / stagger stack that
// server-authored packets cannot drive.
// Field order matches the IL2CPP method signature: string first, then the string list.
//
//
// IGameSceneToClient.SyncDoGmCommand(String command, String[] args) — methodId 68373443.
// S2C on the main scene interface (same one as SyncUnitOccur): asks the client to execute a
// GM command locally. Implemented by LX6.Service.GameSceneToClientImpl (iFix-proxy virtual in
// L50Game.dll), which parses the command line (ParseSpoonLines) and runs it through the local
// GM system. Second candidate channel besides SyncRunGmUtils(66042045).
// Field order matches the IL2CPP signature: string first, then the string array.
//
// ---------------------------------------------------------------------------
// 7-bit variants.
//
// Every other DTO in this protocol encodes collection counts as a biased 7-bit
// varint — that is literally the default of UxCollectionAttribute.Count, and
// lua/LuaGen/AutoGen/RPCSerializeAuto.lua writes list-of-string fields with
// Base.WriteList7Bit (540 uses vs 179 plain WriteList). The two DTOs above were
// originally written with an unsourced Int32 count, which is why the client kept
// receiving an empty first arg and falling back to its default NPC regardless of
// the id we sent. These variants exist so both encodings can be probed in one run.
// ---------------------------------------------------------------------------