ONScripter 開発日誌

Since: Feb. 6, 2002
Last updated: Nov. 15, 2009

2009年

11月15日

バグトラッキングシステム移行以来、今のところ4件スパム投稿がありました。これらは手動で削除しましたが、今後もこの程度で済んでくれればうれしいです。

秋月かたねさんからのバグ報告「動画再生の中断で次のメッセージに進めてしまうことがある」を元に、mpegplay および avi により動画を再生する際に、これまではキーダウンもしくはマウスボタンダウンを検出すると動作再生を終了していたのですが、キーアップもしくはマウスボタンアップを検出すると動画再生を終了するように変更しました。

秋月かたねさんからのバグ報告「動画再生中断後、動画の画像が残ってしまう」を元に、mpegplay による動画再生後に、画面の再描画を行い動画の画像を消すようにしました。なお、avi の場合は本家でも画像が残ってしまうので、ONScripterでもそのままです。

nodaguchiさんからのバグ報告「dwave系のバグ」を元に、アンダーバー(_)が先頭についた命令を処理する際、処理関数内で複数の命令を判別して処理している場合に、命令名が正しく判別されず処理ができないバグを修正しました。

10月18日

バグトラッキングシステムを影舞 on onscripter.sourceforge.jpに移行しました。今後はこちらをお使い下さい。

影舞はスパム対策がほとんどなされておらず、今まできさらさんに運用していただいていた影舞ではスパム投稿が1日に100通以上も蓄積されてしまう状態でした。これ以上ご迷惑をおかけするわけにもいかないため、unfuddleassemblaなど外部の無料ホスティングサービスを試してみたりしたのですが、少なくとも無料の範囲内では使えないと判断しました。最終的に、使い勝手や移行のしやすさなどから、sourceforge.jp上にONScripterプロジェクトを作成して、そこで影舞を運用することにしました。

適宜影舞のコードに手を入れ、スパム対策を行うつもりです。現時点では、新規報告やリプライを行う際に、オプション欄の中央のチェックボックスを外してから送信しないと無効投稿と見なすようにしています。これでうまく行かない場合には、ホームページで公開する決まった文字列の入力を求めるなど、なにかしら対策を取っていきます。外部のスパムフィルタが(簡単に)利用できればいいのですが……。影舞付属の CAPTCHA は、関連ライブラリが無いというエラーが出て使えませんでした。

ついでに、ONScripter のミラーページも、容量制限の厳しかったangelfire から sourceforge.jpに移行しました。

10月11日

秋月かたねさんからのバグ報告「--disable-rescaleが有効にならない」を元に、画像読み込み関数において、読み込み元がアーカイブか否かを正しく判定していなかったバグを修正しました。このバグは、exp-20090506 以降で発生していました。

8月22日

表示文のログを logsp を使用して表示する場合などに、行末における禁則処理が不完全であったバグを修正しました。

コンパイラの warning を取るためコードを微修正しました。

Lua 実装が中途半端ですがいったんリリースします。

7月12日

Paul さんからのパッチを元に、行が半角スペースで終わっている場合に正しく終端処理がされないバグを修正しました。

宮川さんからのバグ報告「ONScripter開発版がコンパイルできない on ubuntu」を元に、いただいたパッチを適用し、最新の libavifile-0.7-47 で ONScripter がコンパイルできない問題を修正しました。

6月14日

Lua の text 関連 callback を実装するために、テキスト処理回りを変更しています。これまでは、textgosub の処理をする場合に、ScriptHandler::readToken() はクリック待ち文字までのテキストを返していましたが、行末までのテキストを返すようにしました。また、改行文字をテキストに含めないようにしました。

6月13日

Paul さんからのバグ報告を元に、文字列で2バイト目の半角スペースが表示されないバグを修正しました。

5月10日

lrclick, getsavestr を実装しました。

NSSetIntValue, NSSetStrValue, NSGetIntValue, NSGetStrValue, NSGoto, NSGosub, NSReturn を実装しました。

5月9日

NSPopInt, NSPopIntRef, NSPopStr, NSPopStrRef, NSPopLabel, NSPopID, NSPopComma, NSCheckComma を実装しました。

exp-20090509a

実行方法変更に伴い発生した細かいバグを取りました。

5月8日

実験版として、スクリプトの実行方法を、最上位のイベントループに全ての処理をぶら下げる方式から、命令実行中もしくは実行後に必要ならイベントループを実行する方式に完全に移行しました。また、文字描画中の Lua アニメーションにも対応しました。

NSLuaAnimationInterval を実装しました。

5月6日

lsp の塗り潰し長方形に対応しました。

実験版として Lua に一部対応し、luacall animation, luasub, NSExec, NSLuaAnimationMode を実装しました。不完全ですが、本家のサンプルの一部が動きます。ただし、クリック待ちのアニメーションには対応していますが、文字描画中のアニメーションには未対応です。また、今のところ動作確認は Linux + Lua5.1 のみです。

Lua 対応にともない、スクリプトの実行方法を、最上位のイベントループに全ての処理をぶら下げる方式から、命令実行中もしくは実行後に必要ならイベントループを実行する方式に変更しています(まだ一部のみ)。こちらの方式の方が単純で、画面効果ルーチンなどはかなりすっきりしました。

3月31日

chris_sさんからのバグ報告「複数の条件が絡むif文の扱い」を元に、if文で複数の条件式が&で連結されている場合に、先頭から順に評価していき条件式が成立しない時点で残りは評価せずに終了するのが正しいところを、誤って全ての条件式を評価していたバグを修正しました。評価するだけでif文の結果自体は正しかったのですが、評価した条件式が不正な形をしていると強制終了してしまうことがありました。

3月29日

本家との互換性を保つため、ONS のセーブファイルのバージョンを上げま した。過去のセーブファイルももちろん問題なく読み込めます。

chris_sさんからのバグ報告「intlimit指定時の挙動」を元に、intlimitで指定した値の範囲外の数値を代入する際のバグを修正しました。intlimitで指定した最小値もしくは最大値に合わせるのが正しい挙動ですが、値を変更しないようになっていました。

herbas さんからのバグ報告「拡張スプライトの拡大率・回転角がセーブされない場合がある」を元に、保存は問題なかったのですが、読み込みの際に拡大率と回転角が正しく反映されないバグを修正しました。

herbas さんからのバグ報告「strspの縦文字数」を元に、strspで縦文字数が1行多く表示されるバグを修正しました。

shinshin3 さんからのご提案「EXTERNAL_MIDI_PROGRAM削除の提案」を元に、MacOSX 用の、外部プログラムによる MIDI 演奏補助のためのコードを削除しました。

  • 現在の MacOSX 版 SDL_mixer では MIDI 演奏ができる
  • 昔の ONScripter ランチャーは更新終了している

ということだそうです。

1月16日

本家の整数変数および文字変数の最大数は 4096 までであり、この範囲外へのアクセスは、他の変数を上書きしてしまうか、もしくはセグメンテーションフォルトを引き起こすことになると思っているのですが、まれに範囲外の変数を使用しているスクリプトがあります。ONScripter では、これまでは範囲外へのアクセスを 4097 番目の共通変数に強制的に振り替えていました(不完全でしたが)。今回、範囲外の変数が使用された場合には、その変数を線形リストに追加することで、範囲外の変数も通常の変数と同様に使用できるようにしました。なお、gloval.sav に保存されるのは従来通り 4096 番目までです。

1月4日

movie を実装しました。ただし、pos, async, stop には未対応です。また、SMPEG が使用できない環境では動作しません。

1月3日

haelethさんからのバグ報告「getparamなどに些細な修正」を元に、いただいたパッチを適用し、reset 後に selectcolor で設定した色が初期化されてしまうバグと、textoff の後に texton をせずに reset を実行した場合に文字が消えることがあるバグを修正しました。

ONScripterLabel::loadImage 内で用いる中間バッファを毎回生成/消去するのではなく、平均データ量のバッファを永続的に持つようにし、その量より大きいデータを読む場合にのみ生成/消去するようにしました。