2016-03-16 3 views
0

Я пытаюсь создать gmod gamemode. В моем init.lua я хотел, чтобы члены команды не могли повредить друг друга. Таким образом, я использовал этот кодgmod GameMode Lua. IsPlayer retuning nill value

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() является нулевым значением, даже если оно должно быть возвращающая логическое значение. Это указывает на каких-либо других других линий, то в соответствии с IsPlayer() и говорит это IsPlayer()

ответ

0
  1. у вас есть опечатка в строке 3. dminfo
  2. Вы должны сужать вниз, какие из множества IsPlayer() вызовов фактически равна нулю
  3. dmgInfo является CTakeDamageInfo, который не имеет функции IsPlayer()
  4. однолинейные Lua комментарии открываются с --, а не //

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

Если вы вызываете функцию, и она говорит ее нуль, то проверьте, существует ли она даже. Или даже лучше, проверьте это, прежде чем использовать функцию в первую очередь.

И чтобы вы не вернулись через минуту, CTtakeDamageInfo также не имеет функции Team().

Заканчивать CTDamageInfo:GetAttacker()

+0

GMod расширяет парсер Lua, чтобы '' // комментарии. –

+0

Спасибо, я думал, что оба входа были сущностями – FacelessTiger