■ プラグインを作る

最終更新日 :2003/12/08

HSPさえあれば作れるプラグインについて解説しています。

xpimod.asのreadme_plugin.txtにも一応プラグインの作り方が書いてあるのですが、このページでは具体例を挙げてより分かりやすく説明するつもりです。

■ 概要/作成に必要なモノ

「プラグイン」とはプレイヤーの機能を拡張できる、HSP ver.2.60 で作成された ax ファイルの拡張子を xpi に変えただけのものです。
HSPでプログラムを作る事が出来れば、プレイヤー用のプラグインも簡単に作る事が出来ます。作成に必要なモノは以下の通りです。

■ プラグインの作成方法(1) - 必須編 -

この項では、HSPで書かれたスクリプトがプレイヤーのプラグインとして動作するのに最低限必要なことを解説しています。

必要なモノを揃えてインストールし終えたら、HSP Editor を開いて下さい。(HSPの基本的な使い方については色々なサイトに分かり易い解説がありますので、ここでは解説致しません。ご了承下さい。)

まず以下のように命令拡張&宣言をします。
; 初期化

	; 情報
	; (配布時のプラグインのファイル名/著作権者/タイトル/コメント)
	#define myself		"xpi_test.xpi"
	#define myauthor		"arc@arcis"
	#define mytitle		"test"
	#define mycomment		"test of plug-in"

	; 命令拡張
	#include "llmod.as"
	#include "hsgmrt.as"
	#include "mbmod.as"
	#include "xpimod.as"
#define するのは #include より前でなければならない点に注意して下さい。

次に、
	; プレイヤーへの登録
	plugin_regist		; 登録作業
	i=stat :if i<0 :end	; 登録作業の時間切れ
	onexit *exit
で、自分の存在をプレイヤーに知らせます。この作業の後に初めて、様々な情報を取得したりスクリプトを実行できるようになります。

onexit で指定したラベルでは
; 終了時処理
*exit
	plugin_release		; 登録の解除
	end
のように、必ず登録を解除する(プレイヤーにプラグインとしての役目を終える事を伝える)ようにして下さい。

※ [必須編] まとめ
; 初期化

	; 情報
	; (配布時のプラグインのファイル名/著作権者/タイトル/コメント)
	#define myself		"xpi_test.xpi"
	#define myauthor		"arc@arcis"
	#define mytitle		"test"
	#define mycomment		"test of plug-in"

	; 命令拡張
	#include "llmod.as"
	#include "hsgmrt.as"
	#include "mbmod.as"
	#include "xpimod.as"

	; プレイヤーへの登録
	plugin_regist		; 登録作業
	i=stat :if i<0 :end	; 登録作業の時間切れ
	onexit *exit

; メイン処理
	stop

; 終了時処理
*exit
	plugin_release		; 登録の解除
	end
このスクリプトを実行して、プレイヤーの右クリックメニュー(プラグイン > 起動中のプラグイン)に xpi_test.xpi が追加されていることを確認して下さい。

■ プラグインの作成方法(2) - 情報取得編 -

プラグインと情報をやり取りするには、スクリプトを使う方法及び直接情報請求する方法の二通りがあります。

直接情報請求する方法はとても簡単です。例えば、「 [必須編] まとめ」のメイン処理部を
	stop
	sdim s,65535
	plugin_getinfo s,xpiInfo_playlist<<1+1
	pos 5,5 :mes s
	stop
にするだけで、現在の再生リスト内容を取得&表示できます。

plugin_getinfo 命令の第二引数がやたら複雑な形をしていますが、“<<1+”より左側で「取得する情報の種類」を、右側で「取得する情報が文字列(1)か数値(0)か」を決めていると考えて下さい。

数値型情報を取得するなら
	dim mode
	plugin_getinfo mode,xpiInfo_sti+1<<1+0
	pos 5,5 :mes "再生モードの種類:"+mode+"\n"
	mes {"
	  0 : NOR/通常再生
	  1 : REV/逆順再生
	  2 : RND/ランダム再生
	  3 : REP/リピート再生
	  4 : STP/一曲で停止
	  5 : MDR/曲間空白再生
	"}
	stop
のような具合です。再生モードは数値型情報なので“<<1+”の右側が 0 になっている点に注目して下さい。
この他、plugin_getinfo 命令で取得できる情報の種類等については xmp_plugin_ref.html または xpimod.lzh に同梱されている redme_plugin_ref.txt をご覧下さい。

さて、ここまで見てきたところ、情報の取得に関してはスクリプトを使わないでも良さそうですね。
確かにスクリプトを使わなければ取得できない情報は殆どありません。しかし、例えばスキンに関する情報を一気に取得したい、等と言う場合にはスクリプトの方が便利で、何度も情報を請求しない分プレイヤーにも負担がかかりません。
	sdim s,65535
	plugin_command "get.xsp"
	plugin_getresult
	if stat&1 :plugin_getresults s :pos 5,5 :mes s
	stop
こうすると現在のスキンに関する情報がどっと流れ込んできます。
(以下執筆中)

(→開発者用ページのトップに戻る)
(→公式サイトに戻る)