ゴブリンでもわかるNSLua/Lua5.1 第1回:もうちょっと導入
- NScripterからLuaが呼び出されるタイミング
- ①「system.luaに記述されたLuaスクリプトが、定義節終了時に自動で読み込み・実行される」
- ②「Luaに記述された関数を、NScripter命令として呼び出す」
- ③「Luaに記述された関数が、NScripterの特定の動作に反応して自動で呼び出される(コールバック)」
NScripterからLuaが呼び出されるタイミング
大別して3種類ある。
Lua言語それ自体についてのチュートリアル以前に、「いつ呼び出される/呼び出せるのか」という前提を確認しておく。
①「system.luaに記述されたLuaスクリプトが、定義節終了時に自動で読み込み・実行される」
----------00.txt------------------- *define game ;ここでsystem.luaが読み込まれる *start ;実行節の処理 -----------system.lua--------------- --ここで何かを処理。通常はluasub命令の定義など
「system.luaの自動読み込み/実行完了までは定義節」となる。
・system.luaからさらに別のluaファイル/プラグインを呼び出す
大抵はこうした処理を行う。
②「Luaに記述された関数を、NScripter命令として呼び出す」
----------00.txt------------------- *define game *start testtest ;NSCOM_testtest()関数が呼び出される -----------system.lua--------------- --■testtest命令を実行すると呼び出される NSExec("luasub testtest") function NSCOM_testtest() --ここで何かを処理 end
NScripter本体におけるdefsub(新規命令定義)と同じ役割。「呼び出す先がNScripterラベルではなく、Lua関数である」点だけが異なる。本体スクリプトと異なるファイルに書かなきゃいけないのは面倒に思えるかもしれないが、基本的にLuaという言語の利便性が手間を上回るので安心してよい。
③「Luaに記述された関数が、NScripterの特定の動作に反応して自動で呼び出される(コールバック)」
----------00.txt------------------- *define game *start savegame 1 ;セーブ実行直前にNSCALL_save()関数が呼び出される -----------system.lua--------------- --■セーブ直前に自動で呼び出される NSExec("luacall save") function NSCALL_save() --ここで何かを処理 end
システムカスタマイズと同じ動作だが、システムカスタマイズより割り込める動作の種類が多い。個々のコールバック解説は[ここに書いた]ので、Luaのチュートリアルを終えてからあらためて覗くとよい。