問題タブ [nlua]
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.
c# - NLua クラッシュを処理できません
C# アプリケーションで lua スクリプトを使用しようとしていますが、別のスクリプトを実行する際に問題が発生します。3 ~ 4 個のスクリプトを実行すると、次の例外が発生し続けます。
ご覧のとおり、念のため、AccessViolationException 例外を「キャッチ」しています。
この小さなプロジェクトを作成して、エラーが発生していることを示しました。3~5 個のスレッドを追加して開始するだけで、クラッシュが発生するまでに 5 秒以上かかることはありません。
小さなプロジェクトのリンク: https://www.dropbox.com/s/4fyk8tblff7v5wa/SmallLuaTest.rar
c# - NLua で実行するスクリプトで .NET 列挙型に対してビットごとの OR を実行するにはどうすればよいですか?
NLua スクリプトを使用して複製しようとしている C# の次のリフレクション コードがあります。
G.Object.GetType().GetField("count", BindingFlags.Instance | BindingFlags.NonPublic);
2 つのフラグで Bitwise OR 演算を使用しようとするまでは、すべて問題ありません。私はすでに試しました:(
BindingFlags.Instance + BindingFlags.NonPublic
非数値の算術演算)
BindingFlags.Instance | BindingFLags.NonPublic
(明らかに機能していませんが、試してみる価値があります)
また、ビット操作ライブラリの純粋な Lua 実装も試しました。ORしようとしているのはNLuaの「ユーザーデータ」タイプと呼ばれているため、すべて失敗します。
tonumber() を使用した 'userdata' タイプの変換も失敗します。
私の現在のLuaコードは以下の通りです:
obj = G.Object:GetType()
field = obj:GetField("count", *...two OR'd flags here...*)
c# - NLua - ウェブページに表示されているアプリケーションはどこかに存在しますか?
NLua Web ページには、NLua バインディングを使用するライブ Lua インタープリター (編集: Windows 用) の画像があります。これはどこかにダウンロード用に存在しますか?
Lua のことはよく知っていますが、C# についての理解は非常に限られているため、可能であればソースからビルドする必要はありません。
事前にたくさんありがとう。
c# - Nlua との共有プロジェクトに実装された C# クラスを使用する
プロジェクトで Nlua を使用したいと考えています。私のプロジェクトのセットアップは次のとおりです。ロジックを実装した共有プロジェクトと、この共有プロジェクトを使用するいくつかのプラットフォーム固有のプロジェクトがあります。
この共有プロジェクトで定義されたクラスを、Nlua で実行する lua 関数内で使用したいと考えています。問題は、これが機能しないことです。
これはうまくいきます。しかし、共有プロジェクトで定義されたクラスを使用したい場合、これは機能しません:
私が得るエラーは次のとおりです。
私が読んだことから(ちなみに私はluaが初めてです)、変数が定義される前に変数に何かをしたい場合、このエラーが発生します(luaファイルは最初から最後まで解析されるため、私は確信が持てませんが)これ。)
私の質問は、共有プロジェクトで定義されたメソッドとクラスを Nlua で使用するにはどうすればよいですか? 私はアセンブリに何か問題があると確信していますが、このトピックに関するドキュメントはあまりないようです。
どんな助けでも大歓迎です!
c# - NLua 状態間で値を渡すことはできません
次のメソッドをセットアップして、ある lua 状態から別の lua 状態の関数パラメーターを介してテーブルを渡すと、テーブルが null になるという問題を再現します。
この場合、テーブルは関数として解釈されているようです。理由がわかりません。
このスニペットを実行した後の tableFuncResult の値は、オブジェクト配列 { null, null } です。テーブルテーブルがヌルです。代わりに、tableFunc を null にする必要があり、tableTable にはスコープ 2 で定義されたテーブルを含める必要があります。
c# - c# を使用した lua スクリプトのキリル文字列値
NLua ライブラリ (nlua.org) を使用して C# プロジェクトに lua スクリプトを追加しようとしています。私の問題は、文字列値のキリル記号の表現が正しくないことです。私のC#コードは次のとおりです。
スクリプト ファイルのコードは次のとおりです。
スクリプト ファイルのエンコーディングを変更しても解決しません。また、次のコードで正しいスクリプト ファイル エンコーディングを検索しようとしました。
コンソール出力は次のとおりです。
正しいバリアントがまったくないことがわかります。だから私はそれを修正する方法がわかりません。
.net - NLuaを使用して、「require」キーワードはどのように機能しますか
NLua を使用して .NET 内で実行したいビジネス ロジックを含む Lua コードがいくつかあります。
Lua ファイルの一部では、現在、他のファイルの関数を参照するために「require」キーワードを使用しています。これで、ZeroBrane Studio などを使用してコードを実行すると問題なく動作します。ただし、「DoFile」を使用してコードを NLua にロードすると、「モジュールが見つかりません」というエラーが発生します。
私の質問は; NLua 内でコードを実行するときに、「require」の概念を使用できますか? そうでない場合、ファイルに対して DoFile を実行する前に、これらの行を削除する必要がありますか (もちろん、ファイルを正しい順序で実行するようにしてください)。
更新: おそらく、Lua ファイル フォルダーを package.path に追加する必要があるだけだと思います。これDoString("package.path = '<my_path>' .. package.path");
は「ベストプラクティス」ですか?
c# - NLua での LuaScriptException の処理
そこで私は、SFML.Net を使用してグラフィックスなどを処理し、NLua をゲームのスクリプト作成に使用する単純なゲーム エンジンに取り組んできました。そのため、Lua スクリプトを実行し、いくつかのオブジェクトやメソッドなどを Lua 側に追加することになっている BaseGame クラスにこのメソッドがあります。例外をキャプチャするための try/catch ブロックがあります。
興味のある方は、main.lua ファイルの内容を以下に示します。
とにかく、C# メソッドは「成功!」を出力せず、「実行中」のみを出力し、何も起こらない理由がわかりません。例外も出力されません。ここで何が起こっているので、どうすれば修正できますか?
c# - NLUA スクリプトへのユーザー入力
最近、機能を簡単に編集できるようにすることを目的として、アプリケーションに NLUA サポートを追加しました。おそらく簡単な説明です。
DarkSigns やその他の「ハッキング」シミュレーターのスタイルで、単純なゲームを作成しています。私は自分自身とプレイヤーの両方にスクリプトを使用できるようにしたいと考えていました。これを提供するために NLUA を使用することにしました。ベース アプリケーションは、WPF と caliburn.micro を使用して c# で記述されています。
SO私は、実際には入力用のテキストボックスとコンソール出力用のリストビューであるシミュレートされたコンソールを持っています。(ゲーム内) IPにアクセスするための「接続」コマンドを含む、コマンドを入力して実行できるコマンド構造を持っていますアドレス、これにはスクリプトに関連付けられたポートが含まれます。したがって、1.2.3.4 のポート 25 に接続すると、「port25.lua」スクリプトが実行されます。
すべて正常に動作しますが、これらのスクリプトに直接入力する方法がないことに気付きました。呼び出す LUAio.read()
は実際には入力を待機せず、失敗します。
だから私はこれを解決する方法を探しています.残念なことに、NLUAのドキュメントは地面ではかなり薄いようです.
私が望むことは可能でしょうか?もしそうなら、どのようにNLUAio.read()
をテキストボックスにリダイレクトできますか(可能な場合)、または別の解決策がありますか?
それとも、NLUA から離れて、別のスクリプトを追加したほうがよい解決策でしょうか?
御時間ありがとうございます。