我遇到了一个 gLua 错误: 错误参数#1 "lower" (期望得到字符串,但得到了nil)

我想要创建一个命令,当输入“!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:错误参数#1 "lower"(期望得到字符串,但得到了nil1. lower-[C]:-1
   2. unknown-lua / swap2.lua:3

上面(两个分隔符之间)是我所遇到的错误。它发生在第3行的“string.lower”位,但我不知道实际上代码哪里出错了,因为我以前从未见过这个错误。

点赞
用户9740635
用户9740635
hook.Add( 'PlayerSay', 'PlayerSayExample', function (ply, text, team)
end )

这意味着你的钩子函数是空的。

如果在钩子函数之前或之后没有定义 text,那么 text 将为 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 )
2019-09-09 12:02:30