我有一个gLua错误:错误的参数#1到'lower'(期望的字符串,为nil)

时间:2019-08-31 02:45:45

标签: lua garrys-mod

我想创建一个命令,当键入“!swap”时会更改您的模型,并使其重新显示时再次返回到以前的模型。

我尝试结束该功能并继续进行操作,但这没有用。我需要有人解释该错误,因为我之前从未见过,而google / gmod Wiki也未显示该错误。

hook.Add( 'PlayerSay', 'PlayerSayExample', function (ply, text, team)
end )
    if ( string.sub( string.lower( text ), 1, 5 ) == "!swap" ) then
local model = ply:GetModel()
function GM:PlayerSetModel( ply ) end
else
end

    if model == ("models/Kleiner.mdl") then
        ply:SetModel("models/Eli.mdl")
    else
        ply:SetModel("models/Kleiner.mdl")
end 

==================================

[ERROR] lua/swap2.lua:3: bad argument #1 to 'lower' (string expected, got nil)
  1. lower - [C]:-1
   2. unknown - lua/swap2.lua:3

=================================
以上(在休息之间)是我得到的错误。它发生在第3行的“ string.lower”位,但是我不知道代码实际上出了什么问题,因为我之前没有看过错误。

1 个答案:

答案 0 :(得分:0)

hook.Add( 'PlayerSay', 'PlayerSayExample', function (ply, text, team)
end )

意味着您的钩子是空的。

如果在挂钩之前或之后未定义文本,则文本为nil,并且将始终抛出此错误。这是您的解决方法:

hook.Add( 'PlayerSay', 'PlayerSayExample', function (ply, text, team)
    if ( string.sub( string.lower( text ), 1, 5 ) == "!swap" ) then
       local model = ply:GetModel()
       function GM:PlayerSetModel( ply ) end
    else
    end

    if model == ("models/Kleiner.mdl") then
        ply:SetModel("models/Eli.mdl")
    else
        ply:SetModel("models/Kleiner.mdl")
    end 
end )