我是一般编码的新手,我想为自己的爱好学习基本的Lua脚本。 在使用Lua脚本之后,语法似乎没有错误,但是我遇到了一个我不理解的问题,我把它分解为这个基本功能:
{$lua}
ID1 = "10"
ID2 = "0"
if (ID1 ~= nil and ID1 == "10") then
writeInteger(ID2,"25")
end
print(ID2)
问题是writeInteger似乎根本不起作用,ID2保持在值“0”,而它应该变为“25”。 任何帮助将不胜感激。
答案 0 :(得分:0)
这不是有效的Lua,或者至少它不是有效的香草(开箱即用)Lua,而且由于你没有指定任何其他内容,我们无能为力。我将假设writeInteger
是一个有效的函数(因为你的翻译不会抱怨调用零值),但我认为它不能按预期工作。
如果您想将ID2
变量设置为25
,只需写下:
ID2 = 25
Lua会自动将字符串类型转换为整数类型。您可以运行print(type(ID2))
来确认此
如果您使用的是作弊引擎(快速谷歌搜索建议),writeInteger函数需要一个地址和一个值。
function writeInteger(Address, Value): Boolean - Returns true on success.
我不确定ID2
(Lua变量)是否是有效地址,但我确信"25"
不是整数。您应该删除引号以启动,并且由于该函数返回一个布尔值,您可以通过执行以下操作来查看该函数是否成功:
print(writeInteger(ID2, 25))
答案 1 :(得分:0)
Lua对数字,布尔值和字符串等基本类型使用pass by值。因此,如果将数字传递给writeInteger之类的函数,则会在函数中创建本地副本。该函数可以更改此副本,但它对调用者没有影响(在本例中为writeInteger)。我不知道writeInteger应该如何工作但是如果你想调用一个改变它的参数的函数你可以创建一个表并传递它。表仍然按值传递,但表的“值”是其内存地址(因此实际上表通过引用传递,您可以通过将表传递给函数来更改表的内容)。
在此处查看更多信息 Function/variable scope (pass by value or reference?)