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 支持 &&,不支持 &。干杯。
我正在尝试使用 cmd:GetButtons()
.
换句话说,我试图查看 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 支持 &&,不支持 &。干杯。