2017-02-01 28 views
0

我試圖檢查在Gmod Lua中當前幀是否正在按下某個鍵,並使用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 '&' 

是否盧阿不支持邏輯歌劇tor &

有沒有一種方法來檢查標誌是否存在於使用Lua的位標記中?

+0

GMOD已修改的Lua - 參見例如[此答案](http://stackoverflow.com/a/21768237/1847592)。可能''&也是標準Lua 5.1的語法擴展。但是當你試圖在標準的Lua中運行Gmod腳本時,你會遇到一個錯誤。 –

回答

1

Lua 5.3支持位操作符。

的Lua 5.2和LuaJIT支持位操作的庫(每個人都有自己的,他們只是部分兼容。)

的Lua 5.1及以上沒有位操作。如果這就是你正在使用的,你可以通過算術來模擬位操作。例如。 (在你的具體情況下):(flags/IN_FORWARD)%2 >= 1

雖然我無法找出什麼Lua版本蓋瑞模組是基於,它確實有bit operations as a library,你可以使用bit.band(flags, IN_FORWARD) == IN_FORWARD(或~= 0,或!= 0及其語法擴展)來代替。