94 lines
4.1 KiB
Go
94 lines
4.1 KiB
Go
package routers
|
||
|
||
import (
|
||
"context"
|
||
"sync"
|
||
)
|
||
|
||
var _ = sync.Mutex{}
|
||
var _ = context.Background
|
||
|
||
//
|
||
// GM 控制台(ALT+F1)职业命令族 —— GmJobTake / GmJobStart / GmJobQuit /
|
||
// GmJobPromote / GmSetJobLevel / GmJobEnd。
|
||
// 移植自捐赠端 DremkaPS(2026-09-24)。他们这一族里 GmTaskRecord4229938 的 TaskState 字节
|
||
// 标了 "verified in game",是整份捐赠材料里极少数实机验证过的东西;其余(钱包 / 台词 / 过场 /
|
||
// 敌群)捐赠端自己承认"排队做完、都还没实机验证"。
|
||
// ⛑ 三条本服的取舍,与捐赠端不同:
|
||
// 1. 推送是「合并」不是「替换」。捐赠端把 spiritJobs 整个换成 GM 记录,本服则把它
|
||
// 叠加在 RuntimePayloadFactory.SpiritJobInfo4229938 配置驱动的那份之上 ——
|
||
// 否则玩家在控制台点一条职业命令,角色原本的职业就整片消失。
|
||
// 2. CurrentJob 默认 100(Jobless)不是 0。0 不是合法 UrbanJobConfig id,客户端
|
||
// SpiritJobManager 会去解引用一个不存在的配置(本服踩过,见
|
||
// RuntimePayloadFactory.DefaultSpiritJobInfo4229938 的注释)。
|
||
// 3. 职业记录带天赋。捐赠端因无表而填 TalentInfo = null / RegisterTime = 0;
|
||
// 本服统一走 RuntimePayloadFactory.GmJobRecord4229938,与本服 7k 验证过的 wire 一致。
|
||
// 捐赠端注释还点明了一件关键事实:客户端自己在本地生成 GM 实体,GM invoke 的调用点根本不看
|
||
// 返回值。所以这些 handler 的价值是「服务端认得这条指令、不再掉进 unknown-methods.log,并且
|
||
// 能把职业变化真的推给客户端」,而不是「返回一个客户端会用的值」。
|
||
//
|
||
func GameRouter_GmJobs_GmJobTake(ctx context.Context, conn any, msg any) any {
|
||
// Router implementation for GameRouter_GmJobs_GmJobTake
|
||
var zero any; return zero
|
||
}
|
||
|
||
func GameRouter_GmJobs_GmJobStart(ctx context.Context, conn any, msg any) any {
|
||
// Router implementation for GameRouter_GmJobs_GmJobStart
|
||
var zero any; return zero
|
||
}
|
||
|
||
func GameRouter_GmJobs_GmJobQuit(ctx context.Context, conn any, msg any) any {
|
||
// Router implementation for GameRouter_GmJobs_GmJobQuit
|
||
var zero any; return zero
|
||
}
|
||
|
||
func GameRouter_GmJobs_GmJobPromote(ctx context.Context, conn any, msg any) any {
|
||
// Router implementation for GameRouter_GmJobs_GmJobPromote
|
||
var zero any; return zero
|
||
}
|
||
|
||
func GameRouter_GmJobs_GmSetJobLevel(ctx context.Context, conn any, msg any) any {
|
||
// Router implementation for GameRouter_GmJobs_GmSetJobLevel
|
||
var zero any; return zero
|
||
}
|
||
|
||
//
|
||
// GmJobEnd(65110787) 是这一族里唯一不带参数的(客户端序列化器为空),
|
||
// 结束的是「当前职业」而不是命令里点名的那个。
|
||
//
|
||
func GameRouter_GmJobs_GmJobEnd(ctx context.Context, conn any, msg any) any {
|
||
// Router implementation for GameRouter_GmJobs_GmJobEnd
|
||
var zero any; return zero
|
||
}
|
||
|
||
// ------------------------------------------------------------------ shared path
|
||
func GameRouter_GmJobs_HandleGmJobAsync(ctx context.Context, conn any, msg any, action any) any {
|
||
// Router implementation for GameRouter_GmJobs_HandleGmJobAsync
|
||
var zero any; return zero
|
||
}
|
||
|
||
//
|
||
// 解参数。契约解码失败时退回裸字节 —— GM 控制台的序列化器是客户端自己生成的,
|
||
// 服务端这一侧的契约一旦和它对不齐,最坏情况应该是「还能读出 jobClassId」而不是整条丢弃。
|
||
//
|
||
func GameRouter_GmJobs_ReadGmJobArgs(ctx context.Context, msg any) any {
|
||
// Router implementation for GameRouter_GmJobs_ReadGmJobArgs
|
||
var zero any; return zero
|
||
}
|
||
|
||
func GameRouter_GmJobs_ApplyGmJob(ctx context.Context, state any, jobClassId uint32, level byte, action any) any {
|
||
// Router implementation for GameRouter_GmJobs_ApplyGmJob
|
||
var zero any; return zero
|
||
}
|
||
|
||
//
|
||
// 推 SyncSpiritJobInfo(64913222)。
|
||
// ⛑ 合并而非替换:以 RuntimePayloadFactory.SpiritJobInfo4229938 的配置结果为底,
|
||
// GM 记录覆盖/追加在上面。currentJob 只有在 GM 真的动过职业之后才改用控制台的值。
|
||
//
|
||
func GameRouter_GmJobs_PushGmJobInfoAsync(ctx context.Context, conn any, state any, trigger string) any {
|
||
// Router implementation for GameRouter_GmJobs_PushGmJobInfoAsync
|
||
var zero any; return zero
|
||
}
|
||
|