幻灯片-快云博客
L4D2 插件|Witch 击杀者特感一次免疫护盾(2.1.0旧版本)

L4D2 插件|Witch 击杀者特感一次免疫护盾(2.1.0旧版本)

温馨提示:资源全部搬运互联网,遇到源码有授权加密以及后门,请放弃使用,站长不会添加任何后门。请勿相信源码里的广告QQ以及其他联系方式,谨慎被骗!

L4D2 插件|Witch Killer Shield — Witch 击杀者特感一次免疫护盾

插件版本:2.1.0|作者:36 度白凉开|语言:SourcePawn (Sem‑1 分号强制模式)|依赖:SourceMod、SDKHooks、SDKTools

简介

一款求生之路 2 服务器增强插件,当幸存者成功击杀 Witch 女巫后,击杀者获得一次性特感免疫护盾。护盾不仅免疫特感造成的伤害,还能打断 Hunter 扑击、Smoker 舌头、Jockey 骑乘、Charger 冲撞抱摔等特感控制效果,提供绿色发光视觉提示,适合娱乐服、对抗服、RPG 服务器使用,鼓励玩家主动击杀女巫而不是绕开女巫GitHub。

✨核心功能

  1. 护盾获取条件
  • 触发游戏事件witch_killed,获取击杀 Witch 的幸存者,自动授予护盾
  • 同一个玩家已有护盾时,不会重复叠加,聊天提示已持有护盾
  • 获得护盾玩家全身绿色高亮发光,全图可见,直观识别护盾状态
  1. 护盾生效场景(一次性消耗)

护盾只抵挡特感 (Smoker/Hunter/Boomer/Jockey/Charger/Spitter) 的攻击与控制,普通僵尸、Tank、Witch 伤害不被护盾拦截。

  • 🩸伤害免疫:特感攻击到来,直接置零本次伤害,抵消血量扣减
  • 🧟控制解除:
    • Hunter 扑击 (lunge_pounce)
    • Smoker 舌头拖拽 (tongue_grab)
    • Jockey 骑乘 (jockey_ride)
    • Charger 抱人 (charger_carry_start)
    • Charger 捶打 (charger_pummel_start)

触发控制瞬间立刻消耗护盾,通过定时器清除实体控制属性,挣脱特感控制状态。

  1. 护盾自动清除规则
  • 新回合round_start全服所有人护盾全部清空
  • 玩家死亡player_death:死亡立刻移除护盾
  • 玩家掉线断开连接:自动清理
  • 切换地图OnMapStart:重置全部玩家护盾状态
  • 倒地 / 倒地状态的幸存者无法获得护盾,仅存活站立幸存者可以持有护盾。
  1. 聊天反馈提示
  • 获取护盾:[Witch] 你击杀了 Witch,获得一次特感免疫护盾!
  • 重复获取:[Witch] 你已经拥有护盾,本次不会重复叠加。
  • 护盾消耗:[Witch] 护盾抵挡了这次特感攻击!护盾已消失。

📦环境依赖

  • SourceMod 版本:推荐 1.11
  • 必须模块:SDKHooksSDKTools
  • 游戏:Left4Dead2 求生之路 2 服务端

📝安装部署教程

  1. .smx放到服务器路径: left4dead2/addons/sourcemod/plugins/ 4.(可选)如果你不想开机自动加载,在plugins/disabled外放置。
  2. 服务器控制台执行:
sm plugins load witch_killer_shield

或者重启服务器完成加载。

查看是否加载成功:sm plugins list,列表出现本插件代表正常运行。

🧠插件实现原理简析

事件钩子列表

插件一共 Hook 这些游戏内置事件监听游戏行为:

表格

游戏事件 作用
witch_killed 女巫死亡,分配护盾给击杀者
player_death 玩家死亡清除护盾
round_start 回合重置清空全部护盾
tongue_grab Smoker 舌头控制触发护盾消耗
lunge_pounce Hunter 扑击触发护盾
jockey_ride Jockey 骑乘触发护盾
charger_carry_start Charger 抱人触发护盾
charger_pummel_start Charger 捶打触发护盾

关键钩子 SDKHook_OnTakeDamage

使用 SDKHook 劫持玩家受伤害回调: 判断攻击者 / 造成伤害实体是否为特感,如果玩家持有护盾,直接设置damage=0.0,返回Plugin_Changed拦截本次伤害,然后消耗护盾。

⚠️注意:Tank、Witch 不属于这里判定的普通特感,不会被护盾保护

控制解除实现逻辑

当特感控制事件触发,标记消耗护盾,延迟 0 秒定时器执行ClearControlProps(),批量置空这些 SendProp/DataProp 句柄:

  • m_pounceAttacker Hunter 扑击攻击者
  • m_jockeyAttacker Jockey 骑乘攻击者
  • m_carryAttacker Charger 抱人攻击者
  • m_tongueOwner Smoker 舌头拥有者

同时 Prop_Send、Prop_Data 两套属性同时清理,避免只清一套导致人物仍然被卡住控制状态。

发光效果实现

利用 L4D2 原生 Glow 发光属性:

  • m_iGlowType =3开启持续发光
  • m_glowColorOverride =0x00FF00绿色 RGB (0,255,0)
  • m_nGlowRange =99999超大发光距离,远处也可见
  • 护盾消失时设置 GlowType=0 关闭发光。

工具函数说明

  1. IsValidSurvivor():校验目标为存活、未倒地、幸存者队伍玩家。倒地玩家不会分配护盾。
  2. IsSpecialInfected():校验实体是否为可控特感玩家(team3,m_zombieClass1‑6、8)。
  3. GiveShield()授予护盾;ConsumeShield()消耗护盾;RemoveShield()强制清除护盾;
  4. SetShieldGlow()开关玩家发光;
  5. SetEntityHandleProp()封装安全设置 EntPropEnt,先判断属性是否存在再赋值,防止报错。

⚠️已知限制与注意事项

  1. 护盾只针对特感,Witch、Tank 伤害不会被抵挡。击杀 Witch 拿到的护盾不能防女巫自己的挠伤。
  2. 护盾为一次性,伤害、控制任意一个触发,护盾立刻消失

举例:Hunter 扑过来,护盾吃掉扑击控制,同时护盾消失,后续其他特感攻击不再保护。

  1. AI 特感 & 玩家操控特感均可触发护盾,PVE/PVP 对抗模式都生效。
  2. 如果服务器有其他修改玩家 Glow 发光的插件,会出现视觉冲突,发光会被其他插件覆盖。
  3. 地图切换、回合重置会强制抹除全部护盾,不会跨回合继承护盾。
  4. 倒地(incapacitated)玩家不能获得护盾,必须站立存活状态。
  5. 事件witch_killed是 Post 模式,女巫死亡之后才执行护盾发放。
L4D2 插件|Witch 击杀者特感一次免疫护盾(2.1.0旧版本)-快云博客
L4D2 插件|Witch 击杀者特感一次免疫护盾(2.1.0旧版本)
此内容为免费资源,请登录后查看
¥0
服务个蛋
免费资源
© 版权声明
THE END
喜欢就支持一下吧
点赞640为爱发电 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容