黒い砂漠から落ちたらTweetする
黒い砂漠は放置ゲーですが、放置の途中で落ちることもままあります
というわけで、黒い砂漠を放置中に落ちてしまったらTweetする仕組みを実装しました
なおご利用は自己責任でお願いします。
ざっくりとした仕組み
バッチファイルで定期的に黒い砂漠の出力しているログファイルを監視し、ログアウト時に出力されるログ「setEndGame」が出力された際に、「ログアウト状態である」と判定します
判定後はDropboxの特定のフォルダにトリガーとなるファイルを出力します
最後にIFTTTでDropBoxを監視し、ファイルが追加された際にその旨をTweetします
ディレクトリ前提
黒い砂漠ログファイル出力先(Cドライブへインストール時はココのはず)
- C:\GameOn\BlackDesert_live\Log\
作業ディレクトリ(バッチ等格納先)
- D:\アプリケーション\BDOLogCheck\
- D:\Dropbox\Log\
※ディレクトリを変更する場合は各ファイルの調整が必要です。
監視バッチ
- ログファイル監視バッチを呼び出すための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
注意事項
私は黒い砂漠はすでに引退しており、上記スクリプトは最後に動作確認してから1年程度経過しています。
恐らく変更ないと思いますが、監視に使うログは本来ユーザ側が使う部分ではないため文字列が変更されている可能性もあります。ログファイルを確認して適宜変更してください。