ユーザースクリプト
  • ユーザースクリプトとは
    サーバーから送られてくるデータに対して任意の処理をすることが出来ます。
    通信内容を変更することは出来ません。
  • スクリプトファイル
    デフォルトでJavaScript(ECMAScript Edition 5.1)をサポートしますスクリプトエンジンのドキュメントはこの辺り
    ユーザースクリプトは update(logbook.data.DataType, logbook.data.Data) 関数を実装する必要があります。
    • 第一引数のDataType型 はデータの種類(母港、戦闘、開発など)を表します
    • 第二引数のData型 は送受信データが含まれます。(POSTデータ、JSON)
    文字コードはUTF-8、JavaScriptの場合は拡張子.jsで保存します。
    航海日誌の起動中にスクリプトファイルを変更した場合は反映されません、再起動する必要があります。
  • サンプル
    次のスクリプトはデータを受信するたびにhelloを標準出力に表示します。
    function update(type, data) {
    	print("hello,");
    }

    すこし複雑な例として、次のスクリプトは母港に戻った時に提督経験値の差分を標準出力に表示します。
    ECMAScriptの関数以外にJavaのクラスを呼び出し複雑な処理を行うことも出来ます。
    load('nashorn:mozilla_compat.js');
    importPackage(java.io);
    importPackage(java.lang);
    importPackage(java.text);
    importPackage(java.util);
    importPackage(Packages.logbook.data);
    
    var format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    var gexp = null;
    function update(type, data) {
    	switch (type) {
    	case DataType.PORT:// /kcsapi/api_port/port
    		// Jsonを取り出す
    		var json = data.getJsonObject();
    		var exp = json.api_data.api_basic.api_experience;
    
    		if (gexp != null) {
    			var compare = exp.intValue() - gexp.intValue();
    			if (compare > 0)
    				print(format.format(Calendar.getInstance().getTime()) + " : " + exp + "(+" + compare + ")");
    		}
    		gexp = exp;
    
    		break;
    	}
    }
    
    実行結果