package routers import ( "context" "sync" "time" ) var _ = sync.Mutex{} var _ = context.Background var _ = time.Now func GameRouter_LixiPolice_LixiReady(ctx context.Context, state any) bool { // Router implementation for GameRouter_LixiPolice_LixiReady return true } func GameRouter_LixiPolice_PoliceDispatches(ctx context.Context, r any) map[string]any { // Router implementation for GameRouter_LixiPolice_PoliceDispatches return nil } func GameRouter_LixiPolice_PublishLixiPolice4229938(ctx context.Context, session *GameSession, spiritId uint32) any { // Router implementation for GameRouter_LixiPolice_PublishLixiPolice4229938 var zero any; return zero } func GameRouter_LixiPolice_RegisterPoliceNpc4229938(ctx context.Context, session *GameSession, id uint64, template uint32, position Vec3) any { // Router implementation for GameRouter_LixiPolice_RegisterPoliceNpc4229938 var zero any; return zero } // AgentCharacterComponent is separate from AgentPoliceExamData. The native ID // panel unconditionally reads module.Component.Portrait. A missing component // throws before the close/continue callback is installed (Player.log 23:07:24). // 4000 is an existing NpcInformationPortraitConfig row, a neutral display tag // for our generated test NPCs; this does not invent crimes or grant rewards. func GameRouter_LixiPolice_PoliceCharacterPacket4229938(ctx context.Context, id uint64) []byte { // Router implementation for GameRouter_LixiPolice_PoliceCharacterPacket4229938 return nil } func GameRouter_LixiPolice_SendPoliceCharacter4229938(ctx context.Context, session *GameSession, id uint64) any { // Router implementation for GameRouter_LixiPolice_SendPoliceCharacter4229938 var zero any; return zero } func GameRouter_LixiPolice_SendPoliceExamData4229938(ctx context.Context, session *GameSession, id uint64) any { // Router implementation for GameRouter_LixiPolice_SendPoliceExamData4229938 var zero any; return zero } func GameRouter_LixiPolice_SendLixiPoliceCareer4229938(ctx context.Context, session *GameSession) any { // Router implementation for GameRouter_LixiPolice_SendLixiPoliceCareer4229938 var zero any; return zero } func GameRouter_LixiPolice_RefreshPoliceNpcInitializationPass4229938(ctx context.Context, session *GameSession, ids []any, generation int32) any { // Router implementation for GameRouter_LixiPolice_RefreshPoliceNpcInitializationPass4229938 var zero any; return zero } func GameRouter_LixiPolice_RefreshSpawnedPoliceNpcs4229938(ctx context.Context, session *GameSession, ids []any, generation int32) any { // Router implementation for GameRouter_LixiPolice_RefreshSpawnedPoliceNpcs4229938 var zero any; return zero } // Native SInteract.OnEnable uses ServerInitiate to construct its own // SPreInteractExam, instead of relying on the F-button's preparatory node. // Keep the GM nearest-target fallback on the known test model. Explicit F // requests can also target registered action NPCs and functional shopkeepers. func GameRouter_LixiPolice_ControlPoliceExam4229938(ctx context.Context, session *GameSession, start bool) any { // Router implementation for GameRouter_LixiPolice_ControlPoliceExam4229938 var zero any; return zero } func GameRouter_LixiPolice_ControlPoliceTarget4229938(ctx context.Context, session *GameSession, start bool, requestedTarget uint64) any { // Router implementation for GameRouter_LixiPolice_ControlPoliceTarget4229938 var zero any; return zero } // 4229938 MasterToClientImpl.SyncDoToLuaMaster (0x1281DDE0) calls the // built-in gCsToLuaHandler.GmRunLua, registered on Gate (0x14883B90). // Invoke the ORIGINAL PrepareData_Story, as S002PlayerNet.EnterExam does; // no replacement functions, persistent hooks, assets or client files. // GmUtils.ParseUlongToLua (0x14677AC0) uses ulong.new(low32, high32): // a decimal Lua number would round our 8300000000000000001 IDs. func GameRouter_LixiPolice_PolicePrepareScript4229938(ctx context.Context, target uint64, owner uint64, nonce string) string { // Router implementation for GameRouter_LixiPolice_PolicePrepareScript4229938 return "" } func GameRouter_LixiPolice_ExpirePolicePrepare4229938(ctx context.Context, session *GameSession, r any, nonce string) any { // Router implementation for GameRouter_LixiPolice_ExpirePolicePrepare4229938 var zero any; return zero } // Cooperative reaction rows from PoliceExamReactionConfig. These are not a // simulation of guilt or fine adjudication: no money/rewards are invented. func GameRouter_LixiPolice_PoliceReaction4229938(ctx context.Context, interaction uint32) uint32 { // Router implementation for GameRouter_LixiPolice_PoliceReaction4229938 return 0 } func GameRouter_LixiPolice_PoliceEscortVehicleRequestValid4229938(ctx context.Context, session *GameSession, request any) bool { // Router implementation for GameRouter_LixiPolice_PoliceEscortVehicleRequestValid4229938 return true } // Called with the police gate held. Deleting only this interaction invokes // native OnDisable cleanup without deleting the NPC, police root or support. func GameRouter_LixiPolice_PoliceEntryRetryAllowed4229938(ctx context.Context, r any) bool { // Router implementation for GameRouter_LixiPolice_PoliceEntryRetryAllowed4229938 return true } func GameRouter_LixiPolice_ClosePoliceInteraction4229938(ctx context.Context, session *GameSession, r any, reason string) any { // Router implementation for GameRouter_LixiPolice_ClosePoliceInteraction4229938 var zero any; return zero } func GameRouter_LixiPolice_RecoverStalledPoliceBoarding4229938(ctx context.Context, session *GameSession, child uint32, section uint32, generation int32, owner uint64) any { // Router implementation for GameRouter_LixiPolice_RecoverStalledPoliceBoarding4229938 var zero any; return zero } func GameRouter_LixiPolice_WatchPoliceBoarding4229938(ctx context.Context, session *GameSession, child uint32, section uint32, generation int32, owner uint64) any { // Router implementation for GameRouter_LixiPolice_WatchPoliceBoarding4229938 var zero any; return zero } func GameRouter_LixiPolice_HandlePoliceStory4229938(ctx context.Context, session *GameSession, cmd any) bool { // Router implementation for GameRouter_LixiPolice_HandlePoliceStory4229938 return true } func GameRouter_LixiPolice_StopLixiPolice4229938(ctx context.Context, session *GameSession, sceneChange bool, supportOnly bool) any { // Router implementation for GameRouter_LixiPolice_StopLixiPolice4229938 var zero any; return zero } type PoliceRuntime4229938 struct { Gate *sync.Mutex `json:"gate"` Npcs map[uint64]any `json:"npcs"` Support []uint64 `json:"support"` Cooldowns map[uint32]uint32 `json:"cooldowns"` RootSent bool `json:"rootSent"` Generation int32 `json:"generation"` NextNode uint32 `json:"nextNode"` Child uint32 `json:"child"` LastSection uint32 `json:"lastSection"` HasSection bool `json:"hasSection"` EntryStartedUtc time.Time `json:"entryStartedUtc"` Agent uint64 `json:"agent"` Owner uint64 `json:"owner"` Serial int64 `json:"serial"` PrepareNonce *string `json:"prepareNonce"` PrepareTarget uint64 `json:"prepareTarget"` PrepareOwner uint64 `json:"prepareOwner"` PrepareDeadline time.Time `json:"prepareDeadline"` Passengers map[uint64]PolicePassenger4229938 `json:"passengers"` PendingBoarding *PolicePassenger4229938 `json:"pendingBoarding"` Alighting bool `json:"alighting"` LastInteraction uint32 `json:"lastInteraction"` PausedEscorts []uint64 `json:"pausedEscorts"` Detained uint64 `json:"detained"` PendingPrison uint64 `json:"pendingPrison"` PrisonTimelineToken *string `json:"prisonTimelineToken"` PrisonTimelineOwner uint64 `json:"prisonTimelineOwner"` PrisonInteractionEnded bool `json:"prisonInteractionEnded"` PrisonTimelineEnded bool `json:"prisonTimelineEnded"` PrisonCorrectionAt int64 `json:"prisonCorrectionAt"` } // Lua-generated SpiritPoliceJobInfo uses Int32 collections internally, whereas // SyncPoliceDispatchInfos uses an Int7 dictionary at the method boundary. type PoliceDispatch4229938 struct { Id uint32 `json:"id"` NextAvailableTime uint32 `json:"nextAvailableTime"` IsTemp bool `json:"isTemp"` TempEventId uint32 `json:"tempEventId"` TodayArrestSupportTimes uint32 `json:"todayArrestSupportTimes"` } type PoliceService4229938 struct { DispatchTimes uint32 `json:"dispatchTimes"` PatrolTimes uint32 `json:"patrolTimes"` ArrestTimes uint32 `json:"arrestTimes"` FineCount uint32 `json:"fineCount"` TotalDrops []uint32 `json:"totalDrops"` LastUpdateTime uint32 `json:"lastUpdateTime"` CarFineCount uint32 `json:"carFineCount"` } type PoliceDuty4229938 struct { DailyViolationCount uint32 `json:"dailyViolationCount"` LeaveDueTime uint32 `json:"leaveDueTime"` LastViolationUpdateTime uint32 `json:"lastViolationUpdateTime"` ServiceData PoliceService4229938 `json:"serviceData"` WeeklyServiceData PoliceService4229938 `json:"weeklyServiceData"` ViolationCdInfos map[uint32]uint32 `json:"violationCdInfos"` } type PoliceJob4229938 struct { DispatchInfos map[uint32]PoliceDispatch4229938 `json:"dispatchInfos"` // No fabricated criminal records/rewards. Empty lists have the same wire // framing regardless of element type; populate only with exact DTOs later. ViolationInfos []uint32 `json:"violationInfos"` // No fabricated criminal records/rewards. Empty lists have the same wire // framing regardless of element type; populate only with exact DTOs later. CaseInfos []uint32 `json:"caseInfos"` DutyBasicInfo PoliceDuty4229938 `json:"dutyBasicInfo"` EscortedNpcs []uint64 `json:"escortedNpcs"` PoliceFakeFileInfo PoliceFakeFile4229938 `json:"policeFakeFileInfo"` PeriodInvalidVehicleFine2CountDict map[uint32]uint32 `json:"periodInvalidVehicleFine2CountDict"` NextPeriodUpdateTime uint32 `json:"nextPeriodUpdateTime"` } type PoliceFakeFile4229938 struct { UnlockFileInfoDict map[uint32]uint32 `json:"unlockFileInfoDict"` HistoryClueAgentInfoList []uint32 `json:"historyClueAgentInfoList"` } type PoliceJobSync4229938 struct { SpiritId uint32 `json:"spiritId"` Info PoliceJob4229938 `json:"info"` } type PoliceDispatchSync4229938 struct { SpiritId uint32 `json:"spiritId"` Infos map[uint32]PoliceDispatch4229938 `json:"infos"` }