FC2ブログ

新しく増えた機能(1) defsub

NScripter2から増えた機能もちょっとメモしておきます。

先ずはdefsubでパラメータが渡せずに苦労した(たくさんdefsub作った)を解決する
「defsub」が兎に角、最強のパワーアップ機能だと思っています。

Lua側でも色々とカスタマイズ出来るのですが、スクリプター側としては
スクリプト命令をさらに独自で作れる(パラメータ指定できる)とありがたい限り。
そういう演出が可能になったdefsub関数。

・呼び出し方
defsub commandname,"paramlist"
※必ず初期化時に呼び出しておくこと。
 サンプルコードであれば00.txtにまとめてあるから、そこに追加するべき。

・パラメータ
commandnameが命令名。同じ名前のサブルーチンがその命令によってコールされる
"paramlist"がちょっと特殊。1文字、もしくは2文字でパラメータの形式をしていするというもの。

・paramlistに指定できる内容
 "N":数値をパラメータに指定。NUMって事かな。
 "S":文字列をパラメータに指定。STRINGって事かな。
 その他もあるけど、とりあえずこの2つがあれば生きていける。
 RとかTとかが必要になる場合はきっとあるけど、そこは実装次第かも。
 詳しくはマニュアル見たほうがきっといい。

・サンプルコード
以下、実際に今回実装する予定の関数。
うちの作品は「章構成」をとるので、各章の最初で決まった処理(※1)がある。
なので、そこの処理をまとめてみた。

(※1)
・章の最初で音楽を再生する(起動直後にその章に飛ぶので)
・章のタイトル画像を出して消す(ファイル名を章番号とリンクさせた)

;章の最初の処理を初期化
defsub setup_section, "SN" ;setup_section "bgmfilename",section_num

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

;セクションのセットアップ
@setup_section
param %bgmfile,%secnum

;BGM
bgmplay "bgm\" + %bgmfile + “.ogg”
bg "bg\title\T” + %secnum + ”a.png",#u,3000,"bg\system\faderule.png"
bg "bg\title\T” + %secnum + ”b.png",#u,3000,"bg\system\faderule2.png"
wait 1000

spdelete "bg"
print #u,4000,"bg\system\faderule2.png"
wait 2000
return




パラメータが無いのであればdefsubじゃなくてgosubでもいいと思う。
ただ、パラメータ無しってそもそもsub化するメリット少ないと思うのよね。
だから、おそらく
スポンサーサイト