在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 )

这将创建一个按钮,然后链接到 nolag 函数。然而,我可以单击它,但当我再次单击它时,什么也不会发生并且出现错误(游戏中的错误)。基本上,nolag = truenolag = false 是问题所在,并导致错误。

点赞
用户4261756
用户4261756

你定义了一个名为 nolag 的函数。

在 lua 中,if !nolag then 应该写成 if not nolag then

这个判断语句的作用是检查 nolag 是否被设置(如果没有设置,那么这个语句会返回 true)。

之后你会把 nolag(函数变量)设置为 true/false,这意味着下一次按钮点击会导致应用崩溃,尝试使用以下两种选项中的一种:

local _nolag = false;
function nolag()
    if(not _nolag) then
        _nolag = not _nolag -- 或者 _nolag = true;
        ply:ConCommand("ax_stoplag");
    else -- 如果假设 _nolag 总是 true 或 false,这里就不需要 if 语句了;
        _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
2015-01-03 20:34:06