純規の暇人趣味ブログ

首を突っ込んで足を洗う

[Minecraft]チャットを抽出して表示する小物ツール作った

      2016/07/02    HimaJyun

どうも、クラフター各位、こんにちは

今回は、Minecraftのマルチプレイにおいて、TTで敵を溜める時などに放置している方のために
ログファイルからチャットを抽出して表示する事が出来る小物ツールを作ってみましたのでご紹介致します。

MCAFKS

今回ご紹介するツール(ソフトウェア)はMCAFKSと名付けています。
Minecraft AFK Supporterの略です、プログラミングの練習を兼ねて作りました。

え?、AFKが「Away From Keyboard」の略なんだから
「Minecraft Away From Keyboard Supporter」の略じゃなきゃダメだろって?

え~っと……、そう!!、細かい事は気にしないの、寿命が縮んじゃいますわよ。

主に以下の様な機能が備わっています。

  • Minecraftのログからチャットを抽出して表示
  • 最前面で表示可能
  • 既読機能付き

チャットを抽出して表示

AMiTサーバでも良くあるのですが、TTで敵を溜める際に放置しており、チャットへの反応が無い方がたまに居ます。
ユーザの方はそれでも問題ないかも知れませんが、僕は利用者の方から質問を受ける事があるのでそれでは行けません。

そのため、このツールはMinecraftのログからチャットを抽出して表示します。
チャット欄に表示されるものであればチャット以外でも抽出出来ます。(コマンドの実行結果とか)

最前面で表示

このツールは、常に最前面で表示する機能が備わっています。
この機能により、Minecraftを放置したまま他の作業が出来る様になっています。

もちろん、機能の有効/無効はワンクリックで切り替えが可能です。

既読機能

新着のチャットは「緑色」で表示されます。
「既読」ボタンをクリックする事で、文字色が緑色から黒色に変化します。

こうする事で、同じ事を何度も言いやがるウザイ野郎が居ても、どこからが新着かが問題無く分かります。

出来る事

これらの機能によって、Minecraftを放置している状態であっても、チャットを確認する事が可能です。
基本的に、常に最前面機能を有効にしてネットサーフィンする、と言った使い方がメインだと思われます。

副作用的な機能として、海外ユーザが日本のサーバであるにも関わらずベラベラと自国語で喋りやがった時でも、チャットをコピペしてGoogle翻訳にかける事が出来ます。

実際の使用例です。
minecraft-mcafks-001

使い方

  1. MCAFKS(ver:1.2)をダウンロード(MD5:b76a1bf9c65af53573aa349f1fd007ae)
  2. 起動する
  3. Minecraft内でチャットを利用

ダウンロード時や実行時にブラウザやOSが警告を発する事があるかもです。
(当然ですけど、悪い物は含んでいません、安心して下さい、安全ですよ。)

インストールやアンインストールは必要ありません、レジストリも使用していません。

解凍して使う、要らなくなったらゴミ箱にシュートしてマスタースパークなりビッグバンアタックなりでぶっ飛ばせば良いです。

動作環境

WindowsVista(SP2)以上であれば動作すると思われます。
x86アプリケーションなので、OSの32/64bitは問いません

僕のお手持ちのWindows 8.1 Pro(x64)で正常に動作する事を確認しています。
Minecraftのバージョンは問わないと思います、ログファイルから抽出しているので、アップデートやMODに依ってログファイルの形式が変更されていた場合は動かない可能性があります。

VCRUNTIME140.dllと.NET Framework 4.5.2に依存していますので、それらが入っていない場合は別途Microsoftから入手してインストールする必要があります。

バグや要望など

この記事のコメント欄なり、このブログのお問い合わせページなり、僕のTwitterなり、
僕に連絡が取れる所であればどこでも構いませんよ

気が向いたら修正します(するとは言っていない)

技術的なの

ソフトウェア云々の出来栄えは別として、技術的な面で興味がある方がいらっしゃるかも知れませんので一応解説です。

開発環境

IDEはVisualStudio 2015 Communityです。

言語はC++/CLIです。

仕組み

ちらっとお話ししましたが、このツールはログファイルからチャットを抽出しています。

最初はFindFirstChangeNotificationを使おうと思っていましたが、なぜか上手く動かなかったので、定期的にファイルサイズを確認して変化があったら処理を実行、と言う風にしています。

チャットは「[HH:MM:SS] [Client thread/INFO]: [CHAT] 」と言った形式になっている(H=時,M=分,S=秒)ので、それを正規表現で抽出しています。

それだけです……はい。

 - ゲーム , ,