2014年1月31日金曜日

サウンドフォント

掃除してたらUOR(?)のディスクが出てきたので中身を再確認してみました。

MIDIフォルダにサウンドフォントが入っているんだけど、そういえば使ったことがなかったなと
timidityでサウンドフォントを設定して再生してみるも、、、
うーん、やっぱりあのチープな音源での音が僕には聞き心地がいいなぁ^^;;;

当時はあまり中身のことをよく知らなかったんだけど、
UORのディスク(5周年記念パッケージ)にもすでにDigitalフォルダがあったのですね。
そして、僕の当時からの設定ではプレイ中はずっとMIDI音源の方を聞いていた、と。
Goodevil.mp3はML以降追加だと思っていましたが、ずいぶん前からあったのですね。

<耳に残っている音楽>
オープニング
 Turfin.mp3
 オープニングなだけに毎回必ず聞いていたので、UOのオープニングっていうとこれしかないです
 Tavern3.mp3
 これ、ずっとMIDIだと思っていました。ないなぁ~><っとおもっていたら、MP3だったという。。。
街の音楽
 Trinsic.midは名曲、Jhelom.midも名曲。耳に残ります

戦闘時の音楽
  Combat.mid, Combat2.mid, Combat3.mid, Dungeon9.mid 懐かしい。。。

2014年1月30日木曜日

メニューバーを消せないものか

ログイン直後、蘇生直後、せっかくメニューバーを最小化しておいても
再表示してしまう。
これを修正するには、client.exeの関数を探り当てる必要があるのだけど、見つからね><
ぼちぼちと探索中です。

2014年1月24日金曜日

まだUOAってトラブってるの?

僕自身はとっくにUOAssistを使ってないので関係ないのだけど、これだけ長引くと対岸の火事として見ていられない。
ただでさえログインするPCの数が減っているのに、更に減ってしまうとモチベも落ちてしまう><
Tugsoftも何やってんだかなぁ。コメントくらい出せばいいのに完全放置。
というか、この件、誰が何の目的でDDOS攻撃(らしい)をやってるんでしょ?
Tugsoftって他に製品扱っていたっけ?UOAには価値はないし。UOA使っているユーザ数(UOユーザ数)もMMO全体から見れば少数派。となると私怨か、経路につながる他の企業への攻撃か。攻撃側もこれだけの期間ようやるわ。

追記:)
もっとグローバルに国レベルでのサイバーテロですか><

2014年1月23日木曜日

次にやりたいことは面倒くさそう

EAサーバ以外のサーバへのアクセス(ただしクライアントは最新バージョンに限定だけど)はどうにか解決できそうになってきました。
他に温めているネタとして以下の2つあるのだけれど、どうにも面倒くさそうでやる気が起きない。。。
どちらも、あると(自分にとって)便利かも~でも使わないかも~な機能なんですけどね。

・モンスターの情報を表示する
  UOモンスター協会さんのデータを利用することを考えますが、
  勝手に利用することになるので、マナーとしてブラウザ表示が適当でしょうか。
  困るのは、IDとURLとを関連付けなければならないこと。
  100程度だったらエイヤッと打ち込めると思うのですが。。。

・装備を擬似的に染める
  染色剤を無駄にしたくはないですからね。
  UOSVの開発が止まっているっぽいので何とかしたいなと思っています。
  hue IDをどうやって指定するかに悩みます。
  簡単に解決させる方法としてUOFiddlerみたいにズラズラっと色を並べた上で指定してもよいのですが、
  そんなの実用的じゃないですよね。
  となると、染桶があるものに対してはそのgumpを出して指定し、染色剤使用のものと切り分ける必要がありますが
  労力と効果が見合うかどうかががが><
  染桶/染色剤を持っているのであれば、テストセンターにちょっと出張って試してくればよいだけですし。

2014年1月22日水曜日

ネゴトワ・ネティエ

OSI以外のサーバーにログインする方法はわかったものの、
Demiseにログインすると、RazorでNegotiateFeaturesのチェックをしてログインしろと弾かれる><
うーむ、どうやって調べたらよいものか。

追記:)
ググって探してみました。どうやらF0を使っているらしいことはわかりました。
実現可能となったとしても、"こっそり機能"グループに仲間入りだろうなぁこりゃ。。。

追記:)
もうちょっと調査してみた。
確かにF0がくる。
f0 0c 00 fe 00 00 00 00 01 f2 00 00
最後の4バイト(のうちの先頭2バイト?)がフィルターのチェックビットになっているということです。
しかし、この辺の調査を進めていくと、runuoサーバの知識が必要になってくるわけであり、
そうなると、runuoサーバいじりにズブズブとはまっていきそうで怖いことではあるな。

追記:)
実際に確認してみた。
まず情報として、Razorを開発しているZippy氏が[1.0 and 2.0] Razor Feature NegotiationにてRazorNegotiator.csを公開した。
このスクリプトを眺めると、f0/SubCommand=feをクライアントに送信(上記のデータ並び)し、f0/SubCommand=ffの受信を待って、タイムアウトしたときにウォーニングを出す、と読める。
ということで、f0/feがきたらf0/ffを返すようにしたところ、、、キックされませんでした^^
こういう情報を、秘密主義でなくあけっぴろげに公開するのね。どうせバレることだし、っとこともあるんでしょうけど。



2014年1月13日月曜日

uoclist0.7.3.4

FameとKarmaが気になるので、表示できるようにしました。
あまり気は進みませんでしたが、ddのデータをunzipする必要があるのでdll追加。
まだ動作がおかしいかもしれないです。

武器変更のショートカットボタンの実装は頓挫中><
ShowCursorがクセモノ。
ShowCursorって内部のカウンタで制御しているので(最初エッて思ったw)
うまく消えてくれなかったり、余計なところで消えてしまったり><

武器変更のショートカットボタンとか、
PvPの場合には移動中にキーで変更できることが重要で、移動中にマウスカーソル動かすなんてありえない=いらないと思っていましたが、PvMだと欲しいので使いやすくしたいなぁ。。。思案中。

2014年1月12日日曜日

UOの画面上に直接ボタン(ウィンドウ)を貼り付けられないものか?

調査してみた。

Spy++を使うと、クライアントのウィンドウハンドルは唯一。
つまり、子ウィンドウを貼り付けているわけではなく、1枚のウィンドウにすべて描画している。

ここで、BitBltにブレークポイントを仕掛けてラスタオペレーションコードを書き換えたりすると、どうやらBitBltのみ使用して全ての画像データを書き込んでいることがわかった。

多分こんなコードと推測。
hdc=GetDC(hwnd);
BitBlt(hdc, ...);
ReleaseDC(hwnd, hdc);

なので、クライアントのウィンドウに子ウィンドウをはりつける、もしくは描画する場合の案として以下が考えられる。

(1) BitBltの前にクリップ情報を追加する
(2) BitBltの後に描画処理を追加する

とここで困ってしまうのは、(1)または(2)をどうやって実現するか。

デバッガでブレークポイントを仕掛けると、BitBltの前後に処理を追加できる。
しかし、DCをプロセス間で共有できないっぽいので、デバッガにDCを操作する関数を追加して実行させても無意味><

となるとインジェクションしたDLLにて、IATのBitBltアドレスを書き換える、もしくはBitBltを呼んでる位置を書き換えて、DLL内に用意したコードを経由させる方法しかないのだろうか。。。
DLLにはもう新たにコードを追加したくないしなぁ。。。

うーむ、デバッガ使用でチラつかせず実装できないものか。

追記:)
重い腰を上げ、DLL内にExcludeClipRect()を追加したら、DCのクリップ領域がうまく設定された^^
クリップ領域って毎回更新する必要があるのかと思ってたよ^^;;;
なんとかなりそ???

2014年1月5日日曜日

ナイトサイトバグ

今までナイトサイト解除が効かないという状況になったことがなかったので気づきませんでした。
elfでも(elfだから?)画面が暗くなるバグがあったので修正。
その他、細かい部分を直しました。

なんか、ぶくぶくとexeファイルのサイズが増えてしまってます。
僕としては、1M超えたらあかん、と思っているのですが。。。

リファクタリングしてダイエットしなければいけませんね。

2014年1月3日金曜日

2014年 あけましておめでとうございます

今年もよろしくお願いいたします。

暇があるときにやっておきたい、ということで、早速、2014年版uoclistをこっそり上げてみました^^;;;
並行して色々調査していたのですが、
・今使っているdllで暗号化ありなしを切り替えるのは僕には(技術的、時間的に)無理><
・サーバがメンテに入っているかどうかを確認するのに、uotrace(ping)は使えないね><
 シャードがリストアップされない状態でもpingは通る。
・UOクライアントを親としてボタンを貼り付けても、(おそらくDCのクリップが必要なので)表示がうまくできない

ネタとして温めておきますが、実装はむりぽ。