#module
#deffunc meirei int a
a*=10
return a
#global
1. まず基本的に#module〜#globalでくくります。(モジュール別空間)
2. #deffuncを用意しする。最初のパラメータに実際にHSPスクリプト上で利用する命令名を記述する。ここでは「meirei」としてある。
3. 次にこの命令のパラメータを指定する。今回は1つのパラメータとして「int a」にしてある。intは整数値を意味し、変数名aはこのモジュール内で使う変数になる。
4. 宣言は終わったので、具体的な命令の処理を記述する。ここでは、「meirei」というユーザー定義命令の第1パラメータに指定した数値を10倍にしている
5. 最後に、システム変数statにその結果を返す。retrunのパラメータに結果を指定する変数aを用意してある。
実際に利用するサンプルコードは下のようになった。
#module
;HSP命令宣言
#deffunc meirei int a
a*=10
return a ; 結果を返す
#global
meirei 10
mes "結果:"+stat+""
meirei 333
mes "結果:"+stat+""
次は、パラメータ1とパラメータ2を足し算した結果を変えす処理。#deffuncに第2パラメータ用の宣言を「,」の後ろに追加すればいい。
#module
;HSP命令宣言
#deffunc meirei int a,int b
c = a*b
return c
#global
文字をパラメータで扱うには#deffuncで「str」を指定する。
#module
#deffunc meirei str a,str b
data=a
cunt=0
repeat
check=instr(data,cunt,b)
if check=-1: kekka=cnt:break
cunt+=check+1
loop
return kekka
#global
meirei "DEFFUNC-HSP3-HSP-MODULE", "-"
mes stat
このサンプルは、第1パラメータの文字列に第2パラメータの文字が何個含まれてるかチェックできる機能になってる。repeat・loopのループ中でinstr関数の文字検索を行い、ループのカウント値(HSPシステム変数cnt)を見ることで何個存在していたかが分かる仕組みになっている。
タグ:HSP

