2017-02-01 11 views
0

cmd:GetButtons()でGmod Luaの現在のフレームでキーが押されているかどうかを確認しようとしています。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は論理的オペラをサポートしていません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)を使用することができます。

1

これは少し遅れるかもしれませんが、答えは簡単です。 Garry's Mod Luaは& &であり、&ではありません。乾杯。

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

+0

追加された答えをありがとう、私はこの単純な答えが私のためにそれを固定していたと確信しています:) – Acidic

関連する問題