/** * 暁WORKSの立ち絵合成スクリプトです。 * 読み込む対象は以下のファイルです。 * 『るいは智を呼ぶ』 * 00-名前.txt * 00-名前0.txt * 00-名前0a.txt * 『るいは智を呼ぶファンディスク』 * 00-名前_0.txt * 00-名前0_0.txt * 00-名前0コート_0.txt * 00-名前0_00(ひげ)_0.txt * 00-名前0_00(ひげなし)_0.txt * ex00-名前_0.txt * 『コミュ -黒い竜と優しい王国-』 * 00-名前.txt * 00-名前_0.txt * 00-名前a.txt * 00-名前a_0.txt */ // 記述ファイル読み込みダイアログ var settingFile = File.openDialog('設定ファイルを選んで下さい', 'txtファイル:*.txt;'); // 読み込み成功時の処理 if (settingFile != null) { // 設定ファイル読み込み fileObj = new File(settingFile); fileObj.open('r'); var val = new Array(); while (!fileObj.eof) { val.push(fileObj.readln()); } var setData = new Array(); for (var i = 0; i < val.length; i++) { setData[i] = val[i].split('\t'); } // 読み込むファイル名の取得 var header = decodeURI(settingFile.name).replace(/\.txt$/, '_'); var dirPath = settingFile.fsName.replace(/[^\\]+\.txt/, ''); // 生成するファイル名を設定 var objName = header.replace(/_$/, ''); // ドキュメント作成 var backupUnits = preferences.rulerUnits; // 現在の単位を取得 preferences.rulerUnits = Units.PIXELS; var parent = documents.add(parseInt(setData[1][4]), parseInt(setData[1][5]), 72, objName); // 指定ファイル読み込みと設置 var readFileName; var readFile; var layer; var flgVisible = false; var isVisible = new RegExp(' |:'); for (var i = setData.length - 1; i > 1; i--) { if (setData[i][0] != '') { readFileName = header + setData[i][9] + '.png'; // 読み込むファイル名 readFile = new File(dirPath + readFileName); // ファイルを読み込んで生成 // ファイルを開く try { open(readFile); } // ファイルが見つからない時は飛ばす catch (e) { continue; } // レイヤーの複製を指定ドキュメントに作成する var desc = new ActionDescriptor(); var reg0 = new ActionReference(); reg0.putEnumerated(charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt')); desc.putReference(charIDToTypeID('null'), reg0); var reg1 = new ActionReference(); reg1.putName(charIDToTypeID('Dcmn'), parent.name); desc.putReference(charIDToTypeID('T '), reg1); executeAction(charIDToTypeID('Dplc'), desc, DialogModes.NO); // ファイルを閉じる activeDocument.close(SaveOptions.DONOTSAVECHANGES); // レイヤー処理 layer = activeDocument.activeLayer; layer.translate(parseInt(setData[i][2]), parseInt(setData[i][3])); // 位置設定 layer.name = setData[i][1]; // レイヤー名設定 if (!flgVisible && isVisible.test(setData[i][1])) { flgVisible = true; } else if (i != setData.length - 2) { // 身体レイヤー1つは不可視にしない layer.visible = false; // レイヤーを不可視にする } } } activeDocument.layers[activeDocument.layers.length - 1].remove(); // 背景を削除 activeDocument.activeLayer.visible = false; // 可視状態になったレイヤーを不可視にする // 終了処理 preferences.rulerUnits = backupUnits; // 単位を元に戻す alert('完了'); }