Cataclysm-BNのC++側で、ゲーム機能や定数、コールバックなどをLuaから呼び出せるAPIとして登録するスキルです。
- Luaからマップ操作を呼び出したいとき
- Lua APIに定数を追加したいとき
- Luaからコールバックを登録したいとき
C++の`string_id`や列挙型、読み取り専用の基本型をLuaへ公開するためのバインディング追加手順を示し、登録と動作確認を支援します。
Add simple Cataclysm-BN Lua bindings for string_id types, enums, and basic read-only C++ types. Use when exposing straightforward C++ types to Lua.
実行スコア 未検証
インストール方法を見るCataclysm-BNで、単純なC++型をLuaから利用できるようにする手順を案内します。対象はstring_id型、列挙型、読み取り専用の基本クラスなどです。型に応じてsrc/catalua_luna_doc.hへドキュメント用マクロを追加し、適切なcatalua_bindings_*.cppで登録する方法を示します。メンバーやメソッドの公開に使うマクロ、既存コードのパターンも確認できます。追加後はビルドし、Luaコンソールで値の生成やメソッド呼び出しを確かめます。
ゲーム内スクリプトから既存のC++型や定数を参照させたい開発者に向いています。大規模なクラス連携ではなく、IDや列挙値、基本的な読み取り専用データを公開したい場面で使えます。
string_id型をLuaへ公開する手順を教えて」C++の編集とビルドが必要です。資料ではlinux-fullプリセットでのビルドと、ゲーム内Luaコンソールでの確認例を示しています。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
This skill helps you add Lua bindings for simple C++ types like string_id, enums, or basic classes.
my_type, my_enum)src/catalua_bindings_ids.cpp for IDs, or a relevant catalua_bindings_*.cpp)src/catalua_luna_doc.h// In src/catalua_luna_doc.h, add:
LUNA_ID( my_type, "MyType" )
// In src/catalua_bindings_ids.cpp, in reg_game_ids():
reg_id<my_type, has_int_id>( lua );
// Use true if type has int_id, false otherwise
// In src/catalua_luna_doc.h, add:
LUNA_ENUM( my_enum, "MyEnum" )
// In appropriate catalua_bindings_*.cpp file:
{
auto values = sol::initializers(
"VALUE_ONE", my_enum::VALUE_ONE,
"VALUE_TWO", my_enum::VALUE_TWO
);
luna::set_enum( lua, values );
}
Note: Use trailing return types and auto throughout (see patterns below).
// In src/catalua_luna_doc.h, add:
LUNA_DOC( my_class, "MyClass" )
// In appropriate catalua_bindings_*.cpp:
#define UT_CLASS my_class
{
auto ut = luna::new_usertype<UT_CLASS>(
lua,
luna::no_bases,
luna::no_constructor
);
// Add members
SET_MEMB( my_field ); // Mutable field
SET_MEMB_RO( const_field ); // Read-only field
SET_FX( my_method ); // Method
}
#undef UT_CLASS
DOC( "Description of the type" );
DOC( "Additional details about usage" );
SET_MEMB(name) - Mutable member variable or propertySET_MEMB_RO(name) - Read-only memberSET_FX(name) - Member functionSET_FX_T(name, signature) - Member function with specific overloadLUNA_ID(CppType, "LuaName") - For string_id/int_id pairsLUNA_DOC(CppType, "LuaName") - For documentation-only typesLUNA_ENUM(CppType, "LuaName") - For enum typesLUNA_VAL(CppType, "LuaName") - For value typesLUNA_PTR_VAL(CppType, "LuaName") - For pointer typesAfter adding bindings:
# Build
cmake --build --preset linux-full --target cataclysm-bn-tiles
# Test in Lua console (debug menu -> Lua console)
local my_id = MyTypeId.new("some_id")
print(my_id:str())
print(my_id:is_valid())
operator== and operator<src/catalua_luna_doc.h - Add LUNA_* macrosrc/catalua_bindings_ids.cpp - For ID typessrc/catalua_bindings_*.cpp - For other types (choose appropriate file)docs/en/mod/lua/explanation/lua_integration.mdsrc/catalua_bindings_ids.cppsrc/catalua_luna.hまだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
Cataclysm-BNのC++側で、ゲーム機能や定数、コールバックなどをLuaから呼び出せるAPIとして登録するスキルです。
複雑なC++クラスをLuaから利用できるように、メソッドや継承、プロパティ、演算子、オブジェクトの所有権を含むバインディングの追加を支援します。
Gitの指定範囲に含まれる変更を調べ、英語・韓国語・日本語のゲーム更新履歴を作成・同期します。プレイヤー向けの項目整理や画像・動画の掲載にも対応します。
Cataclysm-BN向けのDeno/TypeScriptスクリプトを、プロジェクトの規約に沿って作成・修正します。CLIや移行処理、コード生成、Gitフックなどの実装を支援します。
同じ英語文字列が文脈によって異なる意味になる場合に、gettextの文脈情報を追加し、対象言語のPO翻訳を修正するスキルです。
Cataclysm-BNのLuaバインディング実装で使うLunaマクロ、型登録、ライブラリ、ビルド手順やよくあるエラーを調べるリファレンスです。