一、简介
[L4D/L4D2] ThirdPersonShoulder_Detect,作者Lux。它是一个 SourceMod 插件,专门用于检测客户端是否处于thirdpersonshoulder第三人称状态。其链接为:https://forums.alliedmods.net/showthread.php?s=d44e6db4e2db4d345360bb0e08165396&t=298649
二、原理
它的核心是检测客户端的:
c_thirdpersonshoulder然后给其他 SourceMod 插件提供一个 Forward:
forward void TP_OnThirdPersonChanged(int iClient, bool bIsThirdPerson);其中:
iClient = 玩家编号 bIsThirdPerson = true → 第三人称 false → 第一人称三、漏洞
这个插件主要检测的是thirdpersonshoulder,并不等于能够 100% 检测 L4D2 中所有可能导致第三人称的方式。所以可以通过某些方法绕过检测。比如我们可以让c_thirdpersonshoulder为0但仍然是第三人称。c_thirdpersonshoulder是引擎肩视角路径的控制变量,不是所有第三人称渲染状态的唯一开关。我们可以设计一种模式(比如叫Custom camera模式)将“是否绘制本地模型”和“摄像机在哪里”拆开处理:前者由 CInput/玩家状态控制,后者由CViewSetup::origin直接控制。因此它可以在该 ConVar 为 0 时仍然显示第三人称画面。
如下图所示,传统模式(Custom OverrideView)无法绕过该插件的检测,但如果用Custom camera模式就可以: