リベルさんの戯言室

ゲームの攻略とか映画のネタバレとか。そのほかヌルヌル書いてます。リンクフリーです。※当ブログはPC版表示に最適化されています。

黒い砂漠から落ちたらTweetする


黒い砂漠は放置ゲーですが、放置の途中で落ちることもままあります

というわけで、黒い砂漠を放置中に落ちてしまったらTweetする仕組みを実装しました

なおご利用は自己責任でお願いします。



ざっくりとした仕組み

バッチファイルで定期的に黒い砂漠の出力しているログファイルを監視し、ログアウト時に出力されるログ「setEndGame」が出力された際に、「ログアウト状態である」と判定します
判定後はDropboxの特定のフォルダにトリガーとなるファイルを出力します
最後にIFTTTでDropBoxを監視し、ファイルが追加された際にその旨をTweetします

ディレクトリ前提

黒い砂漠ログファイル出力先(Cドライブへインストール時はココのはず)

  • C:\GameOn\BlackDesert_live\Log\

作業ディレクトリ(バッチ等格納先)

  • D:\アプリケーション\BDOLogCheck\

DropBox連携ディレクト

ディレクトリを変更する場合は各ファイルの調整が必要です。

監視バッチ

  • ログファイル監視バッチを呼び出すためのVBSです
  • タスクスケジューラから、このスクリプトを定期的に実行するように設定してください。

VBSからbatを呼び出す

Set shell = WScript.CreateObject("WScript.Shell")
shell.Run "D:\アプリケーション\BDOLogCheck\LogCheck.bat", 0, false

監視バッチ本体

  • ログフォルダからログファイル一式を入手する
  • ログファイル一式の中から最新のファイルを取得し、「setEndGame」を探す
  • 発見した場合、該当行の文頭に記載されているログアウト時間をテキストのファイル名にセットして、DropBoxに出力します。
@echo off
if not "%HOGE%"=="hoge" (
    set HOGE=hoge
    start /min cmd /c,"%~0" %*
    exit
)
cd /D %~dp0
set DIR=C:\GameOn\BlackDesert_live\Log\
dir %DIR%*.log /b /o:d > $filelist.txt
for /f %%i in ($filelist.txt) do (if not %%i==$filelist.txt set file=%%i)
echo 最新のログファイル: %file%
set SEARCHFILE=%DIR%%file%
echo %SEARCHFILE%
find "setEndGame" %SEARCHFILE% > $searchlist.txt

for /f "delims=," %%A in ($searchlist.txt) do set searchlistword=%%A
set LOGOUTDATE=%searchlistword:~0,17%
set LOGOUTDATE=%LOGOUTDATE: =_%
set LOGOUTDATE=%LOGOUTDATE:-=%
set LOGOUTDATE=%LOGOUTDATE::=%

IF EXIST D:\Dropbox\Log\%LOGOUTDATE%.txt (GOTO FILE_TRUE) ELSE GOTO FILE_FALSE
:FILE_TRUE
ECHO "処理済のため終了"
GOTO BAT_END

:FILE_FALSE
ECHO "ファイルを作成します"
echo > D:\Dropbox\Log\%LOGOUTDATE%.txt

GOTO BAT_END
:BAT_END

IFTTT設定

  • DropBoxの「Log」フォルダに新しいファイルが追加された際にツイートするアプレットを作成します

以上で完成です!

注意事項

私は黒い砂漠はすでに引退しており、上記スクリプトは最後に動作確認してから1年程度経過しています。
恐らく変更ないと思いますが、監視に使うログは本来ユーザ側が使う部分ではないため文字列が変更されている可能性もあります。ログファイルを確認して適宜変更してください。