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

107 lines
5.0 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
//
// Task (quest) publication.
// Two things have to arrive together for anything to appear in the Mission / task panel:
// 1. The rows. SyncTaskTitleGuideUnlock(64841491) reveals the panel tabs (its Lua impl calls
// gMapSystem.taskUtils:SetTaskTitleGuide), SyncPlayerAllTask(64260853) carries TaskConfig rows,
// and SyncPlayerAllTaskDebug(64423039) is the CSharpOnly twin that actually reaches the client's
// native task manager (64260853 has its own Lua impl which only reads `currentTask`).
// 2. The event list — eventPanelInfo.EventsInfo, and THIS is what the list renders. The
// panel rows are TaskEventConfig rows, not TaskConfig rows: the evidence branch's own
// investigation pinned it down by matching every visible row against both tables (7/7 hits in
// TaskEventConfig, 0/7 in TaskConfig), and traced it to
// L18.Spoon.Task.TaskManager.SyncPlayerAllEventPanel filling TaskManager.m_TaskEvents. Map
// markers are unrelated — those come from the client's own local TaskEventConfig, which is why
// the map always worked while the panel stayed empty.
// This is why publishing all 4342 TaskConfig rows changed nothing on its own: without EventsInfo
// the list has no data source at all. Everything is config-gated under gameplay.taskPanel
// so any half of it can be switched off without a rebuild.
// Known limit, not fixable here: accepting a task does not start any in-game flow, because the
// task graph is a Spoon resource (GameRes/Spoon/HotRaid/*.rcp, GameRes/Spoon/Task/*.tcp) and the
// local client has no hot-update layer for it. The list can show; the objectives cannot run.
//
func GameRouter_Tasks_PublishPlayerTasksAsync(ctx context.Context, rpcCtx *RpcContext) any {
// Router implementation for GameRouter_Tasks_PublishPlayerTasksAsync
var zero any; return zero
}
//
// R238(2026-10-03 随赛车移植)—— 进世界时**只**发布赛车挑战那几条任务行,
// 让客户端的 task manager 在玩家点「开始挑战」之前就拥有 60000147 的运行时节点。
// 刻意**不是** PublishTaskListAsync:
// · 载荷只有赛车那几条(~23 行),不是 4342 行的全量表 —— 全量表会让客户端
// 挑中一个无关挑战(60029952)并把手机换成「结算挑战」弹窗。
// · 通道是 SyncPlayerAllTaskDebug(64423039)(CSharpOnly 孪生包)。64260853 有
// 客户端 Lua 实现会吞掉 taskInfos,而且它正是 R236 的崩因嫌疑包。
// 状态保持 Accepted:客户端把它读成「可以开始 / 正在追踪的挑战」。
// 回滚 = gameplay.taskPanel.primeRacingChallengeTasks = false。
//
func GameRouter_Tasks_PublishRacingChallengeTasksAsync(ctx context.Context, rpcCtx *RpcContext) any {
// Router implementation for GameRouter_Tasks_PublishRacingChallengeTasksAsync
var zero any; return zero
}
//
// Unlock every TaskTitle (panel tab / chapter group). Ids come from TaskTitleCatalog.json,
// a projection of TaskTitleConfig.json (21 rows: 1..25 and 99).
//
func GameRouter_Tasks_PublishTaskTitleUnlocksAsync(ctx context.Context, session *GameSession) any {
// Router implementation for GameRouter_Tasks_PublishTaskTitleUnlocksAsync
var zero any; return zero
}
func GameRouter_Tasks_PublishTaskListAsync(ctx context.Context, session *GameSession) any {
// Router implementation for GameRouter_Tasks_PublishTaskListAsync
var zero any; return zero
}
//
// Which TaskConfig rows to publish. "configured" publishes only the configured ids and is the
// small shape the reference branch uses (one authored task that maps to one authored event);
// "catalog" keeps the historical full dump.
//
func GameRouter_Tasks_ResolvePublishedEntries(ctx context.Context, panel any) []any {
// Router implementation for GameRouter_Tasks_ResolvePublishedEntries
return nil
}
func GameRouter_Tasks_ResolveTaskState(ctx context.Context, panel any) any {
// Router implementation for GameRouter_Tasks_ResolveTaskState
var zero any; return zero
}
//
// eventPanelInfo — the actual list data source. TaskEvents are TaskEventConfig rows;
// each row needs EventId, a TaskId pointing at a step the client recognises as started,
// UnlockTime, and the status flags (Visible(1) is mandatory or nothing renders).
//
func GameRouter_Tasks_BuildEventPanelInfo(ctx context.Context, panel any, publishedTasks []any) any {
// Router implementation for GameRouter_Tasks_BuildEventPanelInfo
var zero any; return zero
}
func GameRouter_Tasks_ResolveEventTaskId(ctx context.Context, panel any, row any, publishedTasks []any) uint32 {
// Router implementation for GameRouter_Tasks_ResolveEventTaskId
return 0
}
//
// One panel row. CounterValues/Counters carry the objective progress: CounterValues[i] is the
// current value and Counters[i] repeats it alongside the configured target, because the UI
// renders "value/target" and skips rows that have neither.
//
func GameRouter_Tasks_BuildTaskInfo(ctx context.Context, e any) any {
// Router implementation for GameRouter_Tasks_BuildTaskInfo
var zero any; return zero
}