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

192 lines
9.3 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
//
// 开放世界通缉系统(Wanted)——「警车版」。
// 2026-09-23 自捐赠端 PrivateServer修改_miyuki_fix 的 GameRouter.Wanted.cs 移植。
// ★ 与捐赠端的关键差异(都是刻意的):
// 1. **只做警车,不做步行警员**。捐赠端的步行警员靠它自己的 crowd agent 管线
// (CrowdAgent / PushLogicAgentHandoff / PushCrowdTaskCommand /
// CrowdAdvanceEstimate),本方没有那套类型,且它那份日志早于它自己的最后一次改动
// ⇒ 步行警员那半根本没被实机验证过。警车由**客户端自己的车辆 AI** 驱动
// (NavConfigId=1002 / ChaseDirectlySpeed=26),服务端只负责"派"和"撤"。
// 2. 因此**自动逃脱/被捕的判据换了**。捐赠端用"最近警员距离"(它自己算的位置),
// 警车版拿不到警车位置(客户端 AI 不外报),改成两个服务端真信号:
// · 通缉持续超过 WantedPursuitTimeoutSeconds4229938 ⇒ 自动逃脱;
// · 玩家倒地(state.PlayerDowned)⇒ 自动被捕。
// 3. 没有 resetAfterArrest / RestartCurrentWorld(本方没有那个方法),
// 被捕就是清场 + 罚款。
// 4. 不碰 CrimeGameplay(商店抢劫/偷车任务链),那半依赖本方完全没有的
// GmTasks 任务状态物件。
// ⛑️ 完全绕开官方犯罪通道:不接 SyncAgentCrimeAdd(68831313)、
// ReportPoliceCrimeEvent(67146776)、GmAddCrimeValue(69946581)。犯罪值是服务端自己加的,
// 代价是"只有服务端认可的行为会涨值",好处是不会被官方那些未摸清的帧时序炸客户端。
// 回滚:把 wanted.enabled 置 false(或直接删本文件 + 摘掉三处挂钩)。
//
func GameRouter_Wanted_WantedCrimeSettings(ctx context.Context, ) any {
// Router implementation for GameRouter_Wanted_WantedCrimeSettings
var zero any; return zero
}
func GameRouter_Wanted_SetWantedCrimeSettings(ctx context.Context, options any) any {
// Router implementation for GameRouter_Wanted_SetWantedCrimeSettings
var zero any; return zero
}
func GameRouter_Wanted_WantedReport(ctx context.Context, session any) any {
// Router implementation for GameRouter_Wanted_WantedReport
var zero any; return zero
}
func GameRouter_Wanted_WantedActionAsync(ctx context.Context, session any, options any, token context.Context) any {
// Router implementation for GameRouter_Wanted_WantedActionAsync
var zero any; return zero
}
// ── 犯罪值状态机 ────────────────────────────────────────────────────────────────────
func GameRouter_Wanted_SetWantedValueAsync(ctx context.Context, session *GameSession, state any, requestedValue uint32, reason string, token context.Context) any {
// Router implementation for GameRouter_Wanted_SetWantedValueAsync
var zero any; return zero
}
func GameRouter_Wanted_AddWantedCrimeAsync(ctx context.Context, session *GameSession, state any, points uint32, reason string, token context.Context) any {
// Router implementation for GameRouter_Wanted_AddWantedCrimeAsync
var zero any; return zero
}
//
// 犯罪事件入口。由三处挂钩调用:npc-hit / npc-kill(玩家打路人、敌人)、
// vehicle-hit / vehicle-destroy(玩家砸车)。targetId=0 直接忽略。
//
func GameRouter_Wanted_RegisterWantedCrimeIncidentAsync(ctx context.Context, session *GameSession, incident string, targetId uint64, attackerId uint64, token context.Context) any {
// Router implementation for GameRouter_Wanted_RegisterWantedCrimeIncidentAsync
var zero any; return zero
}
func GameRouter_Wanted_SetWantedLevelAsync(ctx context.Context, session *GameSession, state any, level uint32, reason string, token context.Context, explicitValue any) any {
// Router implementation for GameRouter_Wanted_SetWantedLevelAsync
var zero any; return zero
}
// ── 出警 ───────────────────────────────────────────────────────────────────────────
func GameRouter_Wanted_SpawnWantedPoliceAsync(ctx context.Context, session *GameSession, state any, level uint32, token context.Context) any {
// Router implementation for GameRouter_Wanted_SpawnWantedPoliceAsync
var zero any; return zero
}
// ── 追捕循环(警车版:只判「超时逃脱」与「倒地被捕」)─────────────────────────────
func GameRouter_Wanted_StartWantedPursuitLoop(ctx context.Context, session *GameSession, state any) any {
// Router implementation for GameRouter_Wanted_StartWantedPursuitLoop
var zero any; return zero
}
func GameRouter_Wanted_RunWantedPursuitLoopAsync(ctx context.Context, session *GameSession, state any, generation int32, token context.Context) any {
// Router implementation for GameRouter_Wanted_RunWantedPursuitLoopAsync
var zero any; return zero
}
// ── 结算 ───────────────────────────────────────────────────────────────────────────
func GameRouter_Wanted_BeginWantedEscapeAsync(ctx context.Context, session *GameSession, state any, requestedSeconds int32, requestedReward any, token context.Context) any {
// Router implementation for GameRouter_Wanted_BeginWantedEscapeAsync
var zero any; return zero
}
func GameRouter_Wanted_CompleteWantedEscapeAfterDelayAsync(ctx context.Context, session *GameSession, generation int32, seconds int32) any {
// Router implementation for GameRouter_Wanted_CompleteWantedEscapeAfterDelayAsync
var zero any; return zero
}
func GameRouter_Wanted_CompleteWantedEscapeAsync(ctx context.Context, session *GameSession, state any, expectedGeneration any, requestedReward any, reason string, token context.Context) any {
// Router implementation for GameRouter_Wanted_CompleteWantedEscapeAsync
var zero any; return zero
}
func GameRouter_Wanted_CompleteWantedArrestAsync(ctx context.Context, session *GameSession, state any, requestedPenalty any, token context.Context) any {
// Router implementation for GameRouter_Wanted_CompleteWantedArrestAsync
var zero any; return zero
}
func GameRouter_Wanted_ClearWantedAsync(ctx context.Context, session *GameSession, state any, reason string, token context.Context) any {
// Router implementation for GameRouter_Wanted_ClearWantedAsync
var zero any; return zero
}
func GameRouter_Wanted_ClearWantedDispatchAsync(ctx context.Context, session *GameSession, state any, reason string, token context.Context) any {
// Router implementation for GameRouter_Wanted_ClearWantedDispatchAsync
var zero any; return zero
}
func GameRouter_Wanted_CancelWantedEscapeLocked(ctx context.Context, state any) any {
// Router implementation for GameRouter_Wanted_CancelWantedEscapeLocked
var zero any; return zero
}
func GameRouter_Wanted_WantedLevelForValue4229938(ctx context.Context, value uint32) uint32 {
// Router implementation for GameRouter_Wanted_WantedLevelForValue4229938
return 0
}
func GameRouter_Wanted_MinimumWantedValue4229938(ctx context.Context, level uint32) uint32 {
// Router implementation for GameRouter_Wanted_MinimumWantedValue4229938
return 0
}
// 警车刷在玩家背后 30~54 m(背后 = 玩家朝向的反方向),横向错开 ±7 m。
func GameRouter_Wanted_WantedPoliceSpawnPosition(ctx context.Context, target Vec3, facing float32, ordinal int32) Vec3 {
// Router implementation for GameRouter_Wanted_WantedPoliceSpawnPosition
var zero Vec3; return zero
}
func GameRouter_Wanted_NormalizeWantedFacing(ctx context.Context, value float32) float32 {
// Router implementation for GameRouter_Wanted_NormalizeWantedFacing
return 0
}
type WantedCrimeSettings4229938 struct {
Enabled bool `json:"enabled"`
NpcHitPoints uint32 `json:"npcHitPoints"`
NpcKillPoints uint32 `json:"npcKillPoints"`
VehicleHitPoints uint32 `json:"vehicleHitPoints"`
VehicleDestroyPoints uint32 `json:"vehicleDestroyPoints"`
AutoEscapeEnabled bool `json:"autoEscapeEnabled"`
ArrestOnPlayerDown bool `json:"arrestOnPlayerDown"`
PursuitTimeoutSeconds int32 `json:"pursuitTimeoutSeconds"`
VehiclesPerLevel int32 `json:"vehiclesPerLevel"`
RewardPerLevel float64 `json:"rewardPerLevel"`
PenaltyPerLevel float64 `json:"penaltyPerLevel"`
}
type WantedPursuitRuntime struct {
Cancellation *context.CancelFunc `json:"cancellation"`
Loop *any `json:"loop"`
Generation int32 `json:"generation"`
}
type WantedActionOptions struct {
Action string `json:"action"`
Level uint32 `json:"level"`
CrimeValue uint32 `json:"crimeValue"`
Points uint32 `json:"points"`
Seconds int32 `json:"seconds"`
Amount *float64 `json:"amount"`
Enabled *bool `json:"enabled"`
NpcHitPoints uint32 `json:"npcHitPoints"`
NpcKillPoints uint32 `json:"npcKillPoints"`
VehicleHitPoints uint32 `json:"vehicleHitPoints"`
VehicleDestroyPoints uint32 `json:"vehicleDestroyPoints"`
AutoEscapeEnabled *bool `json:"autoEscapeEnabled"`
ArrestOnPlayerDown *bool `json:"arrestOnPlayerDown"`
PursuitTimeoutSeconds int32 `json:"pursuitTimeoutSeconds"`
VehiclesPerLevel int32 `json:"vehiclesPerLevel"`
RewardPerLevel float64 `json:"rewardPerLevel"`
PenaltyPerLevel float64 `json:"penaltyPerLevel"`
}