朝、妙に目覚めがよく頭もすっきりしていたので、長らく放置していた君主用のBOTに手を入れる。
肝は敵の状態をメモリのどこに保存しているかということだったのだけれど、敵座標からアドレスを割り出してその前後を検索することでどうにか発見。
早起きは三文の得って訳じゃないけれど、いままで探しても見つからなかった箇所だったんで普通に気分がよい。

アドレスさえわかれば後はif文の追加でさくっと改良完了。
テスト用のアカウントで動きを確かめて作業完了。

マウス押下のポイントがちょっと甘いけど、こっちは手を入れるのがめんどくさいのでもう直すこともないだろう。

2007/09/07:コメントなしろじ

キーボード入力はSendInput()を使うことで解決。
ウィンドウにメッセージを処理させるために、君主のウィンドウを有効化させるようにSetForegroundWindow()の呼び出しと、アクティブ化待ちのSleepを入れる。

2~3個メモリアドレスの読み込みを追加して、弾丸、回復剤、食料の自動使用のロジックをくみ上げる。
キーボード入力だけが問題だったのでこっちはサクサク進む。

次はMOB状態(死亡、交戦中)の取得が出来ると良いのだけれど、メモリを読んでもそれらしい情報がない。
これが出来ると、効率がぐっとあがるのだけれど。

2007/08/28:コメントなしろじ

いや、1~2週間前からちまちま作ってるんですけどね。
あれやこれや試行錯誤して、とりあえず、MOBの位置情報を元に、同座標に自分のキャラクターを移動させることまでは可能になった。
マウスの入力位置が上手くあえば、MOBも殴ってくれる。
次に、弾丸の自動補給や回復剤の自動使用、なんかを実装しようとしたのだが、移動に使っていたSendMessage APIでは、入力に反応してくれない。
どうやら、キー入力についてはDirectInputを使っているようでそっちを何とかしなければならない予感。

とりあえず、”DirectInput 擬似”で検索かけてみたところ、有効そうな情報を発見。案外簡単に作れそうな気がしてきた。
ただ、同時起動している他のプログラムにも影響が出そうなのがちょっとネックか……

2007/08/27:コメントなしろじ