--------------------
◆ OD-Emu "Lemures" version 1.1.0

--------------------


「そんなんじゃ、涙ちゃんは永久に笑いかけてくれない……誰もあなたのことを受け止めてくれない!! ……かはっ」
「……。世迷い言は聞き飽きたわ。さあ、そろそろ間奏が終わる。あなたは、消えなさい」

「使うよ、涙ちゃんっ! わたしの ―――― 命!!」
(挨拶

これは、「Dear... ~この歌をあなたに~」最終話で、アイドル歌手を目指すヒロイン・鷹羽みなとと、そのライバル・露木椎果が交わした台詞である。
聴いた者の心に作用する特殊な歌声「Angelic Voice」を操る2人は、デビューコンサートのステージ上で己の信念と生命を賭けて戦うのだ。みなとは親友を救うため、椎果は自分の存在意義を確かめるために。


さて、2007/01/17の記事にも書いた、LimeChat用マクロの開発支援ツール「Lemures」について。
同梱ドキュメントにも記載されているが、これは単体で動作するソフトウェアではない。
あくまでもLimeChat用のマクロとして、DLLファイルを作成する際の手助けになるというだけの超ニッチなツールである。
もともと自分用のものを公開しているだけなので、使い勝手やバグについてはあまり考慮されていない。
OD-Emu "Lemures" - LimeChat2.x Macro Function Emulator -
ODプロジェクトWiki/TRPG支援ツール/開発者向けツールよりLemuresを選択)
今回、5ヶ月ぶりにアップデートを行った。バージョン番号は1.1.0。





Lemuresバージョン1.1.0での主な変更点は、マクロ関数「$DllString」の対応と、幾つかのバグフィクスである。

マクロ関数「$DllString」の対応


LimeChat2.xには、DLLにアクセスするための手段が複数用意されている。
その1つにLimeChat1.x時代から使われていた「$DllString」があるが、今回の更新で対応させてみた。
そんなわけで、拙作OD TOOL for TRPGも動くように。
余談だが、これに伴いソフトウェアの名称を若干変更。

入出力する文字列のサイズを算出


LimeChat(Lemures)とDLL内の関数とでやり取りされる文字列長を算出し、表示するようにした。
入力データについては、DllHookエミュレート時は const char* Trail、$DllStringエミュレート時は const char* Input、出力データについては char* Output に渡されたバイト数である。
なお、入出力ともにNULLターミネータを含んだ値となっている。

出力において、LimeChatの仕様にある上限値を超えるとさまざまな問題が生じてしまう。
クライアントが強制終了してしまったり、場合によってはOSごとフリーズしてしまったり……あまり好ましくはない。
これをエミュレータで可能な限り拾うことが出来れば幸いである。

バグフィクス


標準入力からDLLに渡すデータを設定する際、今まではstd::cinを利用していたのだが、これをstd::cin.getline()に変更。
std::cinは余計な入力データを自動的に省いてくれるという便利な機能を持っている。
例えば数値を入力しなければならない時でも、ユーザが間違って文字を打ち込んでしまう可能性がある。
もちろんそのまま使うとエラーが起きてしまうのだが、その文字の部分を弾いてくれたりとなかなか使い勝手が良い。
が、半角空白で区切られた文字列なども余分なデータだと認識してくれちゃったりするわけで。
OD TOOLでは半角空白を含めたコマンドを打つことも多く急遽修正。

各ファイルの互換性


同梱サンプルDLLや、初期化ファイルを更新。
そのため、1.0.1以前のファイルとは互換性がなくなってしまっている。


相変わらず誰が使うのか分からないソフトウェアではあるが、バグレポートなどは随時受付中。
もちろん、それを修正するかどうかは未定である。
[PR]
R.F.D. | by odprfd | 2007-06-19 03:23 | 情報技術

--------------------

<< どれほどの「痛さ」ならば、もう... | オーヴァードたちの変な日常。 >>