233 lines
10 KiB
Go
233 lines
10 KiB
Go
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"`
|
||
|
|
}
|
||
|
|
|