ゆっくりスクリプト
MHFのチャットをSoftalkに読み上げさせるスクリプトです。WSHスクリプトで作ってみたらあっさりできたので公開します。自分の環境や好みに合わせ修正して使用してください。あくまで自己責任でよろしくお願いします。You BAN
YukkuriMhf.bat
YukkuriMhf.js
YukkuriMhf.bat
cscript YukkuriMhf.js //nologo
単なる起動用のスクリプトです。ダブルクリックでコマンドプロンプトが表示され、YukkuriMhf.jsが実行されます。MHFを起動し、対象のチャットログファイルが作成されてから実行してください。チャットログファイルは適当にチャット出力すれば作成されます。プロンプトを閉じれば終了です。
YukkuriMhf.js
var shell = WScript.CreateObject("WScript.Shell"); var fso = WScript.CreateObject("Scripting.FileSystemObject"); var folder = fso.GetFolder("C:\\Program Files\\CAPCOM\\Monster Hunter Frontier Online\\チャットログ"); var file = getLatestFile(folder); WScript.Echo(file.Name); var stream = file.OpenAsTextStream(1); var Log = function(){ this.id = ""; this.type = ""; this.message = ""; this.setId = function( line ){ var value = line.match(/【ID:(\w{6}).+\((\w{1})\)】/); if( value != null ){ this.id = value[1]; this.type = value[2]; return true; } return false; } this.setMessage = function( line ){ var index = line.indexOf(" > ") + 3; if( index != -1 ){ this.message = line.substr(index); return true; } return false; } this.getVoice = function(){ return parseInt(this.id.charAt(0), 36) % 8; } this.getSpeed = function(){ var mark = parseInt(this.id.charAt(1), 36) % 2; var speed = 0; speed += parseInt(this.id.charAt(2), 36); speed += parseInt(this.id.charAt(3), 36); speed += parseInt(this.id.charAt(4), 36); speed += parseInt(this.id.charAt(5), 36); speed %= 40; if( mark == 0 ){ speed *= -1; } return 120 + speed; } this.speak = function(){ if( "FPG".indexOf(this.type) == -1 ){ return; } var cmd = "\"C:\\Program Files\\softalk\\SofTalk.exe\""; cmd += " /T:" + this.getVoice(); cmd += " /S:" + this.getSpeed(); cmd += " /V:25"; cmd += " /W:" + this.message; shell.Run(cmd, 0, false); } } stream.ReadAll(); var log = null; while( true ){ if( stream.AtEndOfStream ){ WScript.Sleep(100); continue; } var line = stream.ReadLine(); if( line.replace(" ","").length != 0 ){ if( log == null ){ log = new Log(); if( !log.setId(line) ){ log = null; } }else if( log != null ){ if( log.setMessage(line) ){ log.speak(); log = null; } } } } function getLatestFile( folder ){ var files = new Enumerator(folder.Files); var file = null; var time = 0; for( ; !files.atEnd() ; files.moveNext() ){ var tmpFile = files.item(); var tmpTime = tmpFile.DateLastModified; if( time < tmpTime ){ time = tmpTime; file = tmpFile; } } return file; }
チャットログから新規チャットを取得し、Softalkに渡すスクリプトです。IDから声のタイプとスピードは算出し、幅がでるようにしています。全体チャットも含めるとうるさいので、ランドPT猟団チャットのみ出力しています。