どうでも良い内容の割に長いんで、一応"続きを読む"で。
ちょっとややこしいです。






んーと、ちょっとアレな話題になるんだけども、



↑ コレ、MHFやってる人なら一度は見た事があると思うんけども、MHFランチャー起動前の画面。
正確にはGameGuardが起動して、そのGameGuardがフォルダ内の画像を読み込んだ際の画面… という風に言えば良いのかな?



で、



↑ …まぁ違いは画像を見れば誰でも解ると思うので、敢て何も書かない。
左上にちゃんとGameGuardのメモリ読み込みウィンドウが表示されてるんで、実際に差し替えてあるって証明になるかな。



改めて書き直すと、昨日ちょっと興味本位でこのGameGuard起動時の画像を別のものに差し替えてみました。
と言ってもGameGuardフォルダの中にある"Splash.jpg"を書き換えただけなんだが…


この画像自体の作り方は案外単純で、

・元画像を取り込み → パーツ別にレイヤ作成 → レイヤ情報を保存

この作業を行った後、

・ベース画像を編集(色数/リサイズ) → レイア情報読み込み → レイヤとベースの統合 → "Splash.jpg"という名前で保存

これだけで案外それっぽい画像は作れます。
レイヤ云々の知識があれば、1枚の画像作るのに5分掛かりませんね。


因みに画像サイズだが、元画像のサイズが"320x240"なので、差し替える画像もこれに合わせた方が良いのかな。
そこら辺の検証はまだやってません。



差し替える画像を作った後、GameGuardの実行フォルダ…
パスで言えば「C:\Program Files\CAPCOM\Monster Hunter Frontier Online\GameGuard」の中に放り込めばok。
↑のパスが無いって場合、mhf.exeの入ってるフォルダの中にGameGuardのフォルダが必ずあるので、取り敢えずmhf.exeを探せば良いかな。
恐らく放り込む際に上書きするかどうかのウィンドウが出てくるので、はいを選択。
一応コレで画像の差し替えは完了。


これでMHfF.exeを実行すればちゃんと差し替えた画像が出てきます。





…と、こう書くと何かそれっぽく聞こえるが、実はこの方法失敗みたいで、差し替えは1度しか有効じゃありません(´・ω・`)


もうちょい解り易く言うと、これはあくまで自分の勝手な予測なんだが

MHF.exeを実行、実行されると同時にGameGuardも自動的に起動
  ↓
GameGuardが起動された時点でフォルダ内にある"Splash.jpg"を読み込んでデスクトップ中心位置に表示
この時点で何処かしらから情報を取得して、フォルダ内のファイルを自動更新(この時点で差し替えた画像は上書きされ、元の画像に戻る)
  ↓
MHFのランチャー表示

という流れ。
GameGuard起動時には差し替えた画像が表示され、MHFのランチャーが開いた時には既に画像がリセットされてるので、恐らくリセットが掛かるタイミングは↑の通りであってると思う。
うーむ、無駄な所までしっかり出来てやがる… まぁ当然っちゃ当然なんだが…w



問題は、何処から元の画像を取得しているのか。
大本のソースを任意フォルダに指定してしまえば、とも考えたが、そのパスを書いてあるファイルは何処にあるのかすら解らない。
フォルダ内部のファイルを漁れば情報ソースが何処かしらに書いてある… もしくはヒントがあると思うんだが、".des"に".erl"、".tls"や".tsf"と…
そんな如何にも特殊そうな拡張子を開く為のプログラムなんて持ってませぬZzz
というかそもそもパスを入手出来た時点で、サーバーのデータベースに自動アクセスして其処から情報を自動取得、みたいな内容だと手も足も出ないんだよね。




…取り敢えず、そんな仕様のお陰で本当に画像を差し替えたいとなると一々GameGuardを起動する度に中の画像を書き換えないといけなくなる。
幾ら嫁の… ルーミアの画像を見たi… 使いたいからとはいえ、流石に逐一そんな作業をするのは面倒臭い。
と言ってもマウス1クリックで済むんだが




そこで考えたのが、パッチを当てて起動する方法。




パッチと言っても【コンピュータのプログラムの一部分を更新してバグの修正や機能変更を行うためのデータ】の事ではなく、この場合は単純にファイルを同時に指定する方法。
要するに、ボタンをクリックすれば指定しておいたファイルが同時に起動する、という効果を持った物と考えれば良いかな。


そのパッチの作り方だが、

1.適当にメモパッド・エディタを開く


2.

画像の様な感じで、ファイルが入っているフォルダのフルパスと、そのフォルダの中にある起動したいファイルの名前を入力。
画像の通りのソースの場合は
 cd C:\Program Files\CAPCOM\Monster Hunter Frontier Online
 start mhf.exe
 start toho.exe
こんな感じで、cdがフォルダの指定、startが開くファイルを指定と命令。
予め開きたいファイルは同じフォルダに入れておき、フルパスはそのフォルダを指定してください。


3.拡張子を○○.batにして、保存。
○○の部分は何でも良いので、MHFtohoみたいに解り易くしておくと良いかも。


4.完成したbatファイルをダブルクリックすれば勝手に指定したファイルが実行される仕組み。


因みにこのパッチで指定するファイルは".exe"でも".jpg"でも何でもok。
exeファイルとかの場合は勝手に起動してくれるし、動画だとか画像とかのファイルの場合は勝手に規定のプログラムが動いてくれる。
"起動時に普段とは違うプログラムを使用して起動"って命令もあるらしいんだが、今回は関係無いのでパス。  というか私も解らんしね…w



で、ここから本題に入る訳だが、例えパッチを作って

cd C:\Program Files\CAPCOM\Monster Hunter Frontier Online
start mhf.exe
start Splash.jpg

という指定にしても、これじゃMHFが起動して、あとはメディアプレイヤーでSplash.jpgが表示されるだけで結局の所何の意味も無い。
本来の目的は「特定ファイルを監視して、値の変更が行われた際に任意のファイルに書き換える」という命令にしたい訳だしね。


…そこで、まず1のプログラムがGameGuard内の".jpg"を監視。
指定の値が変更された時点で特定のアプリケーション(2)を起動する様に設定。
2側の設定で「起動されたら自動的にGameGuard内の".jpg"と別フォルダ内の".jpg"を置換する」という内容に設定。


こういう順序にすれば良いんじゃないかと考えてみたり。
…文字だと解り難いんで、図にしてみる。



何か大分はしょった感じの図になったが、大まかにはこんな感じ。
これで上手く行けばGameGuard起動の度に自動で画像置換が行われるかと思ったんだが… 実際やってみたらそう簡単でも無かった(´・ω・`)



この方法の場合、問題点が2点。


1つが、アクセスが遅い点。
コレは図を見れば何処と無く解るだろうけど、パッチファイルをクリックした際の起動プロセスが

         →  GameGuard起動 →   自動更新   →   MHF.exe起動
パッチクリック┤
         → 【1】起動・監視   →   【2】起動    → 設定適用(画像置換)

となって、どうしてもMHF側の方が早く起動してしまう。
詰まる話回り道が多くて画像の置換が間に合わない
本来ならGameGuardの自動更新が行われる前に画像を置換しないといけないんだが、この場合は置換が間に合わない。
おまけに、下手したら1の起動よりGameGuard実行の方が早い為、GameGuardの値変更を監視出来ず、画像置換どころか2の起動に至らない場合もある。




もう1つは… まぁしょうも無い事なんだが、この経由作戦(仮称)に必要なプログラムが中々見付からないんだよね…w(´-`;)
・指定フォルダの値変更を常時監視し、変更が行われた場合にログ報告、もしくは指定したアプリケーションを実行する
・実行された際、バックグラウンドでファイルの置換・コピー・移動を行う
早い話基本的にこの2種のプログラムが必要になってくる訳なんだけども、どれも一歩足らずで中々目的の物が見付からない。
特に後者のソフトが一番厄介で、
・命令終了後、自動的に終了
・移動先に同名のファイルがあった場合の操作を予め設定出来る
・ファイル単位での自動移動操作が出来る
これらの機能を持ってる事が前提になる。
ファイルネーム設定とファイル単位移動は結構対応したのがあるんだけども、移動・コピー後に自動で終了する機能を持った物が中々ね…


1の方のソフトに「指定したアプリケーションの○○機能を実行する」なんて指定がついてれば、一々探さなくても良いんだがねw
流石にそんな都合の良いソフトがある訳も無いw







…まぁ終始纏りの無い話になったが、そんな感じで昨日の夜はこんな作業に時間を費やしてましたZzz
結果的に言えば、パッチを当てて起動させる実験は無理臭い
主に起動スピードとソフトが見付からない的な意味で。



取り敢えず今は手が無くなったから諦めるけども、また興味が湧けば色々策を練ると思うんで、その時に気が向けば記事に纏めると思う。
何か今回予想外に纏めが長くなったから、次回書くかどうか微妙だけど。