0

我正在尝试检查是否在 Gmod Lua 的当前帧处按下了一个键cmd:GetButtons()

换句话说,我试图查看 Lua 中的位标志中是否存在标志。


我正在尝试以下代码

-- flags = 1024 (when holding forward)
-- IN_FORWARD = 1024
local flags = cmd:GetButtons()
if (flags & IN_FORWARD) == IN_FORWARD then
    print("You're walking forward.")
end

并在我的控制台中收到以下错误:

')' expected near '&'

lua 不支持逻辑运算符&吗?

是否有一种警告方法来检查使用 Lua 的位标志中是否存在标志?

4

2 回答 2

2

这可能有点晚了,但答案很简单。Garry 的 Mod Lua 支持 &&,不支持 &。干杯。

http://wiki.garrysmod.com/page/Specific_Operators

于 2017-11-06T15:29:00.350 回答
2

Lua 5.3 支持位运算符。

Lua 5.2 和 LuaJIT 作为库支持位操作(每个都有自己的,它们只是部分兼容。)

Lua 5.1 及更早版本没有位操作。如果这就是您正在使用的,您可以通过算术模拟位操作。例如(在您的具体情况下)(flags/IN_FORWARD)%2 >= 1:.

虽然我无法找到 Garry's Mod 所基于的 Lua 版本,但它确实具有作为库的位操作,您可以使用(或,或使用它们的语法扩展)来代替。bit.band(flags, IN_FORWARD) == IN_FORWARD~= 0!= 0

于 2017-02-01T21:17:29.037 回答