特に個々について、ここでは解説を必要としないでしょう。
異なる引数の数や型、返り値の数について、
どのように記述するのかの参考としてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | // 指定の武将番号の武将の年齢を得る int Lua_GetBushouYearsOld(lua_State *L) { // 引数を取得 int iBushouID = ( int )lua_tointeger(L, 1); // スタック削除 lua_pop(L, lua_gettop(L)); int years = Get_武将年齢(iBushouID); // スタックに戻り値を積む lua_pushinteger(L, years); // 戻り値の数を返す return 1; } // 吹き出し左上スタート int Lua_DoHukidashiStart(lua_State *L) { // 1番目の引数を取得 int iBushouID = ( int )lua_tointeger(L, 1); // 2番目の引数を取得 string message = lua_tostring(L, 2); 噴出ダイアログ《通常・左上》開始(iBushouID, message ); // スタック削除 lua_pop(L, lua_gettop(L)); // 戻り値の数を返す return 0; } // 吹き出し左上終了 int Lua_DoHukidashiEnd(lua_State *L) { 噴出ダイアログ《通常・左上》終了(); // スタック削除 lua_pop(L, lua_gettop(L)); // 戻り値の数を返す return 0; } void カスタム::On_起動時() { // 上記関数群をLの画用紙に登録 lua_register(L, "GetBushouYearsOld" , &Lua_GetBushouYearsOld); lua_register(L, "DoHukidashiStart" , &Lua_DoHukidashiStart); lua_register(L, "DoHukidashiEnd" , &Lua_DoHukidashiEnd); // test.lua というファイルの内容をLの画用紙に書いて、実行 try { LUA::Do_ファイル( "test.lua" ); } catch (...) { } } void カスタム::On_相場変更直前() { // Lの画用紙にある、「soba_change」の関数を呼び出す。 try { LUA::Do_コマンド( "soba_change()" ); } catch (...) { } } |
1 2 3 4 5 6 | function soba_change() local bushou_name = GetBushouYearsOld( 10 ) -- 武将番号【配列用】が10番目の武将の年齢 dprint(bushou_name) DoHukidashiStart( 10, "吹き出しがスタート\nしたよ~" ); DoHukidashiEnd(); end |