# 20031008

#210

×#200 からナビが異常に重い
ナビの通信を従来より効率化、通信量減少。高速化
×ホットキー ctrl+alt+b を使用すると異常終了、その後二度と起動できない
roaddr.ini を RO のインストールディレクトリから読む
古いメモリアドレス指定(StatIndex 型)でも新しいメモリアドレス指定(HPIndex 型)でもどちらでも動く

唯一注意すべきは、HPIndex エントリの有無で新旧見分けているので、新しい方式のくせに間違ったアドレスを指していてしかも StatIndex もあるという悪意の塊のような roaddr.ini を使うとハマります。まあ普通に行けばそんなことにはならないと思いますが。

#210b

×ワールドサーバ名が常時 [unknown]


# 20031007

#200

HP/SP/MAXHP/MAXSP が正しい。
acoaddress.txt 廃止、roaddr.ini から必要なメモリアドレスを読む。
コードに埋め込まれていた IP アドレスとサーバ名称の対応表、エリアファイル名とエリア名の対応表、クラス ID とクラス名の対応表を外部ファイル化。外部ファイル名 ragpos.def。フォーマットは同じ。


長らく情勢を見ないうちに自動芋のメモリアドレスファイルがデファクトスタンダードの地位を失い、代わって roaddr.ini が標準となっていたので、芋のファイルをつぎはぎして作った acoaddress.txt は廃止し、全面的にそちらに切り替えました。

なぜか実行バイナリ埋め込みになっていた、IP アドレスとサーバ名称の対応表、エリアファイル名とエリア名の対応表、クラス ID とクラス名の対応表を外部ファイルから読むようにしました。これは ragmap.ini というものがあるようなのですが、現時点ではどうも ragpos.def の方がよさそうだ(曖昧な表現)ということで、そちらと同じフォーマットになっています。ファイル名も同じ。実行バイナリに浮動する対応表を埋め込むという発想は今からすると全く正気の沙汰ではないのですが。

HP/SP/MAXHP/MAXSP は変わったばっかりで資料もないし掲示板の説明見てもよく分からなかったので、適当にダンプして適当に解読して合ってそうな数字を拾いました。ので合っているように見えて実は間違っている可能性もあります(パッチ一発で動かなくなる等)。しかしながらとりあえず今の段階では正常と思われます。

以下余談。

私自身は既に MMORPG でレベルを上げて楽しい的な趣味がなくなってしまっており、RO も長らく触っていません。で、今回手を入れるにあたってコンパイル環境と RO プレイ可能な環境を復活させなければならなかったのですが、RO についてはローカルにインストーラもなく、600MB をチンタラ DL するはめとなり、さらに立ちアコは pascal で書かれているのですが、最近は c++ のみ使っていたためにこの環境には Delphi がインストールされておらず、これも最初からインストールすることとなり、さらにコンパイル可能にするために色々と環境作り直しと、本題に入る前にだいぶ手間がかかりました。そしてもちろん金払ってないので入ったアカウントは借り物です。我ながらひどいと思います。

RO のツールも未だに多数の種類があり、特にまるで同じ機能を持ったソフトが 3つも 4つもあったりします。このことには誰しも何となく奇妙な感じを受けるでしょうが、そこにはコンテンツを持たないツールという物の宿命的な悲しさがあります。ツールはその名の通り道具であって、基本的に誰が作っても同じであり、問われるのは、軽さとか、速さとか、信頼性とか、そういったコードのポテンシャルのみです。早い話がツールは「最も優れた物がたった一つだけあれば、他は全く不要」なわけです。そして、なぜそうなってしまうのか、ということを突き詰めて考えると、それは結局ツールはパーソナリティ、コンテンツがないから、という結論に行き着く。コンテンツのあるプログラム、代表的なものはゲームですが、ゲームというものは誰が作っても同じものができる、ということはない。例え同じジャンルの似たゲームを作っても、作る人が変われば必ず別のものだと言える。そうすると、例えコードの質があまりよくなく、またコード自体も再発明に過ぎない(既に他人が作ったものと同じものをわざわざゼロから作ってしまった)としても、その作者固有のコンテンツがあるから、それは確かに存在意義がある、ということになる。これはツールにはない特性です。ツールは同じものが本当に同じにできてしまう。だから 3つも 4つもあってもどうしようもない。共存できない。誰も口に出しては言わないが、実のところ最も優れた物以外には存在価値を付与してやれない。これは避けようのないこと、宿命です。私がツールを作るのが嫌いなのはその辺に理由があります。

さて

自画自賛ぽくなりますが、こうして見るとこのプログラムはかなり質がいいかも…ナビ周辺の動作やインターフェースは実にカタいですし、被り物、しばらくすると座る等のギミック、ただメモリを覗いてるだけでまともなイベント通知など何一つないのにイベントドライブ風の動作をすること等、よくまあこんな面倒くさいことやったな、と感心するところが何箇所もあります。今となってはコードが pascal なのが最大の難点ですが…でも捨てるには惜しいですねぇ。このシステムが世間的にどれくらい人気があるかは分かりませんけど。


20021221

#170

システムデータウインドウ
×#163 の acoenemy.txt は間違っていて引き継いだデータを誤認する
ニュースサイト名を選ぶといきなり落ちる
サマリが役に立ってない気がしたのでニュースサイトもただのリンク集に変更


20021221

リリースしなかった期間が長く、実際の作業項目数はかなりのものだと思いますが、とりあえず見て分かりやすいのは被り物と現状への追従くらいかと。

エリアとサーバ IP の関係は、本当は意味の分かる人間だけが秘匿した方が得な情報なのですが、今さらどうにもならないのでまあ。


20021205

色々あって動くのは 12/10 以降になります。


20021129

×acoaddress.txt に書かれた16進数が大文字だと落ちる


20021119

サーバステータスチェッカ、Sara 以降対応。
普通に読んでパースしていたのを status.txt から取るように変更。今日までこれの存在を知りませんでした
rosv.zive.net から取っている、ということを明記


20021113

acoaddress.txt が古いままずっと放置されているので差し替え。中身は変わっていません。


20021021

今の RO クライアントは、通信が腐ってゲームが止まっている間、連打回数をバッファして、動き出したときにまとめて送っている。結果、

死んでから猛烈な勢いで連打されるニンジン
死んでから使用されるハエ


20021020

×フリルドラの位置データが間違っている


20021018

×最小化してもマバタキで可視状態に戻ってきて「OS 的にはアイコン化されているがウインドウは見えてる」という訳の分からない状況に
「砂漠の狭路」等になっていた一部のエリアにちゃんと命名


20021018



なんかリリースするタイミング逃しちゃったなぁ

とか


20021010

ナビウインドウ横スクロール
時によりログアウトしても時給情報がリセットされない
キルカウントトップが特定不能もしくは判別不能だと称号がつかない


20021001

#150 → #151 は

×立ちアコ稼動中にラグナロク側で使用キャラクタを切り替えるとその後何も喋らなくなる

これの修正のみです。が、これで充分致命的なので #150 は封印して下さい。


20020928

せっかく色々作ってもログインできないのでテスト不能。

アホくさ


20020928

アコナビ

実はサーバチェッカが値の取得に失敗している
サーバチェッカ Penril 追加
サーバ情報 Penril 追加
[Address2] エントリ追加

chaos は通信プロトコルが変わったので、通信内容を直接見て何かやってるツールは大変そうですね。


20020922

本当は小出しにする気はなかったんですが、リソースリークが win9x 直撃であまりに深刻なので、実装途中の機能を全部塞いで緊急リリース。エリア名とか出てるのは別にそれがやりたかったわけではなくて本当は副産物です。

win9x はちょっとのリソースリークであっさり死にます。弱。階段上って足を折る骨粗鬆症ダイエット女みたいなイメージ。


20020922

リソースリークしていた。しかもペースは毎秒 4。従って win9x では短時間で落ちる。winNT は非常に長時間耐えるが、それでもいつかは落ちる。気付いてみれば単純なミスでした。

ログイン試行状態の確実な検出。これにより曖昧にならざるを得なかった保持値のリセットタイミングが完璧なものとなった。

エリア情報取得。とりあえずステータスウインドウの右端にエリア名がつく。

×時給計算値がリセットされたとき、内部的にはリセットされているが、時給計算ウインドウの view では値がそのまま残っているように見えて、紛らわしい。

×ragexe.exe がいない状態で時給計算値がタイムアウトでリセットされ、その状態で再び ragexe.exe が現れゲームを行った場合、時給計算値がリセットされず、結果として異様に低い時給が算出される(ragexe.exe がいなかった時代の時間もサンプルとして取り込むため)

ragnarok のウインドウ位置保存のアルゴリズムがおかしい。穴がある。もっとも、アコがいる間に ragexe が現れる、ragexe が既にあるところにアコが出る、アコが起動したまま ragexe が終了する、ragexe を残したままアコが先に消える、等いくつものケースが考えられ、元々面倒臭いのは確か


20020916

そろそろ「アコが邪魔なので隠して下さい」とか言われそうですが。

#103 は場合によっては致命的なバグ修正一件のみ。内容は、立ちアコを起動したまま RO の方だけ終了→再起動すると、キャラ別設定がセーブされない、というもの。例えばあるキャラを選んでゲームを始め、オートヒットの設定を変更、その後 RO だけ終了→再起動すると、さっきの変更が消えてしまう。

重いという話もよく聞きますが、処理的にそこまで重いはずはないです。単純に処理が重い、ということはなく、何らかの劇的にパフォーマンスを下げる要因が存在しているような気がします。全く分かりませんが、適当に予測すると

  • 他の似た傾向のソフトと同時使用している。このとき双方が ragexe.exe のメモリをポーリングするため、何かよくないことが起きて、遅くなる。win9x では落ちる。
  • 不定形リージョンウインドウと ragexe のウインドウが重なったとき、著しくパフォーマンスが落ちる環境、ないしビデオカードがある。

    とか


    20020914

    Say マクロの操作法を変える。
    Autohit している間は Say マクロは動かない。
    Common サーバステートが変化しても変化なしと言う。
    静的にフックすると他のウインドウにも問題が出る。のでラグナロクがフォアグラウンドになっているときだけフックする。
    死んだらキーボードオートヒットが Disable に

    他多数

    死ぬとオートヒットが OFF になることに気を付けて下さい。戦線復帰する前に手動で ON にする必要があります。気付かないと連続で死ぬかもしれません。SHIFT+ALT+A をうまく使って下さい。

    上の処理は入れるかどうか迷いましたが、多少面倒になったとしても、復活して HP1 になったときに意味なく高いポーション連打されるよりはマシでしょう。

    そろそろクオリティコントロールできなくなってきました。使ってる側の人間は常に何でもできて当たり前だと思ってるわけですが、現実としてそういうことはあり得ません。


    20020913

    Say マクロ
    SHIFT エンチャント

    実はラグナロクにステートを送ることは「できない」と思ってたんですが、eTimer のような気の抜けたプログラムでさえあっさりやってるのを見て自分はやはり何か勘違いしていると思った。で、結果として、アホみたいに下らない理由でした。しかしまああんな動作じゃできないと思われても仕方ないような気もしますが…

    名前は最高 16バイトでなく 18バイトだったらしいので延長。

    RO いないときはステータスウインドウを自動で不可視にする。ただし表示 OFF とは違う。


    20020912

    #82 に差し替え

    無機質な時給ウインドウと前の毎回喋ってくれるモードを任意に切り替え可能


    20020912

    サーバステートを ROSV Info 間借りでなく http://nekomimi.aco.li/live.html から取得

    もう一つ、#81 に番号繰り上げるだけの結構大きい変更があったと思うんですが、メモしてなかったせいで忘れました。


    20020910

    live ステート

    立ちアコと関係なかったら作ってないと思いますが。


    20020909

    芋プロファイルをキャラクタ別にした影響でいったん芋設定が飛びます。ご了承ください。ご了承くださいというか設定飛んでるのに気付かずに敵を殴って死んだりしないように気をつけてください。


    20020909

    かなり大きなデザイン変更、敵を倒すたびにいちいち喋るのを止める。代わりにステータスウインドウと同じサイズで時給ウインドウを出せて、そこに情報は全部入っている。

    他、延々と細かい問題


    20020908

    キャラクタ毎に芋プロファイル保存
    キャラクタ変更検知のアルゴリズムにいまいち自信がない

    ニュースサイトリストからサイトを選ぶとサマリウインドウが開き、そこから右クリックメニューでチェックに行くようにした。ニュースサイトリストからサイトを選ぶとチェックに行ってその後サマリウインドウが出る、という前の設計はどう考えても間違っている。

    実は秒間 20回ラグナロクから値を取っていたんですが、どうせラグがあるしそんな密度で取っても重いばかりで何もいいことはないので、秒間 5回に変更。

    セパレータ切り直し
    サマリウインドウが ESC で閉じない
    ウインドウポジションの保存を ON/OFF できる


    20020907

    R.O.M 776

    気持ちは分からないでもないですが、立ちアコ(伺か)は勘弁してください。関係ないので。

    修正して頂きましたー


    20020907

    #63 の目に見える変更点は

    ヒールエモーション
    時給通知
    今のペースで何時間何分何秒後にレベルアップするか通知
    画面下端に張り付かない

    地味なところでは

    ragnarok プロセスがいない状態で終了すると idle プライオリティであることが保存されない。というより根本的にプログラムデザインが変
    起動と同時に通知がキューに入ると挨拶が潰される
    オートヒット全体の ON/OFF スイッチ
    上のスイッチをホットキーで動かす

    時給自体は別に興味がなければどうでもいい数字ですが、「この時給で一体あと何時間かかるのか」まで言われると精神的にかなり揺さぶられます。面白いものです。

    しかし、当初予定ではここまで機能強化されるはずではなかったんですけど。


    20020906

    #52 の目に見える変更点は

    キーボードブースタ
    キーボードオートヒット
    ラグナロクのインストールディレクトリの自動認識に失敗した場合、手で指定させる
    エラーメッセージが間違っていた。「ragaddress.ini がない」というメッセージが「roaddress.ini が足りない」になっていた

    こんなところかと。

    まあ何というかこんな短期間でバージョン上げちゃって、いかにも「こんなにすぐできるなら初めからやっとけよ」という感じですが、アレが初期実装に入ってなかったのは正直芋を舐めてたからです。自分で作ってみて初めて分かるこの強力さ。

    あともう一つが手動設定です。#47 を起動できない、というのはおそらく全部自動認識の失敗によるものです。あれだけバージョン入り混じってグチャグチャになってるプログラムの位置を少々レジストリ読んだくらいで自動認識しようというのが甘かったと思います。例えローテクであっても手で指定するのが一番確実でしょうやはり。

  • 戻る