在 Lua 中切换函数时出错?

Getting Errors when switching between functions in Lua?

这是一款游戏,但我认为所有规则都适用。我有一个函数是

function nolag()
    if !nolag then 
        nolag = true
        ply:ConCommand("ax_stoplag")
    elseif nolag then 
        nolag = false
        ply:ConCommand("ax_resetlag")
    end
end     

在我的情况下,ply:ConCommand("ax_stoplag") 基本上是 print ("ax_stoplag") 的另一个术语。但是我有一个按钮

CreateButton( "No-Lag", MISCtab, black, tblack, true, 355, 130, 95, 20, "Toggle No-Lag on and off", function () nolag() end )

所以这将创建一个按钮,然后 link 到 nolag 函数。但是我可以点击它,但是当我再次点击它时没有任何反应并且我得到一个错误(游戏错误)。基本上 nolag = truenolag = false 是问题所在并且导致了错误。

您将 nolag 定义为函数。

在 lua、

中应该 if not nolag thenif !nolag then

基本上检查 nolag 是否未设置(如果未设置,则此语句将 return 为真)。

之后您将 nolag(函数变量)设置为 true/false,这意味着单击下一个按钮,

您的应用程序会崩溃,请尝试这两个选项之一。

local _nolag = false;
function nolag()
    if(not _nolag) then
        _nolag = not _nolag -- or _nolag = true;
        ply:ConCommand("ax_stoplag");
    else -- no need if here, assuming _nolag will always be true or false;
        _nolag = not _nolag
        ply:ConCommand("ax_resetlag");
    end
end


local _nolag = false;
function nolag()
    _nolag = not _nolag;
    ply:ConCommand(_nolag and "ax_resetlag" or "ax_stoplag);
end