Gmod Lua - 检查位标志中是否存在标志

Gmod Lua - Checking if flag exists in bitflag

我正在尝试使用 cmd:GetButtons().

检查 Gmod Lua 中的当前帧是否按下了某个键

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


我正在尝试 following code:

-- 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不支持逻辑运算符&吗?

是否有一种 alertnative 方法可以使用 Lua 检查位标志中是否存在标志?

Lua 5.3支持位运算符

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

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

虽然我无法找出 Garry 的 Mod 基于什么 Lua 版本,但它确实有 bit operations as a library, and you could use bit.band(flags, IN_FORWARD) == IN_FORWARD(或 ~= 0,或!= 0 及其语法扩展)。

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

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