20 lines
1.3 KiB
Go
20 lines
1.3 KiB
Go
package methods
|
|
|
|
//
|
|
// SyncTaskRoleTeam (64534724) — the server's handle on the character wheel / Z rotation list.
|
|
// Signature (dump.cs:1732654):
|
|
// void SyncTaskRoleTeam(uint[] roleTeam, uint[] enableRoleIds, uint tipRoleId, bool enableSwitch)
|
|
// Why this exists: pressing Z sends nothing at all (measured — 0 packets across a whole session),
|
|
// so the rotation list is client-side only. In lua the arrival path is
|
|
// SpiritManager.lua:233 -> GameToClientImpl.lua:2311 and it fills gSpiritManager.taskRoleTeam
|
|
// from enableRoleIds; the retail server never called it, which is why the client has always used
|
|
// its own fallback (the FightSpiritConfig rows with CanJoin=true — exactly the 15 the player sees).
|
|
// Payload notes: four bare arguments, so Inline is mandatory (no 0xFF/0x00 envelope). Both arrays
|
|
// are plain uint lists and therefore use the default Int7 count like every other List<uint>
|
|
// in these contracts (see Auto/Client4229938Contracts.Auto.cs InstalledApps).
|
|
// ⚠️ Safety: this is a standalone notify, never part of the login payload. Sending nothing is the
|
|
// default (see RosterSettings.SwitchableRoles) precisely so an encoding mistake here can brick
|
|
// nothing until the config opts in — unlike adding a field to the login contract, which did take
|
|
// the client down once. Do not move this into the login payload.
|
|
//
|