gmod吧 关注:89,066贴子:1,901,142
  • 70回复贴,共1

[小提醒]目前GMOD插件开发中可能令人不快的一个bug

只看楼主收藏回复

该bug是这两天在写插件时偶遇的,本身影响范围并大,但非常烦,在这里具体的描述一下:
在使用hook.Add EntityTakeDamage的情况下,只要玩家或npc使用hl2默认的Hitscan武器(撬棍,手枪和smg等子弹“瞬间”击中目标的武器),引用GetInflictor()函数返回的值不是武器本身而是攻击者。影响的范围并不大,仅限hl2默认武器中的hitscan类型,而smg的榴弹、手榴弹等投掷物和RPG、Ar2能量球和十字弓等发射物本身并不受到影响。非hl2原生武器暂时不受到影响。
可能你会觉得这个bug本身没什么大不了的,但是当你想修改撬棍造成的的伤害的时候,麻烦就来了:出于未知的原因,GMOD移除了调整撬棍伤害的convar,在cfg里也不见踪影。你必须通过判定伤害的来源然后通过EntityTakeDamage/CTakeDamageInfo进行修改,而上述bug就让这种方法绕路子了。一般来说只能通过GetActiveWeapon()来进行判断,但是这种判断的逻辑存在漏洞。因此,当你装备了撬棍而通过其他方式造成伤害,它也会成为修改的对象,引发潜在的冲突。
目前的解决办法:撬棍的DamageType是128,通过添加伤害类型判定来减小逻辑漏洞,不过这个也只是治标不治本,真正解决问题的办法是等待官方段修复。


IP属地:陕西来自Android客户端1楼2018-08-26 05:08回复
    好在我只搞点模型


    IP属地:北京来自iPhone客户端3楼2018-08-26 09:42
    回复
      我自己写的,没有经过测试,仅供参考


      IP属地:陕西来自Android客户端8楼2018-08-27 18:08
      回复(2)


        IP属地:北京来自iPhone客户端19楼2018-08-29 15:29
        回复
          你可以尝试另外一种思路 自己写一个近战武器 可以是撬棍或者其他 然后再写一个插件 吧所有捡起来的撬棍或者地图里的撬棍实体换成你写的这个撬棍 我以前偷懒经常这么干


          IP属地:湖北20楼2018-09-03 03:03
          回复(2)
            何必非要纠结官方修不修撬棍 你自己写个不就得了


            IP属地:湖北21楼2018-09-03 03:03
            回复(2)