0

我正在尝试制作一个 gmod 游戏模式。在我的 init.lua 中,我想要它,这样团队成员就不会互相伤害。所以我使用了这段代码

function GM:EntityTakeDamage( target, dmginfo )
    if ( target:IsPlayer() and dmginfo:IsPlayer() ) then
        if (dmginfo:Team() == target:Team()) then
            dmginfo:ScaleDamage( 0.0 ) // Sets damage to 0
        end
    end
end

然而,它给了我一个错误,告诉我这IsPlayer()是一个 nil 值,即使它应该返回一个布尔值。它指向除了与线之外的其他线IsPlayer(),它说它是IsPlayer()

4

1 回答 1

0
  1. 你在第 3 行有一个错字。 dminfo
  2. 你应该缩小你的多个IsPlayer()调用中的哪一个实际上是 nil
  3. dmgInfo 是一个没有功能的 CTakeDamageInfoIsPlayer()
  4. 单行 Lua 注释用--, 不是//

https://wiki.garrysmod.com/page/Category:CTakeDamageInfo

如果你调用一个函数并且它说它是 nil,那么检查它是否存在。或者更好的是,在您首先使用该功能之前检查一下。

为了防止你一分钟后回来,CTtakeDamageInfo 也没有功能Team()

查看CTDamageInfo:GetAttacker()

于 2016-03-16T18:51:23.703 回答