在 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 = true
和 nolag = false
是问题所在并且导致了错误。
您将 nolag 定义为函数。
在 lua、
中应该 if not nolag then
做 if !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
这是一款游戏,但我认为所有规则都适用。我有一个函数是
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 = true
和 nolag = false
是问题所在并且导致了错误。
您将 nolag 定义为函数。
在 lua、
中应该if not nolag then
做 if !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