#deffunc p1 p2,p3… [新規命令を割り当てる]
p1=命令名 : 割り当てられる命令の名前
p2〜p9 : バラメータタイプ名
たとえば、
#deffunc test val,str,int
のように指定すると、以降はtestという命令が使えるようになり、
test 変数, 文字列, 数値
のようにパラメータを指定できるようになります。
ただし、バラメータタイプの指定には、いくつかの制限があります。
1. strタイプで渡せる文字列は255文字以下
モジュールに文字列を渡す場合には、基本的に255文字以下
となります。それ以上の文字数を持つ文字列を渡す場合は、
変数を経由するようにしてください。
2. val,strタイプは、最初の2つのみ指定可能
valおよび、strのタイプ指定は最初の2つにのみ可能です。
つまり、3番目以降のパラメータはすべてintとなります。
それぞれのパラメータは、mref命令のローカルパラメータとして取り出す
ことが可能です。mref命令については、mref命令詳細を参照してください。
#deffunc 名前 onexit
のように、引数を記述する部分に「onexit」を入れることで、
HSPのプログラムが終了した場合に、その命令が自動的に実行されます。
ただし、この命令内では以下の点に注意してください。
・end、stop、wait、await、dialogなど時間待ちが起こる命令は使用できません
・mesなど画面に出力する命令は機能しません
つまり最低限のメモリ解放や外部DLLの呼び出しなど最終的に行なわれる作業だけを
記述するものと考えて下さい。
同様の動作をするものにonexit命令がありますが、システムの処理としては
[HSPのプログラムを中断]
↓
[onexit命令の飛び先を実行]
↓
[モジュールのクリーンアップ先を実行]
↓
[HSPリソースの完全な破棄]
という順番になっています。
onexit命令の飛び先では、プログラムを中断すること自体を中止することも
可能ですが、クリーンアップ機能の場合は中断はできません。
また、複数のモジュールや、複数のクリーンアップ命令が登録された場合には、
登録された順番とは逆順に辿って次々に実行されていきます。
備考
ver2.55標準命令
参照
#global命令
#module命令
mref命令