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

54 lines
2.7 KiB
Go
Raw Permalink Normal View History

package routers
import (
"context"
"sync"
)
var _ = sync.Mutex{}
var _ = context.Background
//
// AskMetroGadgetIds(67809129) — the missing half of the metro carriages.
// What the client does: it builds the LightRail prefab on its own (see the captured hierarchy
// LightRail_4_405/carriage1|2/Seats/Gadgets_888_LightRailChair03_*), then asks the server
// which gadget instance ids belong to that train. Every SpoonSlotComponent on a seat needs a
// gadget hold before it yields a "sit down" button, and the hold comes from this reply.
// Before 2026-09-23 this method had no handler at all, so the answer was the typed-default empty
// list (see the log line "unimplemented AskMetroGadgetIds -> typed-default list7-empty 2b"), which
// is why the seats inside our carriages stay inert while AnantaTrainSeatLoader.exe can wake them
// up by calling SpoonSlotComponent.Init() directly through frida.
// Option A (implemented here): hand back invented but stable ids from the server's own 9.5e12
// gadget band. The client only needs an id to bind the local seat slot to. If seats still stay
// dead, the fallback is option B — really spawn the chairs through SyncGadgetAdd(68843189) with
// the LightRailChair pathIds (843740076 / 1058671153 / 267309514 / 1181678445, iScale must be 0)
// and return those instance ids instead.
// Rollback: world.content.metroGadgets.enabled = false.
//
func GameRouter_MetroGadget_OnAskMetroGadgetIds(ctx context.Context, conn any, msg any) any {
// Router implementation for GameRouter_MetroGadget_OnAskMetroGadgetIds
var zero any; return zero
}
//
// 同车型(同一 RailCarriageConfig 布局类)里有没有已经配好座位数的兄弟模板?
// 有就借用它的值 —— 比退化成 defaultCarriageSeats 更接近真值。
// ⛑ 必须按 key 升序取第一个:Dictionary 的遍历顺序没有保证,同车型存在
// 多个已配值时会取到随机的那个(见 WarnSeatConflict)。
//
func GameRouter_MetroGadget_FindSiblingSeats(ctx context.Context, cfg any, layoutClass string, conn any) any {
// Router implementation for GameRouter_MetroGadget_FindSiblingSeats
var zero any; return zero
}
//
// 同一布局类里配了不一样的座位数 —— 一定是某次实测数错了,喊出来(每条只喊一次)。
// 2026-09-27 现况:Vehicle03/End 同时有 tpl4=4 与 tpl9=6,而两者
// TemplateName(Vehicle03/CarriageOnEnd) 与 ViewModelName(View_Blue_End)
// 完全相同,只差 IsRevert(镜像)⇒ 座位数本该一样,现在必有一个是错的。
//
func GameRouter_MetroGadget_WarnSeatConflict(ctx context.Context, layoutClass string, values any, conn any) any {
// Router implementation for GameRouter_MetroGadget_WarnSeatConflict
var zero any; return zero
}