2017-11-27 8 views
-1

私は一般的なコーディングの初心者です。自分の趣味のための基本的なLuaスクリプトを学びたいと思っています。 Luaのスクリプトで働いた後、構文のすべては、エラーなしのようですが、私は理解していない一つの問題に遭遇してきた、私はこの基本機能にそれを壊した:問題があることである基本的なLuaのwriteInteger関数に固執

{$lua} 
ID1 = "10" 
ID2 = "0" 

if (ID1 ~= nil and ID1 == "10") then 
    writeInteger(ID2,"25") 
    end 

print(ID2) 

writeIntegerはまったく動作していないように見えますが、ID2は "0"のままですが、 "25"になるはずです。 ご協力いただければ幸いです。

+0

誰もwriteIntegerが行うことになっているものを知っているより多くのここを参照してください、何の引数それはあなたが起草気にしてくださいだろう –

+0

などを期待しますか?私は完全にそれに無責任です – GonthorianDX

+0

あなたはあなたのLuaスクリプトを実行していますか? LuaをスタンドアロンのLuaスクリプトなどのために使用するマイクロコントローラの1つで、ゲームに埋め込まれたLuaですか? writeInteger関数がどこから来るのかを調べるために、より詳細な情報が必要です。 –

答えて

0

これは有効なLuaではありません。少なくとも、それは有効なバニラ(既定の)Luaではありません。他に何も指定していないので、助けてくれることはあまりありません。私はwriteIntegerが有効な関数であると仮定します(あなたのインタプリタがゼロ値への呼び出しについて不平を言っていないので)が、期待通りに動作しないと思います。あなたは25ID2変数を設定したい場合は

、単に書く:

ID2 = 25 

Luaは自動的に整数型に文字列型に変換します。 print(type(ID2))を実行してこれを確認することができます

cheatエンジンを使用している場合(すばやいgoogle検索のように)、writeInteger関数にはアドレスと値が必要です。

function writeInteger(Address, Value): Boolean - Returns true on success. 

ID2場合、私はわからない、Luaの変数は、有効なアドレスですが、私は"25"が整数でないことを確信しています。あなたは、開始するには引用符を削除する必要があり、関数がブール値を返すので、関数が実行して成功したかどうかを確認することができます:

print(writeInteger(ID2, 25)) 
+0

これはチートエンジンスクリプトです。 ID2は変更される変数であり、指定された計算に基づいて値を書き込む必要があることを意味するwriteInteger関数をトリガする必要があります。 私はwriteIntegerがvanilla Luaの一部ではないことに気づいていませんでした。 私は、説明に基づいてどこかから値を呼び出すこともできるとわかりましたが、悲しいことに、実際のアドレスに書き込むだけで、同じ方法でその値に書き戻す方法があるかどうかわかりません。 – GonthorianDX

0

Luaは数値、ブール値や文字列などのプリミティブ型の値でパスを使用しています。そのため、writeIntegerのような関数に数値を渡すと、関数内にローカルコピーが作成されます。関数はこのコピーを変更できますが、呼び出し元(この場合はwriteInteger)には影響しません。私はwriteIntegerの動作を知りませんが、引数を変更する関数を呼び出す場合は、テーブルを作成して渡すことができます。テーブルは引き続き値で渡されますが、テーブルの "値"はそのメモリアドレスです(実際にはテーブルは参照渡しとなり、関数に渡すことでテーブルの内容を変更できます)。

Function/variable scope (pass by value or reference?)