35 lines
2.5 KiB
Go
35 lines
2.5 KiB
Go
package methods
|
||
|
||
//
|
||
// Client 4229938: IClientToGameScene.ReportCanAssassinateEnemies(List<ulong> enemyids) — NOTIFY,67161256。
|
||
// 客户端 StealthManager(dump.cs:321145 起)每 CROUCH_ASSASS_CHECK_INTERVAL = 0.4 秒
|
||
// 跑一次 CrouchAssassinationUpdate():CrouchAssassinationUnitCheck 做粗筛,
|
||
// CalculateCrouchAssassinationDetectValue(detectorPos, detectorEyeDir, detectedPos) 算背后夹角,
|
||
// CrouchAssassinationVisibilityRaycastCheck 补可见性,最后由 SendCrouchAssassinationReport()
|
||
// 把候选名单报上来(REPORT_LIST_LIMIT = 40)。
|
||
// 线格式证据:ClientToGameSceneDelegate.lua:1027
|
||
// SerializeBase.WriteList7Bit(writer, enemyids, writer.WriteUInt64, 0, "enemyids", false, 256, nil)
|
||
// ⇒ Int7 计数(带 +1 偏置,规则 182)。与 ReportBeHacked(lua:595)完全同形,
|
||
// 后者已实机解码成功 ⇒ 照抄它的标注。
|
||
// ⛑ 解码只用于驱动裁决回包;Notify 无 ack,解析失败不会卡住客户端。
|
||
//
|
||
//
|
||
// Client 4229938: IGameSceneToClient.SyncEnemyCanAssassinate(ulong agentId, bool canAssassinate) — 68218494。
|
||
// 契约来源:dump.cs:171433 GameSceneToClientImpl.SyncEnemyCanAssassinate(ulong, bool)
|
||
// (真实现 override,不是 Null 桩);dump.cs:1873111 常量 = 68218494。
|
||
// ★ 为什么非发不可:这是服务端裁决回包。客户端只负责「我觉得这几个能暗杀」,
|
||
// 真正的授权在这一条。收到 true 后 EnemyInteractCore.TrySetFeisuoCrouchAssassinInteract(true)
|
||
// (dump.cs:537731)置 isFeisuoCrouchAssassinActive,再由 C# 回调 Lua
|
||
// FeisuoAssassMgr:SetCanFeiSuoCrouchAss(canAssassin, LockEnemyId, t1, t2)
|
||
// → UpdateAssinateGps() → gHackManager:AddFocusDangerEffect,
|
||
// 同时 UnitStateConfig.CrouchAssass 点亮 HUD 的 ControlPower 暗杀按钮
|
||
// (MainMenuMgr.CheckInCrouchAssassination)。
|
||
// ⇒ 本服从不发这一条 ⇒ canAssassinate 恒 false ⇒ HUD 永远不出暗杀提示。
|
||
// ⛑⛑ 极性 Inline:CSharpOnly(lua 全仓只有 RPCMethodIdToName.lua:2940 的名字条目,
|
||
// 没有 reader、没有 handler)⇒ 不能靠 lua 判 ReadStruct/ReadComplex(规则 183),
|
||
// 只能靠同形先例。同 service、同为 CSharpOnly、同为「目标可交互」二态包的
|
||
// SyncUnitHackableState(68941159) 与 SyncVehicleHackableState 都用
|
||
// Inline = true 且已实机跑通 ⇒ 这里跟着用 Inline。
|
||
// 若实机报 ReadBuffer invalid size=N remain=N-1,唯一改法就是去掉 Inline(加 0xFF presence)。
|
||
//
|