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

94 lines
4.1 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
}