73 lines
2.9 KiB
Go
73 lines
2.9 KiB
Go
package routers
|
|
|
|
import (
|
|
"context"
|
|
"sync"
|
|
)
|
|
|
|
var _ = sync.Mutex{}
|
|
var _ = context.Background
|
|
|
|
//
|
|
// In-game GM console (ALT+F1) wallet and backpack grants for build 4229938.
|
|
// The panel calls the native UX.Game.IGmToGamePlayer interface and both commands return void,
|
|
// so the only observable effect is the push this router sends back:
|
|
// AddMoney(money, gold, bindingGold, allowDebt) -> SyncMoney (authoritative totals) + SyncMoneyAdd popup
|
|
// AddItem(itemTemplateId, count, isBind) -> SyncBackpackItemChanged (add or update stack)
|
|
// The wire shapes are hand-decoded from the client metadata because these two commands have no
|
|
// generated contract class; everything else keeps using the typed-neutral compatibility fallback.
|
|
//
|
|
func GameRouter_GmWallet_AddMoney(ctx context.Context, conn any, msg any) any {
|
|
// Router implementation for GameRouter_GmWallet_AddMoney
|
|
var zero any; return zero
|
|
}
|
|
|
|
func GameRouter_GmWallet_AddItem(ctx context.Context, conn any, msg any) any {
|
|
// Router implementation for GameRouter_GmWallet_AddItem
|
|
var zero any; return zero
|
|
}
|
|
|
|
// UX.Game.IGmToGamePlayer.AddMoney(money, gold, bindingGold, allowDebt): three 8-byte amounts
|
|
// followed by one bool (the captured 25-byte panel packet). Gold and binding gold may be absent
|
|
// in older bodies, so decode whatever complete fields are present and default the rest to zero.
|
|
func GameRouter_GmWallet_ParseMoneyGrant4229938(ctx context.Context, body []byte) any {
|
|
// Router implementation for GameRouter_GmWallet_ParseMoneyGrant4229938
|
|
var zero any; return zero
|
|
}
|
|
|
|
// The native panel writes whole amounts as int64 (1 -> 01 00 00 00 00 00 00 00) while the
|
|
// signature declares the field as a double, so accept either reading: the int64 form of a
|
|
// genuine double is always astronomically large, and the double form of a whole amount is a
|
|
// denormal or a nonsense fraction.
|
|
func GameRouter_GmWallet_ReadAmount4229938(ctx context.Context, body []byte, offset int32) float64 {
|
|
// Router implementation for GameRouter_GmWallet_ReadAmount4229938
|
|
return 0
|
|
}
|
|
|
|
// UX.Game.IGmToGamePlayer.AddItem(itemTemplateId, count, isBind) is 9 bytes on the wire. Item
|
|
// ids and counts are 4-byte fields; tolerate a hypothetical 8-byte variant by clamping instead
|
|
// of throwing, and always answer OK so the panel never hangs on an unknown body.
|
|
func GameRouter_GmWallet_ParseItemGrant4229938(ctx context.Context, body []byte) any {
|
|
// Router implementation for GameRouter_GmWallet_ParseItemGrant4229938
|
|
var zero any; return zero
|
|
}
|
|
|
|
func GameRouter_GmWallet_ClampToUInt32(ctx context.Context, value uint64) uint32 {
|
|
// Router implementation for GameRouter_GmWallet_ClampToUInt32
|
|
return 0
|
|
}
|
|
|
|
type MoneyGrant4229938 struct {
|
|
Money float64 `json:"money"`
|
|
Gold float64 `json:"gold"`
|
|
BindingGold float64 `json:"bindingGold"`
|
|
AllowDebt bool `json:"allowDebt"`
|
|
}
|
|
|
|
type ItemGrant4229938 struct {
|
|
TemplateId uint32 `json:"templateId"`
|
|
Count uint32 `json:"count"`
|
|
IsBind bool `json:"isBind"`
|
|
}
|
|
|