gmod 游戏模式 Lua。IsPlayer 返回空值

我试图制作一个 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 ) // 将伤害设置为 0
        end
    end
end

然而它给我一个错误,告诉我 IsPlayer() 是一个空值,即使它应该返回一个布尔值。它指向的是没有其他行,只有带有 IsPlayer() 的行,并且它说它是 IsPlayer()

点赞
用户2858170
用户2858170
  1. 第 3 行有打字错误,应该是 dminfo
  2. 你应该缩小你多次调用 IsPlayer() 的范围,看看哪个是 nil。
  3. dmgInfo 是一个 CTakeDamageInfo,没有 IsPlayer() 函数。
  4. 单行 Lua 注释需要用 --,而不是 //

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

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

还要注意的是,CTTakeDamageInfo 中也不存在 Team() 函数,以防你一分钟后又回来了。

查看 CTDamageInfo:GetAttacker()

2016-03-16 18:51:23