Download

akari.dll(ver2.003)

このプログラムを使用したいかなる不利益も作者は責任を負いません。
伺かのサブシステムとして使う場合に限り、無償で無制限に使用できます。

灯サンプルゴースト

akari.zip

最低限の機能のみが付いた、ゴーストの骨組みです。

灯サンプルゴースト2
「639C 灯花」

639c_tomoka.nar

<preview>

里々に似た形でトークを記述できるようにしたゴーストです。
普通のゴーストを作る場合はこちらを改変して作るほうが
やりやすいかもしれません。

灯テスター

akari_tester1.0.zip

灯スクリプトのテストに使えるプログラムです。
詳しくは中のreadme.txtを参照下さい。

スクリプト暗号化プログラム

amb.exe(ver1.1)

このプログラムを使用すると、スクリプトが一つのファイルに纏められて暗号化されます。

使い方
暗号化したいファイルを選択し、このプログラムに
ドラッグ&ドロップしてください。
プログラムが置かれているフォルダにmain.ambファイルが
作成されます。
このmain.ambを栞と同じフォルダに置いてください。
注意
・akari.dllと同じフォルダに、main.ambと一緒に暗号化されていないスクリプトファイルを置いた場合、
暗号化されていないファイルが優先されます。
・復号化は出来ませんので、スクリプトのバックアップは必ず取るようにしてください。

内部関数以外の機能
イベント辞書変数
_eventdictという変数の中にイベント名をキーとした値を入れておくと、関数を呼ぶこと無く本体にその値を返します。
以下はダブルクリック時に「ダブルクリックされました」と返すように設定しています。
 _eventdict += $("OnMouseDoubleClick", "ダブルクリックされました");
システム辞書変数
本体からの通知イベントによって渡されるリクエストが辞書型に整形されて格納されています。
灯自体も参照したりするので、書き換えると動作がおかしくなることがあります。
例えば_systemdict["hwnd"]["Reference0"]の値を変更すると、_speak関数が使えなくなったりします。
_customrequest関数
スクリプト内に_customrequestという名前の関数を定義しておくと、本体からのイベントはその関数に渡されるようになります。
返り値の型はarray、関数名は_customrequest、引数はdict型にする必要があります。
以下の_customrequest関数は、ゴーストが_customrequest関数が定義されていない時と同じ動きをする関数です。

array _customrequest( dict ref )
{
    string  s   =   _eventdict[ ref["ID"] ];
    if( s == "" )   s	= _fncstr( ref["ID"], ref );
	
	array	ar;
	ar	+=	"SHIORI/3.0 200 OK";
	ar	+=	"Sender: akari";
	ar	+=	"Charset: Shift_JIS";
	ar	+=	"Value: "+s;
	ar	+=	"";
	ar	+=	"";
	
	return ar;
}

この関数を以下のように使うと、灯をSAORIとして使用することが出来ます。

array _customrequest( dict ref )
{
	array	ar;
	if( _strstr(ref["head"],"SAORI") != -1 )
	{
		ar	+=	"SAORI/1.0 200 OK";
		ar	+=	"Sender: akari";
		ar	+=	"Value0: "+ref["Argument0"];
		ar	+=	"Charset: Shift_JIS";
		ar	+=	"";
		ar	+=	"";
	}
	else
	{
		ar	+=	"SAORI/1.0 400 Bad Request";
		ar	+=	"Sender: akari";
		ar	+=	"Charset: Shift_JIS";
		ar	+=	"";
		ar	+=	"";
	}
	return ar;
}
メモ
ツキヨタケとの連携
ua栞「ツキヨタケ」でSAORIのようなものとして~
読み込む方法。

■tkytk_shioriフォルダ内にakari.dllとmail.azrを置く。
 main.azrには以下のスクリプトを書いておきます。
 灯のバージョンを返す簡単な関数です。
 _lua_requestはluaから呼ぶことが出来る関数です。
 引数は文字列型一つ、返り値は文字列型です。

string _lua_request( string test )
{
	return test + _version();
}

■ツキヨタケの初期化時に呼ばれる関数、「shiori_init()」の中に以下のスクリプトを書きます。

	package.cpath = package.cpath..";"..SHIORI_PATH.."?.dll"
	akari	= require( "akari" )
	akari.load( SHIORI_PATH ) -- 灯の場所を灯に教えています。

※package.cpathは、luaが拡張DLLを探す時に使われるパスのリストです。

■ツキヨタケの終了時に呼ばれる関数、「shiori_uninit()」に以下の関数を書きます。
	akari.unload()


■ダブルクリック時に実行されるように、index.lua内の「OnMouseDoubleClick」関数を以下のように変更してみます。
 requestという名前の関数は、灯スクリプト内の_lua_requestに対応しています。

function OnMouseDoubleClick(tbl)
	return akari.request("akari.dllのバージョンは")
end
Unicode対応について
灯はVer 2.00からUnicodeに対応しています。
具体的な変更点は以下になります。
・「.azr」という拡張子のスクリプトファイルは全てUTF-8という文字コードで読み込まれるように。
・_httpgetの第二引数、_readtextの第二引数、_writetextの第三引数で"utf8"を指定すると、UTF-8で読み込まれるように。
 (今までは一旦Shift_JISに変換されていた)
・ベースウェアへのレスポンスをCharaset: UTF-8で返すように。

※_httpget、_readtext、_writetextといった外部のファイルを扱う関数について、
文字コードを指定しない場合は今までどおりShift_JISとして読もうとするので、utf8を指定するようにして下さい。