在Lua中切换功能时出错?

Bit*_*eax 1 lua

这是一个游戏,但我认为所有的规则都适用.我有一个功能

function nolag()
    if !nolag then 
        nolag = true
        ply:ConCommand("ax_stoplag")
    elseif nolag then 
        nolag = false
        ply:ConCommand("ax_resetlag")
    end
end     
Run Code Online (Sandbox Code Playgroud)

在我的情况下,这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 )
Run Code Online (Sandbox Code Playgroud)

这样就会创建一个按钮,然后链接到该nolag功能.但是我可以点击它,但当我再次点击它时没有任何反应,我得到一个错误(游戏中的错误).基本上是nolag = truenolag = false问题并导致错误.

das*_*das 5

你定义了nolag作为函数.

if !nolag then哪个应该if not nolag then在lua,

基本上检查是否未设置nolag(如果未设置,则此语句将返回true).

之后你将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
Run Code Online (Sandbox Code Playgroud)