問題タブ [lua]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
8235 参照

c++ - オブジェクトのリストをC++からLuaに渡すにはどうすればよいですか?

私はBitfighterの主任開発者であり、Luaを使用してユーザースクリプトのボットを追加しています。私はC++とLuaを使用して、Lunarを使用してそれらを接着しています。

私はかなり単純なはずだと思うことをしようとしています:LuaにC ++オブジェクト(以下のコードのボット)があり、そのメソッド(findItems)を呼び出して、C++にその周辺の領域を検索させますロボットを作成し、見つかったオブジェクトのリストを返します(TestItemsなどはここには表示されていません)。私の質問は、C ++で見つかったアイテムのリストをアセンブルして返す方法と、Luaでそれらを反復処理する方法です。

基本的に、<<<<アイテムのリストを作成し、それを下のlua >>>>ブロックに戻し、その下に含まれるLuaコード自体に必要な修正を加えたいと思います。

私はコードをシンプルで完全なものにしようとしました。ここにあまり多くないことを願っています!ありがとう!

C++ヘッダーファイル

C++.cppファイル

Luaコード

0 投票する
2 に答える
1421 参照

variables - Luaの値をトゥイーンする

これはどうしたの?x時間で値をトゥイーンしたい。また、最初と最後に「使いやすさ」があると便利であることも考慮に入れています。

私は本当に尋ねるべきではないことを知っています、しかし私は自分自身を試しました、そして私は立ち往生しています。遅延を引き起こすには、関数wait(time)を呼び出す必要があると想定してください。

0 投票する
2 に答える
6609 参照

c++ - Luaスレッドをきれいに終了するにはどうすればよいですか?

私の状況では、Lua (C) API を使用して、文字列に保持されたスクリプトを実行しています。ユーザーがスクリプトの実行を終了できるようにしたいのですが (スクリプトに無限ループが含まれている場合、これは必須です)、どうすればよいですか?

0 投票する
4 に答える
2906 参照

c++ - Lua、C++、貧乏人のサブクラス化

私はBitfighterの主任開発者であり、Luna (Luna のバリアントで、こちらから入手可能) を使用して Lua と C++ を組み合わせて作業しています。

この環境ではオブジェクト指向と継承が適切にサポートされていないことはわかっていますが、これらの制限を少なくとも部分的に回避する方法を見つけたいと考えています。

ここに私が持っているものがあります:

C++ クラス構造

Robot はgetFiringSolution(GameItem item)というメソッドを実装します。このメソッドはitemの位置と速度を調べ、ロボットがitemを攻撃するために発砲する必要がある角度を返します。

したがって、私の問題は、rocksstone、またはrockyStonesを getFiringSolution メソッドに渡したいということですが、その方法がわかりません。

これはロックのみで機能します:

理想的には、私がやりたいことは次のようなものです:

Lunar のチェック関数は、スタック上のオブジェクトが GameItem に定義されたものと一致する className を持つことを望んでいるため、この潜在的な解決策は機能しません。(Lunar に登録するオブジェクト タイプごとに、オブジェクトが正しいタイプであることを確認するために Lunar が使用する文字列の形式で名前を指定します。)

考えられるすべてのサブクラスをチェックする必要がある場合、次のようなものに落ち着きます。

このソリューションの問題点は、スタック上の項目が正しいタイプでない場合、check 関数がエラーを生成し、対象のオブジェクトをスタックから削除してしまうことです。

スタックから Rock/Stone/RockyStone オブジェクトへのポインタを取得し、それがどのタイプであるかを把握し、それを操作する前に正しいものにキャストする必要があると考えています。

型チェックを行う Lunar の重要な部分は次のとおりです。

このように呼ぶと:

次に、luaL_checkudata() がスタック上のアイテムが Rock かどうかを確認します。もしそうなら、すべてが桃色であり、getFiringSolution() メソッドに渡される私の Rock オブジェクトへのポインターを返します。スタックに Rock 以外のアイテムがある場合、キャストは null を返し、luaL_typerror() が呼び出され、アプリが lala land に送られます (エラー処理によって診断が出力され、極度の偏見でロボットが終了します)。

これを進める方法についてのアイデアはありますか?

どうもありがとう!!

私が思いついた最善の解決策...醜いが機能する

以下の提案に基づいて、私はこれを思いつきました:

じゃあ後で...

おそらくこれでさらに最適化を行うことができます...これをループに折りたたむ方法を本当に知りたいです。実際には、処理するクラスが 3 つよりもはるかに多いため、このプロセスは次のとおりです。少し面倒です。

上記のソリューションのわずかな改善

C++:

じゃあ後で...

Lua ヘルパー関数。ユーザーが手動でコードに追加する必要がないように、別のファイルとして含まれています。

ユーザーは Lua から次のように呼び出します。

0 投票する
5 に答える
14795 参照

c# - C# / .Net で Lua データ構造を解析する最も簡単な方法

C# または任意の .Net ライブラリで Lua データ構造を解析する簡単な方法を知っている人はいますか? これは、JavaScript の代わりに Lua を使用することを除いて、JSON デコードに似ています。

この時点で、私は自分で書く必要があるように見えますが、すでにそこに何かがあることを願っています.

0 投票する
2 に答える
636 参照

c++ - Rake を C++ アプリに埋め込む? または、LUA 用のレイクはありますか?

Ruby を C++ アプリに埋め込むことに関して、いくつかの質問を見つけました。上位投票の回答のほとんどすべてが、代わりに Lua を使用することを提案しています。

私が考えているプロジェクトは、Rake で既に表現されている文法 (ルール エンジンです) によってより適切に処理されると仮定すると、Rake を C++ アプリに埋め込む簡単な方法はありますか、または Lua 用の Rake のようなモジュールはありますか?

明確にするために: 可能であれば、これを自己完結型のアプリにしたいと考えています。必要最小限の (Windows) OS で実行されるため、最小限の前提条件が必要です。

0 投票する
3 に答える
1994 参照

c++ - Swigを介してC++とLuaの間で変数を渡します

私は多数のクラス(150以上)を持つC ++プロジェクトに取り組んでおり、各クラスには10から300程度のフィールドがあります。再コンパイルを必要としないコールバックをコーディングできるように、テスト用のスクリプトインターフェイスを提供できるようにしたいと思っています。私はPythonよりもCAPIに精通しているので、Luaでこれを実行したいと思いますが、頭痛の種を減らすことができれば、Pythonで実行できれば幸いです。

私はC++からLua関数を呼び出す方法とその逆の方法をしっかりと把握しており、基本的なデータ型をやり取りする方法を知っています。私が持っている質問は、SWIGを使用して2つの間でユーザー指定のデータ型を共有する方法です。

たとえば、C ++のある時点で、250個のフィールドを持つオブジェクトのいくつかのメンバーデータを評価したい場合があります。そのオブジェクトをLuaに渡して、生成されたSWIGラッパーを使用してそのオブジェクトを操作し、特定のフィールドを表示してから、(変更される可能性のある)オブジェクトをC++に戻して継続して使用できるようにしたいと思います。 。

また、ラッパーを使用してLuaでオブジェクトのインスタンスをインスタンス化し、それをC ++に渡して、オブジェクトの通常のC++バージョンとして使用できるようにしたいと思います。

これは可能ですか?誰かが私にチュートリアルや明示的な例を教えてもらえますか?

あなたが提供できるどんな助けにも感謝します!

0 投票する
4 に答える
2862 参照

lua - ルアでクロージャーを取得する方法は?

以下の行を含む「test.lua」というファイル名があるとします。

loadstring はグローバル環境で処理を行っているため、f_generate()() を呼び出すと、「グローバル 'f' (nil 値) を呼び出そうとしています」というエラーが表示されます。

コメントアウトされたコードは、関数環境がこの問題に対処できないことを示しています。

原因テーブルは lua の唯一のデータ構造です (そして、関数環境と他の多くのものはテーブルによって実装されます)、クロージャーもテーブルによって実装されると仮定するのは合理的だと思いますが、どうすれば取得できますか?

0 投票する
1 に答える
735 参照

inheritance - (SWIG / Lua)swig_lua_classの基本/親クラスのリストにアクセスする方法

特定のクラスのセットに対して生成されたSWIGラッパーで、SWIGは、そのクラスが継承するすべての親クラスのC文字列表現のリストを保持していることに気付きました。(char ** base_names)。機能があることは知っています

これは、指定された変数のデータ型の文字列表現を返します。親クラスのテーブルを文字列として返す関数もありますか?そうでない場合、この関数を書く簡単な方法はありますか?私はSWIGの内部の仕組みにまったく精通していません。

ありがとう!

0 投票する
8 に答える
845 参照

ruby - Rubyが大好きな場合、LuaやErlangなどの別の言語を今すぐ学ぶ必要がある理由はありますか?

Rubyが大好きな場合、LuaやErlangなどの別の言語を今すぐ学ぶ必要がある理由はありますか?