Skip to content

Instantly share code, notes, and snippets.

@5zen
Created February 13, 2014 05:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save 5zen/8970439 to your computer and use it in GitHub Desktop.
Save 5zen/8970439 to your computer and use it in GitHub Desktop.
ブラウザMC☆あくしず 自動建設スクリプト (Firefox 27.0 + Greasemonkey 1.14にてFirefoxごと落ちる不具合を修正 by 5zen)
// ==UserScript==
// @name axis_Auto_Builder
// @namespace http://at-n2.net/
// @description ブラウザMC☆あくしず 自動建設スクリプト By nottisan + 5zen + @yuki_shemale(あくしず対応)
// @exclude http://*.bmcaxis.jp/world/start_mixi_axis.php"
// @exclude http://*.bmcaxis.jp/maintenance*
// @include http://*.bmcaxis.jp/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// @icon http://m1.bmcaxis.jp/20130214-03/extend_project/mcaxis/img/common/ttl_id.gif
// @homepage http://m1.bmcaxis.jp/bbs/personal_topic_view.php?user_id=4415#ptop
// @version 2013.03.27b (新UI+糧村税+最適巡回+予約統合+同時造兵版)
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_xmlhttpRequest
// @grant GM_addStyle
// @grant GM_deleteValue
// @grant GM_log
// @grant GM_registerMenuCommand
// ==/UserScript==
// 2013.02.17 MC☆あくしず仮対応
// 2013.02.18 一部メッセージ変更、レイアウト崩れを補正
// MC☆あくしずに存在しない内政スキルのチェックボックスを削除
// 2013.02.19 内政スキルを使用中で、建設中の残り時間表示が内政スキルの残り時間になる不具合を修正
// 2013.02.22 名声が取得できるように修正 動作確認版
// 2013.02.24 設定画面の保存ボタンを押した後、設定画面を閉じる様に変更
// 2013.02.24 インストール画面で停止していたのを修正した
// そのため手動でプロフィール画面に飛ばなくても拠点情報を自動で取得するようになった
// 2013.02.24 アルミニウム精錬所が自動LvUpできなかったのを修正
// 2013.03.01 設定画面を建築・造兵と内政とに分割した
// 2013.03.03 設定を保存後、巡回が停止していたのを修正
// 2013.03.12 ソースコードを整理、アルゴリズム大幅変更
// ウインドウ表示タイミングを変更
// 拠点画面以外ではウインドウを表示しない様に変更
// 2013.03.18 ウインドウ内の配色を変更、現在と次巡回予定拠点を色分け。
// 拠点建設が予約されている場合、ウインドウに建設設定ボタンを配置。
// 食料生産拠点化などを予約しておく事が可能になった。
// 設定を保存あるいは、保存せずに閉じた場合、リロードしていたのを止めた。
// 前回巡回時刻を表示するようにした。
// 2013.03.19 ログ用内部タグから、内政スキル使用とスキル回復を分離して別タグとした。
// 巡回アルゴリズムを再設計した。
// 完了イベントと自動貿易のためが優先される事は変わらないが、巡回時間の指定が
// これまでの「指定時間内に予定がなければ次拠点へ指定時間で巡回する」から
// 「各拠点への未巡回時間を指定時間以内となる様に最も未巡回時間の長い拠点へ巡回する」に変更した。
// これにより、逆巡回チェックボックスを廃止、巡回時間指定を見直した。
// 2013.03.20 寄付と資源変換に関する設定を、建設設定と分離。拠点共通とした。
// リクエスト発行以外でのスレッド起動時に取っていたインターバル時間を極短(5ms)とした。
// 自動資源変換に利用する貿易センター(のある拠点)を自動選択から手動選択に変更した。
// 2013.03.23 自動資源変換のユーザーI/Fと実装を一新。関税率を導入。
// 2013.03.24 fetchとactの処理中にフラグの数に応じてインジケータで進捗表示するようにした。
// キャッシュを一時的にオフ。
// メインウインドウが表示されていても再描画が行われないケースがあったのを修正。
// 基地建設予約リストを都市情報に統合。
// 2013.03.25 主要ページのキャッシュを廃止
// 拠点建設に成功した場合も失敗がログに記録されていたので
// 拠点建設成功失敗に限らず、ログ記録せず再度巡回時リトライに変更。
// 2013.03.26 ビルド&スクラップで建設と削除が同時に必要なケースを1度の巡回で対応するように変更。
// 現在と次巡回予定が同じ場合、タイミングを1秒遅らせた。公式リロード避け。
// 現在と次巡回予定が同じ場合、枠内背景色を現在用ではなく次巡回予定用の色にした。
// メインウインドウのボタンなどの配置を一新。
// 2013.03.27 アクトリスト・フェッチリストをGM保存するのを止めてグローバル変数とした。
// ソースコード整理。資源量チェック用関数を作成して最後尾に回した。
// 完了イベントを表示しないチェックボックスを設置。
// 2014.02.13 Firefox 27.0 + Greasemonkey 1.14にてFirefoxごと落ちる不具合を修正 by 5zen
// 既知の不具合と問題点:
// ・ビルド&スクラップで1箇所の施設で指定Lvまで連続で建設が行われる。
// まず、指定数の施設を建設するオプションが欲しい。
/*!
* jQuery Cookie Plugin
* https://github.com/carhartl/jquery-cookie
*
* Copyright 2011, Klaus Hartl
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://www.opensource.org/licenses/mit-license.php
* http://www.opensource.org/licenses/GPL-2.0
*/
(function($) {
$.cookie = function(key, value, options) {
// del 2013.02.17 一時的にオフ
// key and at least value given, set cookie...
// if(arguments.length > 1 && (!/Object/.test(Object.prototype.toString.call(value)) || value === null || value === undefined)) {
// options = $.extend({}, options);
// if(value === null || value === undefined) {
// options.expires = -1;
// }
// if(typeof options.expires === 'number') {
// var days = options.expires, t = options.expires = new Date();
// t.setDate(t.getDate() + days);
// }
// value = String(value);
// return (document.cookie = [
// encodeURIComponent(key), '=', options.raw ? value : encodeURIComponent(value),
// options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
// options.path ? '; path=' + options.path : '',
// options.domain ? '; domain=' + options.domain : '',
// options.secure ? '; secure' : ''
// ].join(''));
// }
// key and possibly options given, get cookie...
options = value || {};
var decode = options.raw ? function(s) { return s; } : decodeURIComponent;
var pairs = document.cookie.split('; ');
for(var i = 0, pair; pair = pairs[i] && pairs[i].split('='); i++) {
if(decode(pair[0]) === key) return decode(pair[1] || ''); // IE saves cookies with empty string as "c; ", e.g. without "=" as opposed to EOMB, thus pair[1] may be undefined
}
return null;
};
})(jQuery);
jQuery.noConflict();
j$ = jQuery;
var VERSION = "2013.03.27b @yuki_shemale (新UI+糧村税+最適巡回+予約統合+同時造兵版)"; // バージョン情報
var DEBUG = true;
var HOST = location.hostname; //アクセスURLホスト
var PGNAME = "_AutoBuilder_code_v1.6"; //グリモン領域への保存時のPGの名前
// =============================================================================================
// 設定値(オプション値保持用)
// 造兵用
var OPT_SOLDIER_MAX = [0,0,0,0,0,0,0,0,0,0,0,0,0,0];
var OPT_SOLDIER_ADD = [0,0,0,0,0,0,0,0,0,0,0,0,0,0];
var OPT_BLD_WOOD = 0;
var OPT_BLD_STONE = 0;
var OPT_BLD_IRON = 0;
var OPT_BLD_RICE = 0;
var OPT_BLD_SOL = 0;
var sort_priority = [];
var OPT_BKBG_CHK = 0;
OPT_BK_LV = [0,0,0,0,0,0,0,0,0,0,0,0,0,0];
OPT_BG_LV = [0,0,0,0,0,0,0,0,0,0,0,0,0,0];
//新規作成用
var OPT_KATEMURA = 0; //自動食料生産拠点化オプション
var OPT_TORIDE = 0; //自動前線基地化オプション
var OPT_SOUKO_MAX = 0; //備蓄の最大数
//内政用 by nottisan
// 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4
// 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
var OPT_DOME_SKILL = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
var OPT_BLD = 1;
var OPT_SCRAP = 0;
var OPT_SorH = "DD";
var OPT_MAX = 3;
var OPT_MAXLV = 6;
var OPT_ROTATE_DOMESTIC = 0; // 使用ON/OFF
var OPT_DOME_UNIT = [0,0,0,0,0,0,0]; // 内政担当ユニットID
var OPT_CHKBOX_AVC = 0;
// 拠 鉄 石 ア 食 備 銅 武 装 歩 陸 海 空 兵 工 貿 飛 冷 化 技 駐 航 レ 平
// 点 油 ル 品 蓄 像 装 甲 兵 軍 軍 軍 舎 兵 易 行 食 学 術 屯 空 ダ 地
// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
var OPT_CHKBOX = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
var OPT_CHKBOXLV = [ 8,15,15,15,15,20,10,10,10,10,15,15,15,15,15,10,10,10,10,10,20,20,20, 0];
var OPT_MAX_LV = "2";
var OPT_FUC_NAME = ["拠点","製鉄所","製油所","アルミニウム精錬所","食品加工工場","備蓄基地",
"銅像","武装研究所","装甲研究所","歩兵学校","陸軍士官学校","海軍兵学校",
"空軍士官学校","兵舎","工兵学校","貿易センター","飛行場","食品冷凍工場","化学コンビナート",
"技術研究所","駐屯地","航空基地","レーダーサイト","平地"];
var OPT_FNID = new Array();
OPT_FNID["拠点"] = 0;
OPT_FNID["製鉄所"] = 1;
OPT_FNID["製油所"] = 2;
OPT_FNID["アルミニウム精錬所"] = 3;
OPT_FNID["食品加工工場"] = 4;
OPT_FNID["備蓄基地"] = 5;
OPT_FNID["銅像"] = 6;
OPT_FNID["武装研究所"] = 7;
OPT_FNID["装甲研究所"] = 8;
OPT_FNID["歩兵学校"] = 9;
OPT_FNID["陸軍士官学校"] = 10;
OPT_FNID["海軍兵学校"] = 11;
OPT_FNID["空軍士官学校"] = 12;
OPT_FNID["兵舎"] = 13;
OPT_FNID["工兵学校"] = 14;
OPT_FNID["貿易"] = 15;
OPT_FNID["飛行場"] = 16;
OPT_FNID["食品冷凍工場"] = 17;
OPT_FNID["化学コンビナート"] = 18;
OPT_FNID["技術研究所"] = 19;
OPT_FNID["駐屯地"] = 20;
OPT_FNID["航空基地"] = 21;
OPT_FNID["レーダーサイト"] = 22;
// 自動資源変換
var OPT_CONV_TRADE_CENTER = ""; // 貿易センターを利用する都市
var OPT_CONV_EXPORT_RESOURSE = "食料"; // 輸出資源
var OPT_CONV_EXPORT_MODE = "資源を平均化"; // 輸出モード "常時輸出","輸出制限つき","資源を平均化"
var OPT_CONV_EXPORT_LIMIT = 0; // 輸出制限量
var OPT_CONV_TRADE_AMOUNT = "0.50 "; // 取引単位、1回の取引量
var OPT_CONV_TRADE_AMOUNT_UNIT = ""; // 取引単位、実資源量(表示用)
var OPT_CONV_DUTY = "1.0"; // 関税、取引時に寄付を行う
var OPT_CONV_INPORT_MODE_IRON = "常時輸入"; // 輸入モード:鉄 "常時輸入","輸入制限つき","輸入しない"
var OPT_CONV_INPORT_MODE_OIL = "常時輸入"; // 輸入モード:石油
var OPT_CONV_INPORT_MODE_ALUMI = "常時輸入"; // 輸入モード:アルミ
var OPT_CONV_INPORT_MODE_FOOD = "常時輸入"; // 輸入モード:食料
var OPT_CONV_INPORT_LIMIT_IRON = 0; // 輸入制限量:鉄
var OPT_CONV_INPORT_LIMIT_OIL = 0; // 輸入制限量:石油
var OPT_CONV_INPORT_LIMIT_ALUMI= 0; // 輸入制限量:アルミ
var OPT_CONV_INPORT_LIMIT_FOOD = 0; // 輸入制限量:食料
//自動寄付用
var OPT_KIFU = 0;
//寄付用
var OPT_RICE_KIFU_MAX = 10000; //寄付を開始する食料の量
var OPT_RICE_KIFU = 1000; //寄付をする食料の量
// =============================================================================================
// 設定値(スクリプト内固定値)
var COLOR_FRAME = "#808080"; // 枠背景色
var COLOR_BASE = "#463465"; // 拠点リンク色
var COLOR_TITLE = "#C0C0D0"; // 各BOXタイトル背景色
var COLOR_BACK = "#E0E0FF"; // 各BOX背景色
var COLOR_INFOBOX_TITLE = "#C8CFE6"; // 各拠点・設定ボタン枠内背景色
var COLOR_INFOBOX_NOW = "#80CFE6"; // 各拠点枠内背景色(現在の拠点)
var COLOR_INFOBOX_NEXT = "#A8D3EF"; // 各拠点枠内背景色(次の拠点)
var COLOR_INFOBOX_NOTICE = "#E0C0C0"; // 設定ボタン枠内背景色(注意喚起用)
var COLOR_LOG_NORMAL = "#E0E0FF"; // 各ログ情報枠背景色
var COLOR_LOG_DELETE = "#DDDDBB"; // 削除項目背景色
var COLOR_LOG_PAST = "#C0C0D0"; // 過去ログ項目背景色
var COLOR_INDICATOR_READY = "#707070"; // 非稼動時
var COLOR_INDICATOR_PROGRESS = "#A0A0E0"; // 動作中
var COLOR_INDICATOR_ERROR = "#F07070"; // エラー発生時
var INDICATOR_MAX = 548; // インジケーターの長さpx
var INTERVAL = 500; // httpリクエスト間インターバル。短くしても動作的には大差ない。(1秒=1000)
var THREAD_CHANGE = 5; // 擬似リカーシブコール等でスレッドを移動する場合の内部インターバル。
var ROUND_TIME_DEFAULT = 60; // デフォルト巡回時間
var ROUND_TIME_LEAST = 10; // 最短巡回時間(低Lv構造物建設時等)
var PAGE_CACHE_TIME1 = 20000; // ページキャッシュ有効時間(最短建設時間+最短巡回時間)
var PAGE_CACHE_TIME2 = 600000; // ページキャッシュ有効時間(施設削除時間=この時点で削除開始していなければ現在も存在する)
var PAGE_CACHE_TIME3 = 86400000; // ページキャッシュ有効時間(プロフィールなど)
var FETCH_MAX = 15; // 無限ロード防止用
var ADVANCE = false;
var OFF_MIXI_AD = false;
// 保存データデリミタ
var DELIMIT1 = "#$%";
var DELIMIT2 = "&?@";
var DELIMIT3 = "{=]";
var DELIMIT4 = "|-/";
//保存データインデックス(拠点)
var IDX_XY = 0; // 座標
var IDX_BASE_NAME = 1; // 拠点名
var IDX_URL = 2; // 拠点URL
var IDX_BASE_ID = 3; // 拠点ID
var IDX_ACTIONS = 4; // 実行中作業
var IDX_VISIT = 5; // 前回巡回時刻
var IDX_RESERVE = 6; // 予約
//保存データインデックス(実行中作業)
var IDX2_STATUS = 0; //ステータス
var IDX2_TIME = 1; //完了時刻
var IDX2_TYPE = 2; //種別 C:都市画面、D:内政スキル使用、R:内政スキル回復、Fxy:施設座標
var IDX2_ALERTED = 3; //通知済フラグ
var IDX2_DELETE = 4; // 削除フラグ
var IDX2_ROTATION = 5; // 巡回フラグ
//作業種別
var TYPE_CONSTRUCTION = "C"; //建設
var TYPE_MARCH = "M"; //出撃
var TYPE_DOMESTIC = "D"; //内政スキル使用
var TYPE_RECOVER = "R"; //内政スキル回復
var TYPE_FACILITY = "F"; //施設
var TYPE_DELETE = "B"; //建設
var TYPE_RESERVE = "V"; //基地建設予約
var TYPE_BASEBUILD = "X"; //基地建設
var TYPE_SCRAP = "Z"; //基地削除
//予約種別
var RESERVE_NONE = ""; //予約なし
var RESERVE_DELETING = "d"; //削除中
var RESERVE_DELETED = "D"; //削除済み
var RESERVE_ABORT = "A"; //建設失敗
var RESERVE_FRONTBASE1 = "f"; //前線基地 予約中
var RESERVE_SUPPLYBASE1 = "s"; //補給基地 予約中
var RESERVE_FRONTBASE2 = "F"; //前線基地 建設中
var RESERVE_SUPPLYBASE2 = "S"; //補給基地 建設中
//実行プランインデックス
var PLAN_BUILD = 1; // 自動建築
var PLAN_SCRAP1 = 2; // スクラップ&ビルド(スクラップ側)
var PLAN_SCRAP2 = 3; // スクラップ&ビルド(ビルド側)
var PLAN_DOMESKILL = 4; // 内政スキル
var PLAN_DOMEROTATE = 5; // 内政ローテーション
var PLAN_TRADE = 6; // 自動資源変換
var PLAN_DONATE = 7; // 自動寄付
var PLAN_BUILDBASE = 8; // 拠点建設
var PLAN_WEAPON = 9; // 武装LvUP
var PLAN_ARMOR = 10; // 装甲LvUP
var PLAN_SOLDIER1 = 11; // 造兵(歩兵学校)
var PLAN_SOLDIER2 = 12; // 造兵(陸軍士官学校)
var PLAN_SOLDIER3 = 13; // 造兵(海軍兵学校)
var PLAN_SOLDIER4 = 14; // 造兵(空軍士官学校)
var PLAN_SOLDIER5 = 15; // 造兵(工兵学校)
//実行プランインデックス
var FETCH_LIST = 1; // 拠点リスト更新(ユーザーページ)
var FETCH_VILLAGE = 2; // 拠点
var FETCH_DOMESTIC = 3; // 内政
var FETCH_UNITSTATUS = 4; // 部隊管理
var FETCH_CASTLE = 11; // 総司令部・基地
var FETCH_TECH_LABO = 12; // 技術研究所
var FETCH_WEAPON_LABO = 13; // 武装研究所
var FETCH_ARMOR_LABO = 14; // 装甲研究所
var FETCH_SOLDIER_SCHOOL = 15; // 歩兵学校
var FETCH_ARMY_SCHOOL = 16; // 陸軍士官学校
var FETCH_NAVY_SCHOOL = 17; // 海軍兵学校
var FETCH_AIRFORCE_SCHOOL = 18; // 空軍学校
var FETCH_ENGINEER_SCHOOL = 19; // 工兵学校
// =============================================================================================
// ゲーム内パラメータ(固定値)
var DASkill = [ "■■■■",
"鉄生産増加","緊急鉄鉱石輸送","海軍戦力増強",
"石油生産増加","緊急石油輸送","陸軍戦力増強",
"軽金属生産増加","緊急軽金属輸送","空軍戦力増強",
"食料生産増加","緊急食料輸送",
"農林対策","xx農林技術xx",
"資源生産増加","資源補給作戦",
"好景気","xx富国論xx","殖産興業",
"戦時特需景気","xx美玉歌舞xx",
"xx恵風xx","xx人選眼力xx",
"戦時設計","軍需相の辣腕",
"歩兵訓練","歩兵動員令",
"戦車兵訓練","陸軍演習",
"水兵訓練","艦艇増産",
"飛行兵訓練","航空機増産",
"工兵訓練","対陣地兵器増産"
];
//内部コード
var CODE = new Array();
// 資源
CODE["鉄"] = 101;
CODE["石油"] = 102;
CODE["アルミ"] = 103;
CODE["食料"] = 104;
// 施設
CODE["食品加工工場"] = 215;
CODE["銅像"] = 216;
CODE["補給基地"] = 220;
CODE["前線基地"] = 222;
CODE["備蓄基地"] = 233;
// 兵科
var CODE_SOLDIER = 300;
CODE["新兵"] = 301;
CODE["軽戦車"] = 303;
CODE["水雷艇"] = 308;
CODE["軽戦闘機"] = 305;
CODE["重戦車"] = 304;
CODE["駆逐艦"] = 309;
CODE["重戦闘機"] = 307;
CODE["工作員"] = 310;
CODE["特殊部隊"] = 311;
CODE["工兵"] = 312;
CODE["自走臼砲"] = 313;
var TYPES_SOLDIERS = 14; // 兵科数
// 部隊管理ページ 兵科順
LIST_STATUS_SOLDIER = ["新兵","軽戦車","水雷艇","軽戦闘機","重戦車","駆逐艦","重戦闘機","工作員","特殊部隊","工兵","自走臼砲"];
// 造兵施設 逆引き用
var SCHOOL_LIST = new Array();
/*
SCHOOL_LIST["新兵"] = "歩兵学校";
SCHOOL_LIST["水雷艇"] = "海軍兵学校";
SCHOOL_LIST["駆逐艦"] = "海軍兵学校";
SCHOOL_LIST["軽戦闘機"] = "空軍士官学校";
SCHOOL_LIST["重戦闘機"] = "空軍士官学校";
SCHOOL_LIST["軽戦車"] = "陸軍士官学校";
SCHOOL_LIST["重戦車"] = "陸軍士官学校";
SCHOOL_LIST["工作員"] = "歩兵学校";
SCHOOL_LIST["特殊部隊"] = "空軍士官学校";
SCHOOL_LIST["工兵"] = "工兵学校";
SCHOOL_LIST["自走臼砲"] = "工兵学校";
*/
SCHOOL_LIST[CODE["新兵"] -CODE_SOLDIER] = "歩兵学校";
SCHOOL_LIST[CODE["水雷艇"] -CODE_SOLDIER] = "海軍兵学校";
SCHOOL_LIST[CODE["駆逐艦"] -CODE_SOLDIER] = "海軍兵学校";
SCHOOL_LIST[CODE["軽戦闘機"] -CODE_SOLDIER] = "空軍士官学校";
SCHOOL_LIST[CODE["重戦闘機"] -CODE_SOLDIER] = "空軍士官学校";
SCHOOL_LIST[CODE["軽戦車"] -CODE_SOLDIER] = "陸軍士官学校";
SCHOOL_LIST[CODE["重戦車"] -CODE_SOLDIER] = "陸軍士官学校";
SCHOOL_LIST[CODE["工作員"] -CODE_SOLDIER] = "歩兵学校";
SCHOOL_LIST[CODE["特殊部隊"] -CODE_SOLDIER] = "空軍士官学校";
SCHOOL_LIST[CODE["工兵"] -CODE_SOLDIER] = "工兵学校";
SCHOOL_LIST[CODE["自走臼砲"] -CODE_SOLDIER] = "工兵学校";
// =============================================================================================
// 関数
var $ = function(id) { return document.getElementById(id); };
var $x = function(xp,dc) { return document.evaluate(xp, dc||document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; };
var $u = function(xp,dc) { return document.evaluate(xp, dc||document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); };
var $a = function(xp,dc) { var r = document.evaluate(xp, dc||document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); var a=[]; for(var i=0; i<r.snapshotLength; i++){ a.push(r.snapshotItem(i)); } return a; };
var $e = function(e,t,f) { if(!e) return; e.addEventListener(t, f, false); };
function log() { unsafeWindow.console.log.apply(unsafeWindow.console, Array.slice(arguments)) };
function debugLog( mes ) { if(DEBUG) { console.log(mes); } };
// =============================================================================================
// グローバル変数
// 表示用
var g_xyNowVillage; // 今拠点
var g_xyNextVillage; // 次巡回先予定拠点
// ページキャッシュ用
var g_pageVillage;
var g_pageDomestic;
var g_pageLand;
var g_pageCastle;
var g_pageUnitStatus;
var g_pageTechLabo;
var g_pageWeaponLabo;
var g_pageArmorLabo;
var g_pageSoldierSchool;
var g_pageArmySchool;
var g_pageNavySchool;
var g_pageAirforceSchool;
var g_pageEngineerSchool;
// マウスイベント用
var g_MD=""; // マウスダウン対象コンテナ名
var g_MX=0; // マウスイベントX
var g_MY=0; // マウスイベントY
// 自動資源変換 貿易センター
var flgTrade = false; // 変換を行う場合
var URLTradeCenter = ""; // 貿易センターがある拠点のURL
var xyTradeCenter = ""; // 貿易センターがある拠点のxy
// フラグ
var g_flgScreenChange = false; // 画面変更フラグ
// 擬似リカーシブコール管理用
var g_nFetchPages;
var g_flgActList = new Array();
var g_flgFetchList = new Array();
// =============================================================================================
//リソース
var g_resIndicator; // インジケーター
var tidMain2; // 巡回用スレッドID
//Main
(function(){
//初期化
// =============================================================================================
//前処理フェイズ:情報ウインドウが出る以前の処理。基本的に処理が行われた後、リロードされる。
// =============================================================================================
// 基礎表示フェイズ:画面修整とmixiAD対策
// zIndex(重なり順序)の修正
j$("div#status div#status_left").css({"z-index":"0"});
j$("#menu_container").css({"z-index":"980"});
j$("div#map-scroll").css({"z-index":"150"});
j$("a#cur01, a#cur02, a#cur03, a#cur04, a#double-cur01, a#double-cur02, a#double-cur03, a#double-cur04").css({"z-index":"460"});
// mixi AD 対策
if(OFF_MIXI_AD) {
var mixi_ad_head = $u('//div[@ID="mixi_ad_head"]');
if(mixi_ad_head.snapshotLength) {
mixi_ad_head.snapshotItem(0).style.display = "none";
}
var mixi_ad_groups = $u('//div[@ID="mixi_ad_groups"]');
if(mixi_ad_groups.snapshotLength) {
mixi_ad_groups.snapshotItem(0).style.display = "none";
}
var mixi_ad_news = $u('//div[@class="brNews"]');
if(mixi_ad_news.snapshotLength) {
mixi_ad_news.snapshotItem(0).style.display = "none";
}
}
var url_param = decodeUrlParams();
// リンクを追加する
addHtmlOpenLink();
if( location.pathname == "/land.php" && url_param.x && url_param.y ) {
addHtmlBasebuildLink(); //領地画面なら拠点建設リンクを追加
}
// =============================================================================================
//バグ回避 600000=10*60*1000
// 領地画面や建設画面で停止した場合の処理
// 5分間止まっていた場合拠点画面に移動する
// if(location.pathname == "/land.php" || location.pathname == "/facility/facility.php") {
unsafeWindow.setTimeout(function(){location.href = "http://"+HOST+"/village.php";},600000);
// } else
// if(location.pathname == "/village.php") {
// unsafeWindow.setTimeout(function(){location.href = "http://"+HOST+"/village.php";},600000);
// }
// =============================================================================================
// 初期表示フェイズ:メインウインドウ表示
// メインウインドウ表示
if(location.pathname == "/village.php") {
g_xyNowVillage = getXY();
updateLogVisit(getXY());
if(getStayMode()) {
redrawInfoWindow(true);
}
}
if(location.pathname == "/land.php" && url_param.x && url_param.y) {
var xy = url_param.x +","+ url_param.y;
// 基地建設予約があれば、巡回時刻を更新
var villages = loadVillages();
for(var i=0; i<villages.length; i++) {
if(xy == villages[i][IDX_XY]) {
g_xyNowVillage = xy;
updateLogVisit(xy);
if(getStayMode()) {
redrawInfoWindow(true);
}
break;
}
}
}
// =============================================================================================
// データ収集フェイズ:保存データと現在のページから情報を収集します
// 訪れた現在のページを解析・保存
//拠点画面なら
if(location.pathname == "/village.php") {
g_pageVillage = document;
parseHtmlVillage(g_pageVillage);
parseHtmlVillageActions(g_pageVillage);
parseHtmlVillageDomestic(g_pageVillage);
parseHtmlVillageTradeCenter(g_pageVillage);
}
//総司令部or基地画面なら拠点削除データ取得
if(location.pathname == "/facility/castle.php") {
g_pageCastle = document;
parseHtmlCastle(g_pageCastle);
}
//領地画面なら拠点建設データ取得
if(location.pathname == "/land.php" && url_param.x && url_param.y) {
g_pageLand = document;
parseHtmlLand(g_pageLand);
}
//プロフィール画面なら拠点画面URLを取得
if((location.pathname == "/user/" || location.pathname == "/user/index.php") && getParameter("user_id") == "") {
g_pageUser = document;
parseHtmlUser(g_pageUser);
}
//内政画面なら
if(location.pathname == "/card/domestic_setting.php") {
g_pageDomestic = document;
parseHtmlDomestic(g_pageDomestic);
}
// 部隊管理画面
if( location.pathname == "/facility/unit_status.php" ) {
g_pageUnitStatus = document;
}
//各施設
//兵士作成画面なら作成中兵士を取得
//研究所画面なら武装装甲強化を取得
if( location.pathname == "/facility/facility.php" ) {
getHtmlFacility(document.body, url_param.x, url_param.y);
}
// 更新された情報でメインウインドウを再表示
redrawInfoWindow(false);
// =============================================================================================
// 実処理フェイズ
if(location.pathname == "/village.php") {
// メインエントリー
var tid=unsafeWindow.setTimeout(function(){
plan();
fetch();
},THREAD_CHANGE);
} else
if(location.pathname == "/land.php") {
var xy = url_param.x +","+ url_param.y;
// 基地建設予約があれば、巡回時刻を更新
var villages = loadVillages();
for(var i=0; i<villages.length; i++) {
if(xy == villages[i][IDX_XY]) {
var tid=unsafeWindow.setTimeout(function(){
plan4land();
fetch();
},THREAD_CHANGE);
break;
}
}
setIndicatorReady();
} else {
setIndicatorReady();
}
})();
// =============================================================================================
//プランニングフェイズ:オプション設定から、今回実行する処理を決定する
function plan() {
debugLog("=== start plan ===");
// 読み込みページ数をクリア
var g_nFetchPages = 0;
// オプションを読み込み
var xyVillage = getXY();
LoadOptBuild(xyVillage);
LoadOptDomestic(xyVillage);
LoadOptCommon();
// アクトリストを設定
g_flgActList[PLAN_BUILD] = false;
g_flgActList[PLAN_SCRAP1] = false;
g_flgActList[PLAN_SCRAP2] = false;
g_flgActList[PLAN_DOMESKILL] = false;
g_flgActList[PLAN_DOMEROTATE] = false;
g_flgActList[PLAN_WEAPON] = false;
g_flgActList[PLAN_ARMOR] = false;
g_flgActList[PLAN_TRADE] = false;
g_flgActList[PLAN_DONATE] = false;
g_flgActList[PLAN_SOLDIER1] = false;
g_flgActList[PLAN_SOLDIER2] = false;
g_flgActList[PLAN_SOLDIER3] = false;
g_flgActList[PLAN_SOLDIER4] = false;
g_flgActList[PLAN_SOLDIER5] = false;
if(OPT_BLD) {
g_flgActList[PLAN_BUILD] = true;
}
if(OPT_SCRAP) {
g_flgActList[PLAN_SCRAP1] = true;
g_flgActList[PLAN_SCRAP2] = true;
}
for(var z=1;z<DASkill.length;z++){
if(OPT_DOME_SKILL[z]==1) {
g_flgActList[PLAN_DOMESKILL] = true;
break;
}
}
if(OPT_BLD_SOL) {
g_flgActList[PLAN_SOLDIER1] = true;
g_flgActList[PLAN_SOLDIER2] = true;
g_flgActList[PLAN_SOLDIER3] = true;
g_flgActList[PLAN_SOLDIER4] = true;
g_flgActList[PLAN_SOLDIER5] = true;
}
if(OPT_BKBG_CHK) {
g_flgActList[PLAN_WEAPON] = true;
g_flgActList[PLAN_ARMOR] = true;
}
if(OPT_CONV_TRADE_CENTER != "") {
g_flgActList[PLAN_TRADE] = true;
}
if(OPT_KIFU) {
g_flgActList[PLAN_DONATE] = true;
}
// フェッチリストを設定
g_flgFetchList[FETCH_LIST] = true;
g_flgFetchList[FETCH_VILLAGE] = true;
g_flgFetchList[FETCH_DOMESTIC] = false;
g_flgFetchList[FETCH_CASTLE] = false;
g_flgFetchList[FETCH_UNITSTATUS] = false;
g_flgFetchList[FETCH_TECH_LABO] = false;
g_flgFetchList[FETCH_WEAPON_LABO] = false;
g_flgFetchList[FETCH_ARMOR_LABO] = false;
g_flgFetchList[FETCH_SOLDIER_SCHOOL] = false;
g_flgFetchList[FETCH_ARMY_SCHOOL] = false;
g_flgFetchList[FETCH_NAVY_SCHOOL] = false;
g_flgFetchList[FETCH_AIRFORCE_SCHOOL] = false;
g_flgFetchList[FETCH_ENGINEER_SCHOOL] = false;
if(g_flgActList[PLAN_DOMESKILL]) {
g_flgFetchList[FETCH_DOMESTIC] = true;
}
if(g_flgActList[PLAN_DOMEROTATE]) {
g_flgFetchList[FETCH_DOMESTIC] = true;
}
if(g_flgActList[PLAN_SOLDIER1]) {
g_flgFetchList[FETCH_UNITSTATUS] = true;
g_flgFetchList[FETCH_SOLDIER_SCHOOL] = true;
g_flgFetchList[FETCH_ARMY_SCHOOL] = true;
g_flgFetchList[FETCH_NAVY_SCHOOL] = true;
g_flgFetchList[FETCH_AIRFORCE_SCHOOL] = true;
g_flgFetchList[FETCH_ENGINEER_SCHOOL] = true;
}
if(g_flgActList[PLAN_WEAPON]) {
g_flgFetchList[FETCH_WEAPON_LABO] = true;
}
if(g_flgActList[PLAN_ARMOR]) {
g_flgFetchList[FETCH_ARMOR_LABO] = true;
}
g_flgActList[0] = 0;
for(var i=1;i<g_flgActList.length; i++) {
if(g_flgActList[i] == true) { g_flgActList[0]++; }
}
g_flgFetchList[0] = 0;
for(var i=1;i<g_flgFetchList.length; i++) {
if(g_flgFetchList[i] == true) { g_flgFetchList[0]++; }
}
}
function plan4land() {
debugLog("=== start plan4land ===");
// 読み込みページ数をクリア
var g_nFetchPages = 0;
// オプションを読み込み
var xyVillage = getXY();
LoadOptBuild(xyVillage);
LoadOptDomestic(xyVillage);
LoadOptCommon();
// アクトリストを設定
g_flgActList[PLAN_BUILD] = false;
g_flgActList[PLAN_SCRAP1] = false;
g_flgActList[PLAN_SCRAP2] = false;
g_flgActList[PLAN_DOMESKILL] = false;
g_flgActList[PLAN_DOMEROTATE] = false;
g_flgActList[PLAN_WEAPON] = false;
g_flgActList[PLAN_ARMOR] = false;
g_flgActList[PLAN_TRADE] = false;
g_flgActList[PLAN_DONATE] = false;
g_flgActList[PLAN_SOLDIER1] = false;
g_flgActList[PLAN_SOLDIER2] = false;
g_flgActList[PLAN_SOLDIER3] = false;
g_flgActList[PLAN_SOLDIER4] = false;
g_flgActList[PLAN_SOLDIER5] = false;
g_flgActList[PLAN_BUILDBASE] = true;
// フェッチリストを設定
g_flgFetchList[FETCH_LIST] = true;
g_flgFetchList[FETCH_VILLAGE] = false;
g_flgFetchList[FETCH_DOMESTIC] = false;
g_flgFetchList[FETCH_CASTLE] = false;
g_flgFetchList[FETCH_UNITSTATUS] = false;
g_flgFetchList[FETCH_TECH_LABO] = false;
g_flgFetchList[FETCH_WEAPON_LABO] = false;
g_flgFetchList[FETCH_ARMOR_LABO] = false;
g_flgFetchList[FETCH_SOLDIER_SCHOOL] = false;
g_flgFetchList[FETCH_ARMY_SCHOOL] = false;
g_flgFetchList[FETCH_NAVY_SCHOOL] = false;
g_flgFetchList[FETCH_AIRFORCE_SCHOOL] = false;
g_flgFetchList[FETCH_ENGINEER_SCHOOL] = false;
g_flgActList[0] = 0;
for(var i=1;i<g_flgActList.length; i++) {
if(g_flgActList[i] == true) { g_flgActList[0]++; }
}
g_flgFetchList[0] = 0;
for(var i=1;i<g_flgFetchList.length; i++) {
if(g_flgFetchList[i] == true) { g_flgFetchList[0]++; }
}
}
// ===========================================================================================================
// フェッチフェイズ
// 実行時に必要となるページを予め読み込んでおく
// キャッシュがなければhttpリクエストを発行
function fetch() {
debugLog("=== start fetch ===");
// fecth回数制限、無限ループ防止対策
if( ++g_nFetchPages > FETCH_MAX ) {
debugLog("=== fetch over ===");
abort_next();
return;
}
var g_flgActList = cloadData("Plan", "[]", true, true );
// プログレスバー更新
var nProgress = 0;
for(var i=1;i<g_flgActList.length; i++) {
if(g_flgActList[i] == true) { nProgress++; }
}
for(var i=1;i<g_flgFetchList.length; i++) {
if(g_flgFetchList[i] == true) { nProgress++; }
}
setIndicator( g_flgActList[0] + g_flgFetchList[0] - nProgress, g_flgActList[0] + g_flgFetchList[0] );
var xyVillage = getXY();
// 新拠点チェック
if(g_flgFetchList[FETCH_LIST]) {
g_flgFetchList[FETCH_LIST] = false;
var villages = loadVillages();
var nbVillage = $a('//ul/li/a[contains(@href,"/village_change.php?village_id")]').length + 1; //拠点数
var nbListVillage = 0;
var cExist = " ";
var nExist = -1;
for(var i=0; i<villages.length; i++) {
if((villages[i][IDX_RESERVE] == RESERVE_NONE) || (villages[i][IDX_RESERVE] == RESERVE_DELETING)) {
nbListVillage ++;
}
}
if(nbVillage != nbListVillage) {
// 拠点数が異なる場合、ユーザーページ取得
debugLog("=== fetch request user profile ===");
var tid=unsafeWindow.setTimeout(function() {
j$.get("http://"+HOST+"/user/",function(x) {
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
g_pageUser = htmldoc;
parseHtmlUser(g_pageUser);
fetch();
});
},INTERVAL);
return;
}
}
// 拠点ページを読み込んでいなければ、リクエストを発行
if(g_flgFetchList[FETCH_VILLAGE]) {
g_flgFetchList[FETCH_VILLAGE] = false;
if( !g_pageVillage ) {
g_pageVillage = getPage("Village" + xyVillage, PAGE_CACHE_TIME1);
if( !g_pageVillage ) {
debugLog("=== fetch request village ===");
var tid=unsafeWindow.setTimeout(function() {
j$.get("http://"+HOST+"/village.php",function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
// キャッシュしておく
storePage("Village" + xyDoc, htmldoc);
g_pageVillage = htmldoc;
parseHtmlVillage(htmldoc);
parseHtmlVillageActions(htmldoc);
parseHtmlVillageDomestic(htmldoc);
parseHtmlVillageTradeCenter(htmldoc);
var xyDoc = getXY(htmldoc);
if(xyDoc != xyVillage) {
debugLog("=== fetch Village: detect village change ===");
abort_next();
return;
}
fetch();
});
},INTERVAL);
return;
}
}
}
if(g_flgFetchList[FETCH_DOMESTIC]) {
g_flgFetchList[FETCH_DOMESTIC] = false;
if( !g_pageDomestic ) {
var tid=unsafeWindow.setTimeout(function() {
j$.get("http://"+HOST+"/card/domestic_setting.php",function(x){
debugLog("=== fetch domestic loaded ===");
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
g_pageDomestic = htmldoc;
parseHtmlDomestic(g_pageDomestic);
var xyDoc = getXY(htmldoc);
if(xyDoc != xyVillage) {
debugLog("=== fetch Domestic: detect village change ===");
abort_next();
return;
}
fetch();
});
},INTERVAL);
return;
}
}
if(g_flgFetchList[FETCH_CASTLE]) {
g_flgFetchList[FETCH_CASTLE] = false;
if( !g_pageCastle ) {
debugLog("=== fetch request base ===");
var tid=unsafeWindow.setTimeout(function() {
j$.get("http://"+HOST+"/facility/facility.php?x=3&y=3",function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
g_pageCastle = htmldoc;
var xyDoc = getXY(htmldoc);
if(xyDoc != xyVillage) {
debugLog("=== fetch Castle: detect village change ===");
abort_next();
return;
}
fetch();
});
},INTERVAL);
return;
}
}
if(g_flgFetchList[FETCH_UNITSTATUS]) {
g_flgFetchList[FETCH_UNITSTATUS] = false;
debugLog("=== fetch FETCH_UNITSTATUS ===");
if( !g_pageUnitStatus ) {
var tid=unsafeWindow.setTimeout(function() {
j$.get("http://"+HOST+"/facility/unit_status.php",function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
// 読み込んだページを解析後、擬似リカーシブコール
g_pageUnitStatus = htmldoc;
var xyDoc = getXY(htmldoc);
if(xyDoc != xyVillage) {
debugLog("=== fetch Unit status: detect village change ===");
abort_next();
return;
}
fetch();
});
},INTERVAL);
return;
}
}
// if プランニングされた
// if 本拠地(多分要らない)
// if 技術研究所が存在 & 場所が判明
if(g_pageVillage) {
var area = get_area(g_pageVillage);
for(var i=0;i<area.length;i++){
var Temp = area[i].xy.split(",");
var _x = Temp[0];
var _y = Temp[1];
var _lv = area[i].lv;
if(area[i].name == "技術研究所") {
if(g_flgFetchList[FETCH_TECH_LABO]) {
g_flgFetchList[FETCH_TECH_LABO] = false;
debugLog("=== FETCH_TECH_LABO ===");
if( !g_pageTechLabo ) {
var tid=unsafeWindow.setTimeout(function() {
j$.get("http://"+HOST+"/facility/facility.php?x=" + _x + "&y=" + _y ,function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
g_pageTechLabo = htmldoc;
var xyDoc = getXY(htmldoc);
if(xyDoc != xyVillage) {
debugLog("=== fetch Tech Factory: detect village change ===");
abort_next();
return;
}
fetch();
});
},INTERVAL);
return;
}
}
}
if(area[i].name == "武装研究所") {
if(g_flgFetchList[FETCH_WEAPON_LABO]) {
g_flgFetchList[FETCH_WEAPON_LABO] = false;
debugLog("=== FETCH_WEAPON_LABO ===");
if( !g_pageWeaponLabo ) {
var tid=unsafeWindow.setTimeout(function() {
j$.get("http://"+HOST+"/facility/facility.php?x=" + _x + "&y=" + _y ,function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
g_pageWeaponLabo = htmldoc;
var xyDoc = getXY(htmldoc);
if(xyDoc != xyVillage) {
debugLog("=== fetch facility: detect village change ===");
abort_next();
return;
}
fetch();
});
},INTERVAL);
return;
}
}
}
if(area[i].name == "装甲研究所") {
if(g_flgFetchList[FETCH_ARMOR_LABO]) {
g_flgFetchList[FETCH_ARMOR_LABO] = false;
debugLog("=== FETCH_ARMOR_LABO ===");
if( !g_pageArmorLabo ) {
var tid=unsafeWindow.setTimeout(function() {
j$.get("http://"+HOST+"/facility/facility.php?x=" + _x + "&y=" + _y ,function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
g_pageArmorLabo = htmldoc;
var xyDoc = getXY(htmldoc);
if(xyDoc != xyVillage) {
debugLog("=== fetch facility: detect village change ===");
abort_next();
return;
}
fetch();
});
},INTERVAL);
return;
}
}
}
if(area[i].name == "歩兵学校") {
if(g_flgFetchList[FETCH_SOLDIER_SCHOOL]) {
g_flgFetchList[FETCH_SOLDIER_SCHOOL] = false;
debugLog("=== FETCH_SOLDIER_SCHOOL ===");
if( !g_pageSoldierSchool ) {
var tid=unsafeWindow.setTimeout(function() {
j$.get("http://"+HOST+"/facility/facility.php?x=" + _x + "&y=" + _y ,function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
g_pageSoldierSchool = htmldoc;
getTrainingSoldier(htmldoc);
var xyDoc = getXY(htmldoc);
if(xyDoc != xyVillage) {
debugLog("=== fetch facility: detect village change ===");
abort_next();
return;
}
fetch();
});
},INTERVAL);
return;
}
}
}
if(area[i].name == "陸軍士官学校") {
if(g_flgFetchList[FETCH_ARMY_SCHOOL]) {
g_flgFetchList[FETCH_ARMY_SCHOOL] = false;
debugLog("=== FETCH_ARMY_SCHOOL ===");
if( !g_pageArmySchool ) {
var tid=unsafeWindow.setTimeout(function() {
j$.get("http://"+HOST+"/facility/facility.php?x=" + _x + "&y=" + _y ,function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
g_pageArmySchool = htmldoc;
getTrainingSoldier(htmldoc);
var xyDoc = getXY(htmldoc);
if(xyDoc != xyVillage) {
debugLog("=== fetch facility: detect village change ===");
abort_next();
return;
}
fetch();
});
},INTERVAL);
return;
}
}
}
if(area[i].name == "海軍兵学校") {
if(g_flgFetchList[FETCH_NAVY_SCHOOL]) {
g_flgFetchList[FETCH_NAVY_SCHOOL] = false;
debugLog("=== FETCH_NAVY_SCHOOL ===");
if( !g_pageNavySchool ) {
var tid=unsafeWindow.setTimeout(function() {
j$.get("http://"+HOST+"/facility/facility.php?x=" + _x + "&y=" + _y ,function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
g_pageNavySchool = htmldoc;
getTrainingSoldier(htmldoc);
var xyDoc = getXY(htmldoc);
if(xyDoc != xyVillage) {
debugLog("=== fetch facility: detect village change ===");
abort_next();
return;
}
fetch();
});
},INTERVAL);
return;
}
}
}
if(area[i].name == "空軍士官学校") {
if(g_flgFetchList[FETCH_AIRFORCE_SCHOOL]) {
g_flgFetchList[FETCH_AIRFORCE_SCHOOL] = false;
debugLog("=== FETCH_AIRFORCE_SCHOOL ===");
if( !g_pageAirforceSchool ) {
var tid=unsafeWindow.setTimeout(function() {
j$.get("http://"+HOST+"/facility/facility.php?x=" + _x + "&y=" + _y ,function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
g_pageAirforceSchool = htmldoc;
getTrainingSoldier(htmldoc);
var xyDoc = getXY(htmldoc);
if(xyDoc != xyVillage) {
debugLog("=== fetch facility: detect village change ===");
abort_next();
return;
}
fetch();
});
},INTERVAL);
return;
}
}
}
if(area[i].name == "工兵学校") {
if(g_flgFetchList[FETCH_ENGINEER_SCHOOL]) {
g_flgFetchList[FETCH_ENGINEER_SCHOOL] = false;
debugLog("=== FETCH_ENGINEER_SCHOOL ===");
if( !g_pageEngineerSchool ) {
var tid=unsafeWindow.setTimeout(function() {
j$.get("http://"+HOST+"/facility/facility.php?x=" + _x + "&y=" + _y ,function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
g_pageEngineerSchool = htmldoc;
getTrainingSoldier(htmldoc);
var xyDoc = getXY(htmldoc);
if(xyDoc != xyVillage) {
debugLog("=== fetch facility: detect village change ===");
abort_next();
return;
}
fetch();
});
},INTERVAL);
return;
}
}
}
}
}
debugLog("=== end fetch ===");
// 実行に移る前に、表示を更新
redrawInfoWindow(false);
// データが揃ったので、実行に移る
var tid=unsafeWindow.setTimeout(function(){
act();
},THREAD_CHANGE);
}
// ===========================================================================================================
// 実行フェイズ
// 実行プランを読み込んで、それに対する処理を発行する。
// 一連の実行処理が終わったら、未実行のプランがなくなるまで、処理を発行。
function act() {
debugLog("=== start act ===");
// プログレスバー更新
var nProgress = 0;
for(var i=1;i<g_flgActList.length; i++) {
if(g_flgActList[i] == true) { nProgress++; }
}
for(var i=1;i<g_flgFetchList.length; i++) {
if(g_flgFetchList[i] == true) { nProgress++; }
}
setIndicator( g_flgActList[0] + g_flgFetchList[0] - nProgress, g_flgActList[0] + g_flgFetchList[0] );
if(g_flgActList[PLAN_DOMESKILL]) {
debugLog("=== act PLAN_DOMESKILL ===");
g_flgActList[PLAN_DOMESKILL] = false;
actDomesticSkill();
return;
}
if(g_flgActList[PLAN_BUILD]) {
debugLog("=== act PLAN_BUILD ===");
g_flgActList[PLAN_BUILD] = false;
actSetVillageFacility(); // 自動建設
return;
}
if(g_flgActList[PLAN_SCRAP1]) {
debugLog("=== act PLAN_SCRAP1 ===");
g_flgActList[PLAN_SCRAP1] = false;
actSetVillageFacility2(); // ビルド&スクラップ
return;
}
if(g_flgActList[PLAN_WEAPON]) {
debugLog("=== act PLAN_WEAPON ===");
g_flgActList[PLAN_WEAPON] = false;
actEquipLvup(0); // 自動武装強化
return;
}
if(g_flgActList[PLAN_ARMOR]) {
debugLog("=== act PLAN_ARMOR ===");
g_flgActList[PLAN_ARMOR] = false;
actEquipLvup(1); // 自動装甲強化
return;
}
if(g_flgActList[PLAN_SOLDIER1]) {
debugLog("=== act PLAN_SOLDIER1 ===");
g_flgActList[PLAN_SOLDIER1] = false;
startMakeSoldier();
actMakeSoldier(); // 自動造兵処理
return;
}
if(g_flgActList[PLAN_SOLDIER2]) {
debugLog("=== act PLAN_SOLDIER2 ===");
g_flgActList[PLAN_SOLDIER2] = false;
actMakeSoldier(); // 自動造兵処理
return;
}
//
if(g_flgActList[PLAN_SOLDIER3]) {
debugLog("=== act PLAN_SOLDIER3 ===");
g_flgActList[PLAN_SOLDIER3] = false;
actMakeSoldier(); // 自動造兵処理
return;
}
if(g_flgActList[PLAN_SOLDIER4]) {
debugLog("=== act PLAN_SOLDIER4 ===");
g_flgActList[PLAN_SOLDIER4] = false;
actMakeSoldier(); // 自動造兵処理
return;
}
if(g_flgActList[PLAN_SOLDIER5]) {
debugLog("=== act PLAN_SOLDIER5 ===");
g_flgActList[PLAN_SOLDIER5] = false;
actMakeSoldier(); // 自動造兵処理
return;
}
if(g_flgActList[PLAN_TRADE]) {
debugLog("=== act PLAN_TRADE ===");
g_flgActList[PLAN_TRADE] = false;
actConvertResource(); // 自動貿易処理
return;
}
if(g_flgActList[PLAN_DONATE]) {
debugLog("=== act PLAN_DONATE ===");
g_flgActList[PLAN_DONATE] = false;
actAutoDonate(); // 自動寄付処理
return;
}
if(g_flgActList[PLAN_BUILDBASE]) {
debugLog("=== act PLAN_BUILDBASE ===");
g_flgActList[PLAN_BUILDBASE] = false;
actSettleVillages(g_pageLand, g_xyNowVillage); // 拠点作成
return;
}
debugLog("=== end act ===");
// 全ての実行処理が終わったら、次回巡回先の決定を行う
var tid=unsafeWindow.setTimeout(function(){
next();
},THREAD_CHANGE);
}
// ===========================================================================================================
// 次の巡回先を決定
function next() {
// 貿易の必要がある場合は、巡回先を貿易センター都市にする
forwardNextVillage(); // 次の移動先拠点と時間を設定
// 結果を再表示
redrawInfoWindow(false);
// 処理を終了
debugLog("=== all end ===");
setIndicatorReady();
}
function abort_next() {
forwardNextVillage(); // 次の移動先拠点と時間を設定
// 結果を再表示
redrawInfoWindow(false);
// 処理を終了
debugLog("=== all end ===");
setIndicatorError();
}
// ===========================================================================================================
function startMakeSoldier() {
}
function cancelMakeSoldier() {
g_flgActList[PLAN_SOLDIER1] = false;
g_flgActList[PLAN_SOLDIER2] = false;
g_flgActList[PLAN_SOLDIER3] = false;
g_flgActList[PLAN_SOLDIER4] = false;
g_flgActList[PLAN_SOLDIER5] = false;
}
// ===========================================================================================================
// メインウインドウを再表示
function redrawInfoWindow(force) {
// ウインドウが表示されている場合は必ず表示を更新
if(force || $("ABContainer")) {
closeIniBuilderBox();
openIniBuilderBox();
}
}
function setIndicator(numerator, denominator) {
if(g_resIndicator) {
g_resIndicator.style.width = (INDICATOR_MAX*numerator/denominator) +"px";
g_resIndicator.style.backgroundColor = COLOR_INDICATOR_PROGRESS;
}
}
function setIndicatorError() {
if(g_resIndicator) {
g_resIndicator.style.backgroundColor = COLOR_INDICATOR_ERROR;
}
}
function setIndicatorReady() {
if(g_resIndicator) {
g_resIndicator.style.width = INDICATOR_MAX +"px";
g_resIndicator.style.backgroundColor = COLOR_INDICATOR_READY;
}
}
// ===========================================================================================================
//URL読み込み
function decodeUrlParams() {
var url_param = {};
var matches = location.search.match(/(?:\?|&)?([^=]+)(?:=([^&]+))?/g);
if(matches) {
var param;
var key;
var data;
for(var i = 0 ; i < matches.length ; i++) {
param = matches[i].match(/(?:\?|&)?([^=]+)(?:=([^&]+))?/);
key = param[1];
data = param[2];
url_param[key] = '';
if( param.length == 3 && typeof data == 'string') {
url_param[key] = decodeURIComponent(data);
// session id
if(key.toLowerCase() == 'ssid') {
SID = key + '=' +data;
}
}
}
}
return url_param;
}
// URLパラメタ取得
function getParameter2(url, key) {
var str = url.split("?");
if(str.length < 2) {
return "";
}
var params = str[1].split("&");
for(var i = 0; i < params.length; i++) {
var keyVal = params[i].split("=");
if(keyVal[0] == key && keyVal.length == 2) {
return decodeURIComponent(keyVal[1]);
}
}
return "";
}
//URLパラメータ取得
function getParameter(key) {
var str = location.search.split("?");
if(str.length < 2) {
return "";
}
var params = str[1].split("&");
for(var i = 0; i < params.length; i++) {
var keyVal = params[i].split("=");
if(keyVal[0] == key && keyVal.length == 2) {
return decodeURIComponent(keyVal[1]);
}
}
return "";
}
function getXY(htmldoc) {
var gnaviorgNav = $x('id("gnavi")', htmldoc||document);
if(gnaviorgNav) {
var nowLoc = $x('id("gnavi")//a[contains(@href,"map.php")]', htmldoc||document);
}else{
var nowLoc = $x('id("gNav")//a[contains(@href,"map.php")]', htmldoc||document);
}
if(!nowLoc) return null;
var xy = nowLoc.href.match(/x=([\-0-9]+)&y=([\-0-9]+)/i);
if( xy ) {
return xy[1]+","+xy[2];
}
}
function getMyVillage() {
var ret = new Array();
var xy=getXY();
if(! xy){
return ret;
}
var villages = loadVillages();
for(var i = 0; i < villages.length; i++) {
var villageData = villages[i];
if(villageData[IDX_XY] == xy) {
ret[IDX_XY] = villageData[IDX_XY];
ret[IDX_BASE_NAME] = villageData[IDX_BASE_NAME];
return ret;
}
}
return ret;
}
// ===========================================================================================================
// ページ操作関数:リンク追加、表示情報追加
//メインウインドウ表示用リンクを追加
function addHtmlOpenLink() {
if(HOST[0] == "s" || HOST[0] == "h" || HOST[0] == "p") {
var sidebar = document.evaluate('//*[@class="sideBoxHead"]/h3/strong',document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
} else {
var sidebar = document.evaluate('//a[@title="拠点"]',document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
}
if(sidebar.snapshotLength == 0){
sidebar = document.evaluate('//*[@class="xy"]',document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(sidebar.snapshotLength == 0) return;
}
//自動移動リンク
var openLink = document.createElement("a");
openLink.id = "Auto_Builder";
openLink.href = "javascript:void(0);";
openLink.style.marginTop = "0px";
openLink.style.marginLeft = "0px";
openLink.innerHTML = " [自動建設]";
/*
if(HOST[0] == "s" || HOST[0] == "h") {
openLink.style.color = "#000000";
} else {
openLink.style.color = "#FFFFFF";
}
*/
openLink.style.color = "#FFFFFF";
openLink.style.cursor = "pointer";
openLink.addEventListener("click", function() {
redrawInfoWindow(true);
setIndicatorReady();
}, true);
if(HOST[0] == "s" || HOST[0] == "h") {
sidebar.snapshotItem(1).appendChild(openLink);
} else {
sidebar.snapshotItem(0).appendChild(openLink);
}
}
//領地画面なら拠点建設リンクを追加
function addHtmlBasebuildLink() {
//id="tMenu"にLinkを挿入
var tMenu = document.evaluate('//div[@class="status"]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(tMenu.snapshotLength == 0) {
var tMenu = document.evaluate('//div[@id="basepoint"]',
document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(tMenu.snapshotLength == 0) return;
}
var villageLink = document.createElement("span");
villageLink.style.color = "white";
villageLink.style.fontSize = "10px";
villageLink.style.textAlign = "center";
villageLink.innerHTML = "建設予約 ";
tMenu.snapshotItem(0).appendChild(villageLink);
//補給基地作成予約
var villageLink = document.createElement("a");
villageLink.id = "village";
villageLink.style.color = "white";
villageLink.style.fontSize = "10px";
villageLink.style.textAlign = "center";
villageLink.href = "javascript:void(0);";
villageLink.innerHTML = "補給基地";
villageLink.addEventListener("click", function() { addReserveVillages(CODE["補給基地"]); }, true);
tMenu.snapshotItem(0).appendChild(villageLink);
var villageLink = document.createElement("span");
villageLink.style.color = "white";
villageLink.style.fontSize = "10px";
villageLink.style.textAlign = "center";
villageLink.innerHTML = " ";
tMenu.snapshotItem(0).appendChild(villageLink);
//前線基地作成予約
var fortLink = document.createElement("a");
fortLink.id = "fort";
fortLink.style.color = "white";
fortLink.style.fontSize = "10px";
fortLink.style.textAlign = "center";
fortLink.href = "javascript:void(0);";
fortLink.innerHTML = "前線基地";
fortLink.addEventListener("click", function() { addReserveVillages(CODE["前線基地"]); }, true);
tMenu.snapshotItem(0).appendChild(fortLink);
function addReserveVillages(kind) {
var strKind;
if(kind == CODE["補給基地"]){
strKind = "補給基地";
} else
if(kind == CODE["前線基地"]){
strKind = "前線基地";
} else {
return;
}
var url_param = decodeUrlParams();
var xy = url_param.x+ "," +url_param.y;
// すでにリストにあるかどうかを確認
var villages = loadVillages();
var cExist = " ";
for(var i=0; i<villages.length; i++) {
if(villages[i][IDX_XY] == xy) {
cExist = villages[i][IDX_RESERVE];
break;
}
}
var msg;
if( cExist == " " ) {
// 予約情報を保存
var aryNewVillage = new Array();
aryNewVillage[IDX_XY] = xy;
aryNewVillage[IDX_BASE_NAME] = "予定地" + "(" +xy+ ")"; // strKind + "(" +xy+ ")";
aryNewVillage[IDX_URL] = location;
aryNewVillage[IDX_BASE_ID] = 0; // getParameter2(url, "village_id");
if(kind == CODE["補給基地"]) {
aryNewVillage[IDX_RESERVE] = RESERVE_SUPPLYBASE1;
} else {
aryNewVillage[IDX_RESERVE] = RESERVE_FRONTBASE1;
}
aryNewVillage[IDX_ACTIONS] = new Array();
aryNewVillage[IDX_ACTIONS][0] = new Array();
aryNewVillage[IDX_ACTIONS][0][IDX2_STATUS] = strKind + "建設予約";
aryNewVillage[IDX_ACTIONS][0][IDX2_TIME] = generateDateString(computeTime("00:00:00"));
aryNewVillage[IDX_ACTIONS][0][IDX2_TYPE] = TYPE_RESERVE;
aryNewVillage[IDX_ACTIONS][0][IDX2_DELETE] = false;
aryNewVillage[IDX_ACTIONS][0][IDX2_ROTATION] = 0;
villages.push(aryNewVillage);
saveVillages(villages);
msg = "(" +xy+ ")への、" + strKind + "建設予約を受け付けました。"
} else
if( cExist == "" || cExist == "D" ) {
msg = "(" +xy + ")には、すでに都市があります。";
} else {
msg = "(" +xy+ ")には、すでに建設予約があります。";
}
// 建設予約後に、常駐モードにかかわらずメインウインドウを表示
redrawInfoWindow(true);
setIndicatorReady();
alert(msg);
// 情報を確認した後、リロード
location.reload();
}
}
// ===========================================================================================================
//Beyond系save, load関数
function csaveData(key, value, local, ev)
{
if( local ) key = HOST+PGNAME+ key;
if( ev ) {
if(window.opera || typeof JSON != 'object') {
value = toJSON(value);
} else {
value = JSON.stringify( value );
}
}
GM_setValue(key, value );
}
function cloadData(key, value, local, ev)
{
if( local ) { key = HOST+PGNAME+ key; }
var ret = GM_getValue(key, value);
return ev ? eval('ret='+ret) : ret;
}
// ===========================================================================================================
// ページキャッシュ関数群:
function clearCache() {
var log = cloadData("CacheLog", "[]", true, true );
var clear = new Array();
for(var i=0;i<log.length;i++) {
csaveData("CachePage" + log[i], clear, true, true );
}
csaveData("CacheLog", clear, true, true );
}
function addCacheLog(key) {
var log = cloadData("CacheLog", "[]", true, true );
for(var i=0;i<log.length;i++) {
if(log[i] == key) return;
}
log[log.length] = key;
csaveData("CacheLog", log, true, true );
}
function storePage(key, htmldoc) {
var pack = new Array;
pack[0] = new Date();
pack[1] = htmldoc.innerHTML;
addCacheLog(key);
csaveData("CachePage" + key, pack, true, true );
}
function getPage(key, validtime) {
var pack = cloadData("CachePage" + key, "[]", true, true );
if(pack[0] == "") { return null; }
if(pack[1] == "") { return null; }
// 有効期限を過ぎていたら破棄
var nowTime = new Date();
var loadedTime = new Date(pack[0]);
if((nowTime - loadedTime) > validtime) {
return null;
}
var htmldoc = document.createElement("html");
htmldoc.innerHTML = pack[1];
return htmldoc;
}
// ===========================================================================================================
function getHtmlFacility(htmldoc, url_x, url_y) {
var xyDoc = getXY(htmldoc);
// 拠点の場合
if( url_x == 3 && url_y == 3 ) {
g_pageCastle = htmldoc;
parseHtmlCastle(htmldoc);
return;
}
if( !g_pageVillage ) {
g_pageVillage = getPage("Village" + xyDoc, PAGE_CACHE_TIME2);
if( !g_pageVillage ) {
// 拠点ページを読み込んでいないと施設の判定が出来ない為、何もしない
return;
}
}
var area = get_area(g_pageVillage);
var _lv = -1;
var _xy = url_x + "," + url_y;
for(var i=0;i<area.length;i++){
if(area[i].xy == _xy) {
_lv = area[i].lv;
if(area[i].name == "技術研究所") {
g_pageTechLabo = htmldoc;
return;
} else
if(area[i].name == "武装研究所") {
g_pageWeaponLabo = htmldoc;
return;
} else
if(area[i].name == "装甲研究所") {
g_pageArmorLabo = htmldoc;
return;
} else
if(area[i].name == "歩兵学校") {
getTrainingSoldier(htmldoc);
g_pageSoldierSchool = htmldoc;
return;
}
if(area[i].name == "陸軍士官学校") {
getTrainingSoldier(htmldoc);
g_pageArmySchool = htmldoc;
return;
}
if(area[i].name == "海軍兵学校") {
getTrainingSoldier(htmldoc);
g_pageNavySchool = htmldoc;
return;
}
if(area[i].name == "空軍士官学校") {
getTrainingSoldier(htmldoc);
g_pageAirforceSchool = htmldoc;
return;
}
if(area[i].name == "工兵学校") {
getTrainingSoldier(htmldoc);
g_pageEngineerSchool = htmldoc;
return;
}
break;
}
}
if( _lv<0 ) {
// 解析・保存する施設がない
}
}
// ===========================================================================================================
// ページ解析フェイズ関数群:現ページ・htmlリクエスト問わず得られたページから情報収集
//ユーザプロフィール画面の拠点情報を取得
function parseHtmlUser(htmldoc) {
var oldVillages = loadVillages();
var newVillages = new Array();
var landElems = document.evaluate('//*[@id="gray02Wrapper"]//table/tbody/tr', htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var isLandList = false;
for(var i=0; i<landElems.snapshotLength; i++) {
var item = landElems.snapshotItem(i);
if(!isLandList) {
// 2012.01.11 新プロフィール画面対応
var childElement = getChildElement(item, 0);
if(childElement && trim(childElement.innerHTML) === "名前") {
// if(trim(getChildElement(item, 0).innerHTML) == "名前")
isLandList = true;
}
continue;
}
//名前項目を取得
var nameElem = getChildElement(getChildElement(item, 0), 0);
var name = trim(nameElem.innerHTML);
var url = nameElem.href;
//座標項目を取得
// var xy = "(" + getChildElement(item, 1).innerHTML.match(/-?[0-9]+\,-?[0-9]+/i) + ")";
var xy = getChildElement(item, 1).innerHTML.match(/-?[0-9]+\,-?[0-9]+/i);
//人口項目を取得
var popul = getChildElement(item, 2).innerHTML;
//拠点じゃなければ終了
if(!isNumeric(popul)) break;
//データマージ
var newVil = new Array();
newVil[IDX_ACTIONS] = new Array();
for(var j = 0; j < oldVillages.length; j++) {
if(xy == oldVillages[j][IDX_XY]) {
newVil = oldVillages[j];
}
}
newVil[IDX_XY] = xy;
newVil[IDX_BASE_NAME] = name;
newVil[IDX_URL] = url;
newVil[IDX_BASE_ID] = getParameter2(url, "village_id")
newVil[IDX_RESERVE] = RESERVE_NONE;
newVillages.push(newVil);
}
// 予約情報を引き継ぎ
for(var i=0; i<oldVillages.length; i++) {
if( oldVillages[i][IDX_RESERVE] == RESERVE_NONE ) continue;
var flgExist = false;
for(var j=0; j<newVillages.length; j++) {
if( oldVillages[i][IDX_XY] == newVillages[j][IDX_XY] ){ flgExist = true; }
}
var newVil = oldVillages[i];
if( !flgExist ) {
newVillages.push(newVil);
}
}
//保存
saveVillages(newVillages);
}
//領地画面なら拠点建設データ取得
function parseHtmlLand(htmldoc) {
// var $x = function(xp,dc) { return document.evaluate(xp, dc||document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; };
//領地の座標を取得
var elmXY = $x('//*[@id="basepoint"]/span[@class="xy"]', htmldoc);
var xyLand = elmXY.innerHTML.match(/(-?\d+,-?\d+)/);
// var Temp = xyLand[0].split(",");
// var x = Temp[0];
// var y = Temp[1];
var rmname = $x('id("tMenu")', htmldoc).innerHTML.match(/(現在補給基地を建設中です|現在前線基地を建設中です)/ );
if( rmname ) {
// var rmtime = $x('id("tMenu")', htmldoc).innerHTML.match(/(\d+-\d+-\d+ \d+:\d+:\d+)*に完了します。/ );
var rmtime = $x('//*[@id="area_timer0"]', htmldoc).innerHTML.match(/(\d+:\d+:\d+)/ );
if( rmname[1] == "現在補給基地を建設中です" ) {
addList(rmtime[1], CODE["補給基地"], 2, xyLand[0] );
}else if( rmname[1] == "現在前線基地を建設中です" ) {
addList(rmtime[1], CODE["前線基地"], 2, xyLand[0] );
}
}
checkDeleted(xyLand[0]);
return;
function addList(tim, kind, status, xy)
{
var strKind;
if(kind == CODE["補給基地"]){
strKind = "補給基地";
} else
if(kind == CODE["前線基地"]){
strKind = "前線基地";
} else {
return;
}
var villages = loadVillages();
var cExist = " ";
var nExist = -1;
for(var i=0; i<villages.length; i++) {
if(villages[i][IDX_XY] == xy) {
nExist = i;
cExist = villages[i][IDX_RESERVE];
break;
}
}
// 建設中情報
var aryNewVillage = new Array();
aryNewVillage[IDX_XY] = xy;
aryNewVillage[IDX_BASE_NAME] = "予定地" + "(" +xy+ ")"; // strKind+ "(" +xy+ ")";
aryNewVillage[IDX_URL] = location;
aryNewVillage[IDX_BASE_ID] = 0; // getParameter2(url, "village_id");
if(kind == CODE["補給基地"]) {
aryNewVillage[IDX_RESERVE] = RESERVE_SUPPLYBASE2;
} else {
aryNewVillage[IDX_RESERVE] = RESERVE_FRONTBASE2;
}
aryNewVillage[IDX_ACTIONS] = new Array();
aryNewVillage[IDX_ACTIONS][0] = new Array();
aryNewVillage[IDX_ACTIONS][0][IDX2_STATUS] = strKind + "建設";
aryNewVillage[IDX_ACTIONS][0][IDX2_TIME] = generateDateString(computeTime(tim));
aryNewVillage[IDX_ACTIONS][0][IDX2_TYPE] = TYPE_BASEBUILD;
aryNewVillage[IDX_ACTIONS][0][IDX2_DELETE] = false;
aryNewVillage[IDX_ACTIONS][0][IDX2_ROTATION] = 0;
if( cExist == " " ) {
// 情報ログに存在しないので新規追加
villages.push(aryNewVillage);
saveVillages(villages);
} else {
// 建設情報を付与
if(kind == CODE["補給基地"]) {
villages[nExist][IDX_RESERVE] = RESERVE_SUPPLYBASE2;
} else {
villages[nExist][IDX_RESERVE] = RESERVE_FRONTBASE2;
}
saveVillages(villages);
saveVillage(aryNewVillage, TYPE_BASEBUILD);
}
}
function checkDeleted(xy) {
var villages = loadVillages();
var cExist = " ";
var nExist = -1;
for(var i=0; i<villages.length; i++) {
if(villages[i][IDX_XY] == xy) {
nExist = i;
cExist = villages[i][IDX_RESERVE];
break;
}
}
if( cExist == RESERVE_DELETING ) {
// 削除中→削除済み
villages[nExist][IDX_RESERVE] = RESERVE_DELETED;
saveVillages(villages);
}
}
}
//総司令部or基地画面なら拠点削除データ取得
function parseHtmlCastle(htmldoc) {
var xyDoc = getXY(htmldoc);
var Temp = xyDoc.split(",");
var x = Temp[0];
var y = Temp[1];
// var rmtime = htmldoc.innerHTML.match(/(補給基地を削除中です。|前線基地を削除中です。)[^\d]*(\d+-\d+-\d+ \d+:\d+:\d+)に完了します。/);
var rmname = $x('//*[@class="commonTables"]', htmldoc).innerHTML.match(/(補給基地を削除中です。|前線基地を削除中です。)/ );
if( rmname ) {
var rmtime = $x('//*[@id="area_timer0"]', htmldoc).innerHTML.match(/(\d+:\d+:\d+)/ );
if( rmname[1] == "補給基地を削除中です。" ) {
addList(rmtime[1], CODE["補給基地"], 4, xyDoc );
}else if( rmname[1] == "前線基地を削除中です。" ) {
addList(rmtime[1], CODE["前線基地"], 4, xyDoc );
}
}else{
delList(1, xyDoc);
}
function addList(tim, kind, status, xy)
{
var strKind;
if(kind == CODE["補給基地"]){
strKind = "補給基地";
} else
if(kind == CODE["前線基地"]){
strKind = "前線基地";
} else {
return;
}
var villages = loadVillages();
var cExist = " ";
var nExist = -1;
for(var i=0; i<villages.length; i++) {
if(villages[i][IDX_XY] == xy) {
nExist = i;
cExist = villages[i][IDX_RESERVE];
break;
}
}
if( cExist == " " ) {
// 情報ログに存在しない、ので何もしない
return;
} else
if( cExist == RESERVE_DELETING ) {
// すでに削除情報がある
return;
} else {
// 削除情報を付与
villages[nExist][IDX_RESERVE] = RESERVE_DELETING;
var nNextAction = villages[nExist][IDX_ACTIONS].length;
villages[nExist][IDX_ACTIONS][nNextAction] = new Array();
villages[nExist][IDX_ACTIONS][nNextAction][IDX2_STATUS] = strKind + "削除";
villages[nExist][IDX_ACTIONS][nNextAction][IDX2_TIME] = generateDateString(computeTime(tim));
villages[nExist][IDX_ACTIONS][nNextAction][IDX2_TYPE] = TYPE_SCRAP;
villages[nExist][IDX_ACTIONS][nNextAction][IDX2_DELETE] = true;
villages[nExist][IDX_ACTIONS][nNextAction][IDX2_ROTATION] = 0;
saveVillages(villages);
}
}
function delList(kind, xy) //kind=0:land 1:castle
{
var villages = loadVillages();
var cExist = " ";
var nExist = -1;
for(var i=0; i<villages.length; i++) {
if(villages[i][IDX_XY] == xy) {
nExist = i;
cExist = villages[i][IDX_RESERVE];
break;
}
}
if( cExist == " " ) {
// 情報ログに存在しない、ので何もしない
return;
} else
if((cExist == RESERVE_DELETING) || ( cExist == RESERVE_DELETD )) {
// 削除情報を削除
villages[nExist][IDX_RESERVE] = RESERVE_NONE;
var aryNewAction = new Array();
for(var i=0;i<villages[nExist][IDX_ACTIONS].length;i++) {
if(villages[nExist][IDX_ACTIONS][i][IDX2_TYPE] == TYPE_SCRAP) {
if(!villages[nExist][IDX_ACTIONS][i][IDX2_DELETE]) {
continue;
}
}
aryNewAction.push(villages[nExist][IDX_ACTIONS][i]);
}
villages[nExist][IDX_ACTIONS] = aryNewAction;
saveVillages(villages);
} else {
return;
}
}
}
function parseHtmlVillageTradeCenter(htmldoc) {
debugLog("=== Start parseHtmlVillageTradeCenter ===");
var xyVillage = getXY(htmldoc);
var xTrade = -1; //貿易センターのX座標
var yTrade = -1; //貿易センターのY座標
var lvTrade = -1; //貿易センターのレベル
var area = get_area(htmldoc);
for(i=0;i<area.length;i++){
//貿易センターの座標を取得
if(area[i].name == "貿易センター") {
var Temp = area[i].xy.split(",");
xTrade = Temp[0];
yTrade = Temp[1];
lvTrade = area[i].lv;
}
}
if(lvTrade < 0) {
delTradeCenterList(xyVillage);
} else {
// 貿易センターがある拠点ID・座標・レベルを保管
addTradeCenterList(xyVillage, lvTrade, xTrade, yTrade);
}
function addTradeCenterList(xyVillage,lv,x,y) {
var flgExist = 0;
var TradeCenterList = cloadData("TradeCenterList","[]",true,true);
for(var i=0 ; i<TradeCenterList.length ; i++) {
if(TradeCenterList[i].xyVillage == xyVillage) {
TradeCenterList[i].xyVillage = xyVillage;
TradeCenterList[i].lv = lv;
TradeCenterList[i].x = x;
TradeCenterList[i].y = y;
flgExist = 1;
}
}
if(flgExist == 0){
TradeCenterList.push({"xyVillage":xyVillage, "lv":lv, "x":x, "y":y });
}
csaveData("TradeCenterList",TradeCenterList,true,true);
}
function delTradeCenterList(xyVillage) {
var TradeCenterList = cloadData("TradeCenterList","[]",true,true);
for(var i=0;i<TradeCenterList.length;i++){
if(TradeCenterList[i].xyVillage == xyVillage) {
TradeCenterList.splice(i,1);
csaveData("TradeCenterList",TradeCenterList,true,true);
}
}
}
}
//拠点画面から内政スキル取得
function parseHtmlVillageDomestic(htmldoc) {
var data = getMyVillage();
data[IDX_ACTIONS] = new Array();
var i = -1;
// 使用中
var useSkill = document.evaluate('//div[@class="base-skill"]/span/a', htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(useSkill) {
if(!useSkill.snapshotItem(0).innerHTML.match("--:--:--")) {
// console.log(useSkill.snapshotItem(0).innerHTML);
i += 1;
data[IDX_ACTIONS][i] = new Array();
var SkillName = useSkill.snapshotItem(0).innerHTML.split(":")[1].split("(")[0];
var status = "内政:使用(" + trim(useSkill.snapshotItem(0).innerHTML.split(":")[0]) + ":" + SkillName + ")";
data[IDX_ACTIONS][i][IDX2_STATUS] = status;
data[IDX_ACTIONS][i][IDX2_TIME] = generateDateString(computeTime(useSkill.snapshotItem(0).innerHTML.split(">")[1].substr(0,8)));
data[IDX_ACTIONS][i][IDX2_TYPE] = TYPE_DOMESTIC;
data[IDX_ACTIONS][i][IDX2_DELETE] = false;
data[IDX_ACTIONS][i][IDX2_ROTATION] = 0;
}
}
saveVillage(data, TYPE_DOMESTIC);
}
function isUseDomesticSkill(htmldoc) {
var i = -1;
// 使用中
var useSkill = document.evaluate('//div[@class="base-skill"]/span/a', htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(useSkill) {
if(!useSkill.snapshotItem(0).innerHTML.match("--:--:--")) {
debugLog("isUseDomesticSkill true");
return true;
}
}
debugLog("isUseDomesticSkill false");
return false;
}
function parseHtmlDomestic(htmldoc) {
var data = getMyVillage();
data[IDX_ACTIONS] = new Array();
var i = -1;
// 回復中
var dom = document.createElement("html");
var RecoveryCheck = document.evaluate('//table[@class="general"]', htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for(var z=0;z<RecoveryCheck.snapshotLength;z++){
if(RecoveryCheck.snapshotItem(z).innerHTML.match("内政中")) {
dom.innerHTML = "<table>" + RecoveryCheck.snapshotItem(z).innerHTML + "</table>";
// 内政ユニット名
var Name = document.evaluate('//td/a[@class="thickbox"]', dom, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(1).innerHTML;
var RecoverySkill = document.evaluate('//td[@class="recovery"]', dom, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for(var x=0;x<RecoverySkill.snapshotLength;x++) {
i += 1;
data[IDX_ACTIONS][i] = new Array();
var SkillName = RecoverySkill.snapshotItem(x).innerHTML.split("<")[0]; // スキル名
var SkillRTime = RecoverySkill.snapshotItem(x).innerHTML.split('>')[2].substr(0,8); // 回復時間
var status = "回復";
status = "内政:" + status + "(" + trim(Name) + ":" + SkillName + ")";
data[IDX_ACTIONS][i][IDX2_STATUS] = status;
data[IDX_ACTIONS][i][IDX2_TIME] = generateDateString(computeTime(SkillRTime));
data[IDX_ACTIONS][i][IDX2_TYPE] = TYPE_RECOVER;
data[IDX_ACTIONS][i][IDX2_DELETE] = false;
data[IDX_ACTIONS][i][IDX2_ROTATION] = 0;
}
}
}
saveVillage(data, TYPE_RECOVER);
}
//拠点画面なら
function parseHtmlVillage(htmldoc) {
var xyVillage = getXY(htmldoc);
LoadOptBuild(xyVillage);
LoadOptDomestic(xyVillage);
LoadOptCommon();
// 内政スキル情報を取得
var nText = document.evaluate('//*[@class="base-skill"]/span/a', htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(nText) {
var nName = nText.snapshotItem(0).innerHTML.split(":");
if(nName[0].length != 12) {
// 内政ユニットがセットされている場合
// alert("内政ユニットは " + nName[0].trim() + " です");
} else {
// 内政ユニットがセットされていない場合
var data = getMyVillage();
data[IDX_ACTIONS] = new Array();
saveVillage(data, TYPE_DOMESTIC);
}
}
}
//拠点の作業中情報を取得
function parseHtmlVillageActions(htmldoc) {
var data = new Array();
//拠点名を取得
var baseNameElem = document.evaluate('//*[@id="basepoint"]/span[@class="basename"]', htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
data[IDX_BASE_NAME] = trim(baseNameElem.snapshotItem(0).innerHTML);
//座標を取得
data[IDX_XY] = getXY();
//建設情報を取得
var actionsElem = document.evaluate('//*[@id="actionLog"]/ul/li', htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var actions1 = new Array();
for(var i = 0; i < actionsElem.snapshotLength; i++) {
var paItem = actionsElem.snapshotItem(i);
var newAction = new Array();
//ステータス
var buildStatusElem = document.evaluate('./span[@class="buildStatus"]/a', paItem, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var buildStatus;
if(buildStatusElem.snapshotLength > 0) {
//施設建設
var buildstr = trim(document.evaluate('./span[@class="buildStatus"]', paItem, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).innerHTML).substr(0,2);
if(buildstr == "建設") {
newAction[IDX2_DELETE] = false;
buildStatus = "建設:" + trim(buildStatusElem.snapshotItem(0).innerHTML);
} else {
newAction[IDX2_DELETE] = true;
buildStatus = "削除:" + trim(buildStatusElem.snapshotItem(0).innerHTML);
}
} else {
/*
buildStatusElem = document.evaluate('./span[@class="buildStatus"]', paItem, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(buildStatusElem.snapshotItem(0).innerHTML.match(/強化/)) {
continue;
}
var tempStr1 = buildStatusElem.snapshotItem(0).innerHTML.split("を");
buildStatus = "技術研究所:" + tempStr1[0];
newAction[IDX2_DELETE] = false;
*/
continue;
}
newAction[IDX2_ROTATION] = 0;
newAction[IDX2_TYPE] = TYPE_CONSTRUCTION;
newAction[IDX2_STATUS] = buildStatus;
//施設建設完了時刻
var buildClockElem = document.evaluate('./span[@class="buildClock"]', paItem, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var clock = buildClockElem.snapshotItem(0).innerHTML;
newAction[IDX2_TIME] = generateDateString(computeTime(clock));
// console.log(generateDateString(computeTime(clock)));
actions1.push(newAction);
}
//建設情報を永続保存
data[IDX_ACTIONS] = actions1;
saveVillage(data, TYPE_CONSTRUCTION);
//出撃情報を取得
var actionsElem = document.evaluate('//*[@id="action"]/div[@class="floatInner"]/ul/li', htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var actions2 = new Array();
for(var i = 0; i < actionsElem.snapshotLength; i++) {
var paItem = actionsElem.snapshotItem(i);
var newAction = new Array();
newAction[IDX2_TYPE] = TYPE_MARCH;
newAction[IDX2_DELETE] = false;
newAction[IDX2_ROTATION] = 0;
//ステータス
var statusElem = document.evaluate('./a', paItem, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var status = trim(statusElem.snapshotItem(0).innerHTML);
newAction[IDX2_STATUS] = "出撃:" + status;
//完了時刻
var buildClockElem = document.evaluate('./span', paItem, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var clock = buildClockElem.snapshotItem(0).innerHTML;
newAction[IDX2_TIME] = generateDateString(computeTime(clock));
actions2.push(newAction);
}
//出撃情報を永続保存
data[IDX_ACTIONS] = actions2;
saveVillage(data, TYPE_MARCH);
}
// ===========================================================================================================
// 実行フェイズ関数群
//内政スキルの使用
function actDomesticSkill1() {
debugLog("=== Start actDomesticSkill ===");
if( !g_pageDomestic ) {
debugLog("=== act not loaded Domestic ===");
abort_next();
return; // 処理中止
}
// オプションを読み込み
var xyVillage = getXY();
LoadOptBuild(xyVillage);
LoadOptDomestic(xyVillage);
// LoadOptCommon();
var skillElem = document.evaluate('//td[@class="skill"]',g_pageDomestic, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for(i=0;i<skillElem.snapshotLength;i++){
var skillTag = trim(skillElem.snapshotItem(i).innerHTML);
debugLog("=== actDomesticSkill skill=" +skillTag+ " ===");
for(z=1;z<DASkill.length;z++){
debugLog("=== actDomesticSkill skill=" +DASkill[z]+ ":" + OPT_DOME_SKILL[z]+ " ===");
if( (OPT_DOME_SKILL[z]==1) && ( (skillTag.indexOf(DASkill[z],0) > 1)) ){
var link = skillTag.substring(skillTag.indexOf("href=",0)+6,skillTag.indexOf("\"",skillTag.indexOf("href=",0)+7));
do {
link = link.replace(/&amp;/,"&");
}while(link.indexOf("&amp;",0) > 1);
j$.get("http://" + HOST + link,function(x){
debugLog("内政スキル使用");
act();
});
return;
}
}
}
debugLog("内政スキル未使用");
act();
}
// var dom = document.createElement("html");
// var RecoveryCheck = document.evaluate('//table[@class="general"]', htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
// for(var z=0;z<RecoveryCheck.snapshotLength;z++){
// if(RecoveryCheck.snapshotItem(z).innerHTML.match("内政中")) {
// dom.innerHTML = "<table>" + RecoveryCheck.snapshotItem(z).innerHTML + "</table>";
// // 内政ユニット名
// var Name = document.evaluate('//td/a[@class="thickbox"]', dom, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(1).innerHTML;
// var RecoverySkill = document.evaluate('//td[@class="recovery"]', dom, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
// for(var x=0;x<RecoverySkill.snapshotLength;x++) {
// i += 1;
// data[IDX_ACTIONS][i] = new Array();
// var SkillName = RecoverySkill.snapshotItem(x).innerHTML.split("<")[0]; // スキル名
// var SkillRTime = RecoverySkill.snapshotItem(x).innerHTML.split('>')[2].substr(0,8); // 回復時間
// var status = "回復";
// status = "内政:" + status + "(" + trim(Name) + ":" + SkillName + ")";
// data[IDX_ACTIONS][i][IDX2_STATUS] = status;
// data[IDX_ACTIONS][i][IDX2_TIME] = generateDateString(computeTime(SkillRTime));
// data[IDX_ACTIONS][i][IDX2_TYPE] = TYPE_DOMESTIC;
// data[IDX_ACTIONS][i][IDX2_DELETE] = false;
// data[IDX_ACTIONS][i][IDX2_ROTATION] = 0;
// }
// }
// }
//内政スキルの使用
function actDomesticSkill() {
debugLog("=== Start actDomesticSkill2 ===");
if( !g_pageVillage ) {
debugLog("=== act not loaded Village ===");
abort_next();
return; // 処理中止
}
if( !g_pageDomestic ) {
debugLog("=== act not loaded Domestic ===");
abort_next();
return; // 処理中止
}
// オプションを読み込み
var xyVillage = getXY();
// LoadOptBuild(xyVillage);
LoadOptDomestic(xyVillage);
// LoadOptCommon();
// var general = $x('//*[@class="commonTables"]//*[@class="general"]', g_pageDomestic);
// if(general.snapshotLength >0)
// var general = document.evaluate('//table[@class="general"]', g_pageDomestic, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
// for(var n=0;n<general.snapshotLength;n++)
// var aryGeneral = $a('//table[@class="general"]', g_pageDomestic);
// var aryGeneral = $a('//*[@class="commonTables"]//*[@class="general"]', g_pageDomestic);
var aryGeneral = $a('//*[@class="general"]', g_pageDomestic);
// var aryGeneral = $a('//*[@class="mainTtl"]', g_pageDomestic);
debugLog("=== 内政状況チェック general:" +aryGeneral.length );
for(var n=0;n<aryGeneral.length;n++) {
if(aryGeneral[n].innerHTML.match("内政中")) {
debugLog("=== 内政状況チェック stat 内政ユニットが存在");
var skill = $x('//*[@class="skill"]', aryGeneral[n]);
if(skill) {
debugLog("=== 内政状況チェック skill exist");
var textSkill = skill.innerHTML;
if(textSkill.match("使用中")) {
debugLog("=== 内政状況チェック skill using");
}
if(textSkill.match("使用する")) {
debugLog("=== 内政状況チェック skill unuse");
}
if(textSkill.match("回復中")) {
debugLog("=== 内政状況チェック skill used");
}
}
// debugLog(aryGeneral[n].innerHTML);
if(aryGeneral[n].innerHTML.match("使用中")) {
debugLog("=== 内政状況チェック tr0 スキル使用中");
continue;
}
var elmGeneral = document.createElement("html");
elmGeneral.innerHTML = "<table>" + aryGeneral[n].innerHTML + "</table>";
var aryTr = $a('//tr', elmGeneral);
debugLog("=== 内政状況チェック tr:" +aryTr.length );
// debugLog(aryTr[0].innerHTML);
// debugLog(aryTr[1].innerHTML);
var elmTr = document.createElement("html");
elmTr.innerHTML = "<table>" + aryTr[1].innerHTML + "</table>";
var aryTd = $a('//td', aryTr[1]);
debugLog("=== 内政状況チェック td:" +aryTd.length );
debugLog(aryTd[0].innerHTML);
// var skill = document.evaluate('//*[@class="skill"]',general.snapshotItem(n), null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
// for(var i=4; i<aryTd.length;i++) {
// if(skill.snapshotItem(i).innerHTML.match("使用中")) {
// skillFlag = true;
// }
// }
// if(!skillFlag) {
// debugLog("=== 内政状況チェック スキル使用中");
// continue;
// }
for(var i=4; i<aryTd.length;i++) {
var strSkillTag = trim(aryTd[i].innerHTML);
debugLog("=== 内政状況チェック td " +i+ ":" +strSkillTag );
for(var z=1;z<DASkill.length;z++) {
if( (OPT_DOME_SKILL[z]==1) && ( (strSkillTag.indexOf(DASkill[z],0) > 1)) ) {
var strLink = strSkillTag.substring(strSkillTag.indexOf("href=",0)+6,strSkillTag.indexOf("\"",strSkillTag.indexOf("href=",0)+7));
do {
strLink = strLink.replace(/&amp;/,"&");
}while(strLink.indexOf("&amp;",0) > 1);
debugLog("=== 内政状況チェック link" +strLink );
var tid=unsafeWindow.setTimeout(function() {
j$.get("http://"+HOST+strLink,function(x){
var tid2=unsafeWindow.setTimeout(function(){
// POST後、拠点ページと内政設定ページをリクエスト
j$.get("http://"+HOST+"/village.php",function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
g_pageVillage = htmldoc;
parseHtmlVillage(g_pageVillage);
parseHtmlVillageActions(g_pageVillage);
parseHtmlVillageDomestic(g_pageVillage);
parseHtmlVillageTradeCenter(g_pageVillage);
var tid3=unsafeWindow.setTimeout(function(){
j$.get("http://"+HOST+"/card/domestic_setting.php",function(x){
var htmldoc2 = document.createElement("html");
htmldoc2.innerHTML = x;
g_pageDomestic = htmldoc2;
parseHtmlDomestic(g_pageDomestic);
act();
});
}, INTERVAL);
});
}, INTERVAL);
});
}, INTERVAL);
return;
}
}
// if(OPT_ROTATE_DOMESTIC) {
// // スキル使用中ではなく、使用するスキルがないか、あるいは、使用済み(回復中)のみの場合
// debugLog("=== 内政状況チェック → 次ユニットへ(予定)");
// RotateDomestic();
// }
}
} else {
debugLog("=== 内政状況チェック stat 内政ユニット不在");
}
}
debugLog("内政スキル未使用");
act();
}
// 自動資源変換
function actConvertResource() {
debugLog("=== Start actConvertResource ===");
var xyVillage = getXY();
if( !g_pageVillage ) {
debugLog("=== act not loaded Village ===");
abort_next();
return; // 処理中止
}
if(OPT_CONV_TRADE_CENTER == "") {
// 自動資源変換しない
act();
return;
}
// 現在の資源量
var nResourceIron = parseInt( $("wood").innerHTML, 10 );
var nResourceOil = parseInt( $("stone").innerHTML, 10 );
var nResourceAlumi = parseInt( $("iron").innerHTML, 10 );
var nResourceFood = parseInt( $("rice").innerHTML, 10 );
var nStorageMax = parseInt( $("rice_max").innerHTML, 10 ); // 備蓄容量
var codeExport;
var codeImport;
// 輸出制限をチェック
var flgLimit = false;
if(OPT_CONV_EXPORT_RESOURSE == "鉄") {
codeExport = CODE["鉄"];
if((OPT_CONV_EXPORT_MODE == "輸出制限つき") && (OPT_CONV_EXPORT_LIMIT > nResourceIron)) {
flgLimit = true;
}
} else
if(OPT_CONV_EXPORT_RESOURSE == "石油") {
codeExport = CODE["石油"];
if((OPT_CONV_EXPORT_MODE == "輸出制限つき") && (OPT_CONV_EXPORT_LIMIT > nResourceOil)) {
flgLimit = true;
}
} else
if(OPT_CONV_EXPORT_RESOURSE == "アルミ") {
codeExport = CODE["アルミ"];
if((OPT_CONV_EXPORT_MODE == "輸出制限つき") && (OPT_CONV_EXPORT_LIMIT > nResourceAlumi)) {
flgLimit = true;
}
} else
if(OPT_CONV_EXPORT_RESOURSE == "食料") {
codeExport = CODE["食料"];
if((OPT_CONV_EXPORT_MODE == "輸出制限つき") && (OPT_CONV_EXPORT_LIMIT > nResourceFood)) {
flgLimit = true;
}
} else {
// エラー対策
flgLimit = true;
}
if(flgLimit) {
// 輸出制限
debugLog("=== Export Limit ===");
act();
return;
}
// 輸入制限をチェック、総備蓄量の95%を超える場合も輸入しない
var flgLimitIron = false;
var flgLimitOil = false;
var flgLimitAlumi = false;
var flgLimitFood = false;
if((OPT_CONV_EXPORT_RESOURSE == "鉄") || (OPT_CONV_INPORT_MODE_IRON == "輸入しない")) {
flgLimitIron = true;
} else
if(OPT_CONV_INPORT_MODE_IRON == "輸入制限つき") {
if(OPT_CONV_INPORT_LIMIT_IRON < nResourceIron) {
flgLimitIron = true;
}
} else {
if(nStorageMax * 0.95 < nResourceIron) {
flgLimitIron = true;
}
}
if((OPT_CONV_EXPORT_RESOURSE == "石油") || (OPT_CONV_INPORT_MODE_OIL == "輸入しない")) {
flgLimitOil = true;
} else
if(OPT_CONV_INPORT_MODE_OIL == "輸入制限つき") {
if(OPT_CONV_INPORT_LIMIT_OIL < nResourceOil) {
flgLimitOil = true;
}
} else {
if(nStorageMax * 0.95 < nResourceOil) {
flgLimitIron = true;
}
}
if((OPT_CONV_EXPORT_RESOURSE == "アルミ") || (OPT_CONV_INPORT_MODE_ALUMI == "輸入しない")) {
flgLimitAlumi = true;
} else
if(OPT_CONV_INPORT_MODE_ALUMI == "輸入制限つき") {
if(OPT_CONV_INPORT_LIMIT_ALUMI < nResourceAlumi) {
flgLimitAlumi = true;
}
} else {
if(nStorageMax * 0.95 < nResourceAlumi) {
flgLimitIron = true;
}
}
if((OPT_CONV_EXPORT_RESOURSE == "食料") || (OPT_CONV_INPORT_MODE_FOOD == "輸入しない")) {
flgLimitFood = true;
} else
if(OPT_CONV_INPORT_MODE_FOOD == "輸入制限つき") {
if(OPT_CONV_INPORT_LIMIT_FOOD < nResourceFood) {
flgLimitFood = true;
}
} else {
if(nStorageMax * 0.95 < nResourceFood) {
flgLimitIron = true;
}
}
// もっとも少ない資源を輸入資源として決定
var modeImport = "";
var nImportResource = -1;
if(!flgLimitIron) {
modeImport = "鉄";
codeImport = CODE["鉄"];
nImportResource = nResourceIron;
}
if(!flgLimitOil) {
if(nImportResource > nResourceOil) {
modeImport = "石油";
codeImport = CODE["石油"];
nImportResource = nResourceOil;
}
}
if(!flgLimitAlumi) {
if(nImportResource > nResourceAlumi) {
modeImport = "アルミ";
codeImport = CODE["アルミ"];
nImportResource = nResourceAlumi;
}
}
if(!flgLimitFood) {
if(nImportResource > nResourceFood) {
modeImport = "食料";
codeImport = CODE["食料"];
nImportResource = nResourceFood;
}
}
if(modeImport == "") {
// 輸入なし
debugLog("=== Import Limit ===");
act();
return;
}
// 取引量と寄付量を決定
var nProduct;
var nExportResource;
var aryProduct = getProduct(document);
if(OPT_CONV_EXPORT_RESOURSE == "鉄") {
nProduct = aryProduct[0] + aryProduct[1];
nExportResource = nResourceIron;
} else
if(OPT_CONV_EXPORT_RESOURSE == "石油") {
nProduct = aryProduct[2] + aryProduct[3];
nExportResource = nResourceOil;
} else
if(OPT_CONV_EXPORT_RESOURSE == "アルミ") {
nProduct = aryProduct[4] + aryProduct[5];
nExportResource = nResourceAlumi;
} else
if(OPT_CONV_EXPORT_RESOURSE == "食料") {
nProduct = aryProduct[6] + aryProduct[7];
nExportResource = nResourceFood;
}
if((OPT_CONV_EXPORT_MODE == "資源を平均化") && (nExportResource < nImportResource)) {
// 輸入なし
debugLog("=== Export Resource < Import Resource ===");
act();
return;
}
// 毎時産出量から実量を計算、100単位に切り上げ
var fTradeUnit = Math.floor((nProduct * OPT_CONV_TRADE_AMOUNT / 100) * 100 + 100);
var nTradeUnit = Math.floor(nProduct * OPT_CONV_TRADE_AMOUNT / 100) * 100 + 100;
var nDuty = Math.floor(nProduct * OPT_CONV_TRADE_AMOUNT * OPT_CONV_DUTY / 100);
// 輸出資源が足りない場合、取引しない
if( nTradeUnit > nExportResource) {
debugLog("=== Export Resource < Trade Amount===");
act();
return;
}
// 指定された貿易センターがある拠点へ移動
if(OPT_CONV_TRADE_CENTER != xyVillage) {
var villages = loadVillages();
for(var i=0; i<villages.length;i++){
if(OPT_CONV_TRADE_CENTER == villages[i][IDX_XY]){
flgTrade = true;
URLTradeCenter = villages[i][IDX_URL];
xyTradeCenter = villages[i][IDX_XY];
debugLog("=== Jump to Trede Center ===");
break;
}
}
act();
return;
}
var xTradeCenter = -1; //貿易センターのX座標
var yTradeCenter = -1; //貿易センターのY座標
var lvTradeCenter = -1; //貿易センターのレベル
var area = get_area(g_pageVillage);
for(i=0;i<area.length;i++){
//貿易センターの座標を取得
if(area[i].name == "貿易センター") {
var Temp = area[i].xy.split(",");
xTradeCenter = Temp[0];
yTradeCenter = Temp[1];
lvTradeCenter = area[i].lv;
}
}
if(lvTradeCenter < 0) {
// 貿易センターがない
debugLog("=== not found Trade Center ===");
act();
return;
}
// 取引処理
debugLog("=== Ichiva: export:" +codeExport + "(" + OPT_CONV_EXPORT_RESOURSE +") import:" +codeImport+ "(" +modeImport+") amount:" +nTradeUnit + "(" + fTradeUnit + ")(" +OPT_CONV_TRADE_AMOUNT+") duty:" +nDuty+ " ===");
// changeResorceToResorce(codeExport, nTradeUnit, codeImport, xTradeCenter, yTradeCenter);
var c1={};
c1['contributionForm'] = "";
c1['wood'] = 0;
c1['stone'] = 0;
c1['iron'] = 0;
c1['rice'] = parseInt(nDuty);
c1['contribution'] = 1;
var c2={};
c2['x'] = parseInt(xTradeCenter);
c2['y'] = parseInt(yTradeCenter);
c2['change_btn'] = encodeURIComponent("はい");
c2['tc'] = parseInt(nTradeUnit);
c2['st'] = 1;
c2['tf_id'] = parseInt(codeExport);
c2['tt_id'] = parseInt(codeImport);
c2['ssid'] = j$.cookie('SSID');
if(nDuty > 0) {
var tid=unsafeWindow.setTimeout(function() {
j$.post("http://"+HOST+"/alliance/level.php",c1,function(){
var tid2=unsafeWindow.setTimeout(function(){
j$.post("http://"+HOST+"/facility/facility.php?x=" + parseInt(xTradeCenter) + "&y=" + parseInt(yTradeCenter) ,c2,function(){
act();
});
},INTERVAL);
});
},INTERVAL);
return;
} else {
var tid=unsafeWindow.setTimeout(function() {
j$.post("http://"+HOST+"/facility/facility.php?x=" + parseInt(xTradeCenter) + "&y=" + parseInt(yTradeCenter) ,c2,function(){
act();
});
},INTERVAL);
return;
}
act();
}
//拠点作成開始
function actSettleVillages(htmldoc, xyLand) {
debugLog("=== start actSettleVillages ===");
var villages = loadVillages();
//予約データ取得
var nReserve = -1;
for(var i=0; i<villages.length; i++) {
if(villages[i][IDX_XY] == xyLand) {
nReserve = i;
break;
}
}
if( nReserve == -1 ) {
// 予約なし
debugLog("=== actSettleVillages: not exist village list ===");
act();
return;
}
var kind;
if( villages[nReserve][IDX_RESERVE] == RESERVE_SUPPLYBASE1 ) {
kind = CODE["補給基地"];
} else
if( villages[nReserve][IDX_RESERVE] == RESERVE_FRONTBASE1 ) {
kind = CODE["前線基地"];
} else {
// 建設予約なし
debugLog("=== actSettleVillages: not exist reserve ===");
act();
return;
}
//拠点を作成できるかチェック
// var rmtime = htmldoc.innerHTML.match(/この領地を拠点にする/);
var rmname = $x('id("tMenu")', htmldoc).innerHTML.match(/この領地を拠点にする/);
if( !rmname ) {
debugLog("=== actSettleVillages: can't build base ===");
act();
return;
}
//現在の名声MAX取得
var elmFame = $x('id("status_left")/*[@class="status_fame"]/*[@class="status_rsrc_data"]/p', htmldoc);
var tmp = elmFame.innerHTML.match(/(.+)\/(.+)/);
var nFameNow = parseInt(tmp[1].match(/(\d+)/),10);
var nFameMax = parseInt(tmp[2].match(/(\d+)/),10);
// debugLog("=== fame:" + nFameNow + "/" + nFameMax + " ===");
//拠点作成に必要な名声
var bldtbl = [17, 35, 54, 80, 112, 150, 195, 248, 310, 999];
var nbVillage = $a('//ul/li/a[contains(@href,"/village_change.php?village_id")]', htmldoc).length; //拠点数-1になる
//作成中の拠点の数
var nbBuilding = 0;
for(var i=0; i<villages.length; i++) {
if((villages[i][IDX_RESERVE] == RESERVE_FRONTBASE2) || (villages[i][IDX_RESERVE] == RESERVE_SUPPLYBASE2)) {
nbBuilding ++;
}
}
if(nFameMax < bldtbl[nbVillage + nbBuilding]) {
// 新規拠点作成に必要な名声が不足
debugLog("=== actSettleVillages: not enough fame : num of base=" +(nbVillage + nbBuilding)+ " fame=" +nFameMax+ " need=" + bldtbl[nbVillage + nbBuilding]+ " ===");
act();
return;
}
var tmp = xyLand.split(",");
var xLand = tmp[0];
var yLand = tmp[1];
debugLog("http://"+HOST+"/facility/select_type.php?x=" +xLand+ "&y=" +yLand+ "&mode=build&type=" +kind );
var tid=unsafeWindow.setTimeout(function(){
j$.get("http://"+HOST+"/facility/select_type.php?x=" +xLand+ "&y=" +yLand+ "&mode=build&type=" +kind ,function(x){
var htmldoc2 = document.createElement("html");
htmldoc2.innerHTML = x.responseText;
//拠点が作成開始できているか確認
if(!htmldoc2.innerHTML.match(/名声が不足しています/)) {
debugLog("=== actSettleVillages: fail build base ===");
// failSettleVillage(xyLand);
} else {
// parseHtmlLand(htmldoc2);
}
act();
});
}, INTERVAL);
return;
function failSettleVillage( xy ) {
var villages = loadVillages();
var cExist = " ";
var nExist = -1;
for(var i=0; i<villages.length; i++) {
if(villages[i][IDX_XY] == xy) {
cExist = villages[i][IDX_RESERVE];
nExist = i;
break;
}
}
if( (cExist == RESERVE_FRONTBASE1) || (cExist == RESERVE_SUPPLYBASE1) ) {
// 予約中→建設失敗
villages[nExist][IDX_RESERVE] = RESERVE_ABORT;
var nNextAction = villages[nExist][IDX_ACTIONS].length;
villages[nExist][IDX_ACTIONS][nNextAction] = new Array();
villages[nExist][IDX_ACTIONS][nNextAction][IDX2_STATUS] = "建設失敗";
villages[nExist][IDX_ACTIONS][nNextAction][IDX2_TIME] = generateDateString(new Date());
villages[nExist][IDX_ACTIONS][nNextAction][IDX2_TYPE] = TYPE_BASEBUILD;
villages[nExist][IDX_ACTIONS][nNextAction][IDX2_DELETE] = false;
villages[nExist][IDX_ACTIONS][nNextAction][IDX2_ROTATION] = 0;
saveVillages(villages);
}
}
}
function actEquipLvup(bkbg) {
debugLog("=== Start actEquipLvup ===");
// if(OPT_BKBG_CHK == 0) { act(); return; }
var xyVillage = getXY();
var pageLabo;
LoadOptBuild(xyVillage);
// LoadOptDomestic(xyVillage);
// LoadOptCommon();
if(bkbg == 1) {
var type = "装甲研究所";
if( !g_pageArmorLabo ) {
debugLog("=== act not loaded armor labo ===");
abort_next();
return; // 処理中止
}
pageLabo = g_pageArmorLabo;
}
if(bkbg == 0) {
var type = "武装研究所";
if( !g_pageWeaponLabo ) {
debugLog("=== act not loaded weapon labo ===");
abort_next();
return; // 処理中止
}
pageLabo = g_pageWeaponLabo;
}
if( !g_pageVillage ) {
debugLog("=== act not loaded Village ===");
abort_next();
return; // 処理中止
}
var _x = -1;
var _y = -1;
var _lv = -1;
var area = get_area(g_pageVillage);
for(var i=0;i<area.length;i++){
if(area[i].name == type) {
var Temp = area[i].xy.split(",");
_x = Temp[0];
_y = Temp[1];
_lv = area[i].lv;
}
}
if( _x < 0 ) {
act();
return;
}
// 武装研究所・装甲研究所情報の取得
var actionsElem = document.evaluate('//th[@class="mainTtl6"]', pageLabo, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
// var actionsElem2 = document.evaluate('//b[@class="f14"]', pageLabo, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var actionsElem2 = document.evaluate('//b[contains(@class,"f14")]', pageLabo, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var actionsElem3 = document.evaluate('//td[@class="center"]', pageLabo, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var actionsElem4 = document.evaluate('//td[@class="cost"]', pageLabo, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var htmldoc2 = document.createElement("html");
var actionsElem7 = document.evaluate('//*[@colspan="4"]', pageLabo, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var Buki = Array();
var x = -1;
if( pageLabo.innerHTML.lastIndexOf("を強化する") != -1 ) {
for(var i=0;i<actionsElem2.snapshotLength;i++){
// htmldoc2.innerHTML = actionsElem4.snapshotItem(i).innerHTML;
// var actionsElem5 = document.evaluate('//span[@class="normal"]' ,htmldoc2, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
// var actionsElem6 = document.evaluate('//span[@class="max90"]' ,htmldoc2, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var BG_Name = actionsElem.snapshotItem(i+1).innerHTML;
var BG_LvNm = actionsElem2.snapshotItem(i).innerHTML.substring(actionsElem2.snapshotItem(i).innerHTML.lastIndexOf("&nbsp;&nbsp;")+12);
var BG_UID = CODE[BG_Name];
var BG_Lv = actionsElem2.snapshotItem(i).innerHTML.substring(3,actionsElem2.snapshotItem(i).innerHTML.lastIndexOf("&nbsp;")-6);
var BG_WOOD = get_costs_bgbk(type, BG_Name, BG_Lv, 0);
var BG_STONE = get_costs_bgbk(type, BG_Name, BG_Lv, 1);
var BG_IRON = get_costs_bgbk(type, BG_Name, BG_Lv, 2);
var BG_RICE = get_costs_bgbk(type, BG_Name, BG_Lv, 3);
var BG_TIME = get_costs_bgbk(type, BG_Name, BG_Lv, 4);
var BG_Go = (actionsElem3.snapshotItem(i+1).innerHTML.lastIndexOf("を強化する") != -1);
/*
if(BG_Lv != 10) {
var BG_WOOD = actionsElem5.snapshotItem(0).innerHTML;
var BG_STONE = actionsElem5.snapshotItem(1).innerHTML;
var BG_IRON = actionsElem6.snapshotItem(0).innerHTML;
var BG_RICE = actionsElem5.snapshotItem(2).innerHTML;
var BG_TIME = actionsElem7.snapshotItem(i).innerHTML;
var BG_Go = (actionsElem3.snapshotItem(i+1).innerHTML.lastIndexOf("を強化する") != -1);
} else {
var BG_WOOD = 0;
var BG_STONE = 0;
var BG_IRON = 0;
var BG_RICE = 0;
var BG_TIME = 0;
var BG_Go = false;
}
*/
if(type == "武装研究所") {
var BG_GoLv = OPT_BK_LV[ ( CODE[actionsElem.snapshotItem(i+1).innerHTML] - CODE_SOLDIER ) ];
} else {
var BG_GoLv = OPT_BG_LV[ ( CODE[actionsElem.snapshotItem(i+1).innerHTML] - CODE_SOLDIER ) ];
}
if( checkBKLvup(BG_WOOD,BG_STONE,BG_IRON,BG_RICE,BG_Go,BG_Lv,BG_GoLv) ){
x++;
Buki[x] = [BG_Name,BG_Lv,BG_LvNm,BG_UID,BG_TIME];
}
}
Buki.sort( function(a, b) { if(a[4] > b[4]) return 1; if(a[4] < b[4]) return -1; return 0;});
if(x != -1) {
// 武装強化処理
var c={};
c['x'] = parseInt(_x);
c['y'] = parseInt(_y);
c['unit_id'] = parseInt(Buki[0][3]);
var tid=unsafeWindow.setTimeout(function() {
j$.post("http://"+HOST+"/facility/facility.php?x=" +_x+ "&y=" +_y ,c,function(){
// 強化したページを確認
// var tid2=unsafeWindow.setTimeout(function(){
// j$.get("http://"+HOST+"/facility/facility.php?x=" +_x+ "&y=" +_y ,function(x){
// var htmldoc = document.createElement("html");
// htmldoc.innerHTML = x;
// getHtmlFacility(htmldoc, _x, _y);
act();
// });
// },INTERVAL);
});
},INTERVAL);
return;
}
}
act();
}
function checkBKLvup(hwood,hstone,hiron,hrice,hgo,hnlv,hslv) {
var wood = parseInt( $("wood").innerHTML, 10 );
var stone = parseInt( $("stone").innerHTML, 10 );
var iron = parseInt( $("iron").innerHTML, 10 );
var rice = parseInt( $("rice").innerHTML, 10 );
// var temp = (parseInt(hwood) + 99);
if(parseInt(hnlv) >= parseInt(hslv)) { return false; }
if((parseInt(hwood) + OPT_BLD_WOOD ) > wood ) { return false; }
if((parseInt(hstone) + OPT_BLD_STONE) > stone) { return false; }
if((parseInt(hiron) + OPT_BLD_IRON ) > iron ) { return false; }
if((parseInt(hrice) + OPT_BLD_RICE ) > rice ) { return false; }
if(hgo == false) { return false; }
return true;
}
// 自動建設
function actSetVillageFacility() {
debugLog("=== Start setVillageFacility ===");
// 拠点の状況を調査(削除中なら処理しない)
// if( !g_pageCastle ) {
// debugLog("=== act not loaded Village ===");
// abort_next();
// return; // 処理中止
// }
// var rmtime = g_pageCastle.innerHTML.match(/(補給基地を削除中です。|前線基地を削除中です。)[^\d]*(\d+-\d+-\d+ \d+:\d+:\d+)に完了します。/);
// if(rmtime) {
// // 削除中のため何もしない
// act();
// return;
// }
if( !g_pageVillage ) {
debugLog("=== act not loaded Village ===");
abort_next();
return; // 処理中止
}
// オプションを読み込み
var xyVillage = getXY();
LoadOptBuild(xyVillage);
// LoadOptDomestic(xyVillage);
// LoadOptCommon();
var cnt=0;
var del=0;
var delX = 0;
var delY = 0;
//建設情報を取得
var actionsElem = document.evaluate('//*[@id="actionLog"]/ul/li', g_pageVillage, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
// 削除施設情報の取得
for(var i = 0; i < actionsElem.snapshotLength; i++) {
var paItem = actionsElem.snapshotItem(i);
//ステータス
var buildStatusElem = document.evaluate('./span[@class="buildStatus"]/a', paItem, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(buildStatusElem.snapshotLength > 0) {
//施設建設数
cnt++;
// 削除数カウント
if( buildStatusElem.snapshotItem(0).parentNode.parentNode.textContent.indexOf("削除") >= 0 ){
if(buildStatusElem.snapshotItem(0).href.match(/.*\/.*(\d+).*(\d+)/)){
delX = parseInt(RegExp.$1);
delY = parseInt(RegExp.$2);
}
del++;
}
}
}
for(var i = 0; i < actionsElem.snapshotLength; i++) {
var paItem = actionsElem.snapshotItem(i);
//ステータス
var buildStatusElem = document.evaluate('./span[@class="buildStatus"]/a', paItem, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(buildStatusElem.snapshotLength > 0) {
//建物削除等に対応 2010.10.25 byおぜがづ
for(var j=0; j<buildStatusElem.snapshotLength;j++){
if(buildStatusElem.snapshotItem(j).parentNode.innerHTML.match(RegExp("(建設中|建設準備中)"))) {
//施設建設数
cnt++;
}
}
//施設建設数
//cnt++;
}
}
//建設予約ができるかどうか
if((cnt - del) >= 1) { act(); return; }
if(OPT_KATEMURA == 1) {
var area_all = get_area_all(g_pageVillage);
var hatake = 0; //食品加工工場の総数
var souko = 0; //備蓄基地の総数
var suzume = 0; //銅像の総数
var heichi = 0; //平地の総数
var suzume_Flag = 0;
var n = -1;
for(var i=0;i < area_all.length;i++){
if(area_all[i].name == "平地"){heichi++;n=i;}
else if(area_all[i].name.match(/食品加工工場\s.*?(\d+)/)){hatake++;if(parseInt(RegExp.$1)>=5){suzume_Flag=1;}}
else if(area_all[i].name.match(/備蓄基地/)){souko++;}
else if(area_all[i].name.match(/銅像/)){suzume++;}
}
if(heichi>0){ //平地が余っていたら
var tmp = heichi;
if(suzume != 1){ //銅像がまだ建っていなければ
tmp -= 1; //平地の数をマイナス1
}
if(souko < OPT_SOUKO_MAX){ //備蓄基地がまだ最大数建っていなければ
tmp -= (OPT_SOUKO_MAX - souko); //平地の数をマイナス]
}
if(tmp > 0){ //それでも平地が余っていれば
if(Chek_Sigen(new lv_sort("食品加工工場",0,"")) != 1){ //資源チェック
createFacility(CODE["食品加工工場"], area_all); //食品加工工場を建てる
return;
};
} else if(souko < OPT_SOUKO_MAX){ //備蓄基地が建てられる平地があれば
if(Chek_Sigen(new lv_sort("備蓄基地",0,"")) != 1){ //資源チェック
createFacility(CODE["備蓄基地"], area_all); //備蓄基地を建てる
return;
}
} else if(suzume != 1 && suzume_Flag == 1){ //銅像がまだ建っていなければ
if(Chek_Sigen(new lv_sort("銅像",0,"")) != 1){ //資源チェック
createFacility(CODE["銅像"], area_all); //銅像を建てる
return;
}
}
}
//建てられるスペースがなければ通常の処理を続ける
}
var area = get_area(g_pageVillage);
area.sort(cmp_areas);
area.sort(cmp_lv);
for(i=0;i<area.length;i++){
var tmpName1 = area[i].name;
switch (tmpName1) {
case "補給基地":
case "本拠地":
case "前線基地":
tmpName1 = "拠点"; //
chkFlg = 1;
break;
}
if(parseInt(area[i].lv) >= parseInt(OPT_CHKBOXLV[OPT_FNID[tmpName1]])){
continue;
} //指定Lv以上ならメインに戻る
//建設物名分回す
OPT_FUC_NAME.push("補給基地","本拠地","前線基地");
if(OPT_CHKBOX[0] == 1) {
OPT_CHKBOX.push(1,1,1);
OPT_CHKBOXLV.push(OPT_CHKBOXLV[0],OPT_CHKBOXLV[0],OPT_CHKBOXLV[0]);
} else {
OPT_CHKBOX.push(0,0,0);
OPT_CHKBOXLV.push(0,0,0);
}
OPT_CHKBOX.push
for(var ii=0;ii<OPT_FUC_NAME.length;ii++){
//ソートしたLvの低い順に比較する
if(area[i].name == OPT_FUC_NAME[ii]){
//建設指示が有るか確認する。
if(parseInt(OPT_CHKBOX[ii]) == 1){
if(parseInt(area[i].lv) >= parseInt(OPT_CHKBOXLV[ii])){
break;
}
//建設に必要な資源が有るかどうかチェック
var ret = Chek_Sigen(area[i]);
if(ret == 1){
//資源不足、次回巡回時に再び判定
break;
}
var Temp = area[i].xy.split(",");
var c = {};
if( (del != 0) && (parseInt(Temp[0]) == delX) && (parseInt(Temp[1]) == delY) ){
// 削除施設とレベルアップ施設が一致したらスキップ
continue;
}
// 拠点以外のレベルアップ処理
c['x']=parseInt(Temp[0]);
c['y']=parseInt(Temp[1]);
c['village_id']=getVillageID(xyVillage);
c['ssid']=j$.cookie('SSID');
var tid=unsafeWindow.setTimeout(function() {
j$.post("http://"+HOST+"/facility/build.php",c,function(){
var tid2=unsafeWindow.setTimeout(function(){
// POST後、拠点ページをリクエスト
j$.get("http://"+HOST+"/village.php",function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
g_pageVillage = htmldoc;
parseHtmlVillage(g_pageVillage);
parseHtmlVillageActions(g_pageVillage);
parseHtmlVillageDomestic(g_pageVillage);
parseHtmlVillageTradeCenter(g_pageVillage);
g_flgScreenChange = true;
act();
});
},INTERVAL);
});
},INTERVAL);
return;
}
}
}
}
act();
}
// 兵舎(食品加工工場) 自動ビルド&スクラッチ
function actSetVillageFacility2() {
debugLog("=== Start setVillageFacility2 ===");
if( !g_pageVillage ) {
debugLog("=== act not loaded Village ===");
abort_next();
return; // 処理中止
}
// オプションを読み込み
var xyVillage = getXY();
LoadOptBuild(xyVillage);
// LoadOptDomestic(xyVillage);
// LoadOptCommon();
var cnt=0;
var del=0;
var delX = 0;
var delY = 0;
//建設情報を取得
var actionsElem = document.evaluate('//*[@id="actionLog"]/ul/li', g_pageVillage, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for(var i = 0; i < actionsElem.snapshotLength; i++) {
var paItem = actionsElem.snapshotItem(i);
//ステータス
var buildStatusElem = document.evaluate('./span[@class="buildStatus"]/a', paItem, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(buildStatusElem.snapshotLength > 0) {
//施設建設数
cnt++;
// 削除数カウント
if( buildStatusElem.snapshotItem(0).parentNode.parentNode.textContent.indexOf("削除") >= 0 ){
if(buildStatusElem.snapshotItem(0).href.match(/.*\/.*(\d+).*(\d+)/)){
delX = parseInt(RegExp.$1);
delY = parseInt(RegExp.$2);
}
del++;
}
}
}
var results = document.evaluate('//area', g_pageVillage, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
var area = new Array();
for(var i=0,n=0; i<results.snapshotLength; i++){
if(results.snapshotItem(i).alt.match(/(.*?)\s.*?(\d+)/)){
strURL = results.snapshotItem(i).href;
area[n] = new lv_sort(RegExp.$1,RegExp.$2,getURLxy(strURL));
n++;
}
else if(results.snapshotItem(i).alt == "平地"){
// 平地の座標を拾う
strURL = results.snapshotItem(i).href;
area[n] = new lv_sort("平地",0,getURLxy(strURL));
n++;
}
}
if( OPT_SorH == "DD" ){
//兵舎が処理対象の場合、エリアリストに歩兵学校(兵舎建設条件)があるかをチェック
var cntv = 0;
for(var i=0;i<area.length;i++){
if(area[i].name == "歩兵学校"){
cntv++;
break;
}
}
if(cntv == 0) {
act();
return;
}
}
// 施設情報のレベルソート
area.sort(cmp_lv2);
// 削除中かチェック
if( (del == 0) ){
// 削除中でなければ、削除できる施設があるか調べる @@
var TargetName = "";
if(OPT_SorH == "DD") { TargetName = "兵舎"; }
if(OPT_SorH == "HH") { TargetName = "食品加工工場"; }
var TargetCount = 0;
var BlankCount = 0;
// 対象レベル以下の兵舎(食品加工工場)と平地の数をカウントする
for(i=0;i<area.length;i++){
if(area[i].name == TargetName && parseInt(area[i].lv) <= OPT_MAXLV) { TargetCount += 1; }
if(area[i].name == "平地") { TargetCount += 1; }
}
if(TargetCount < OPT_MAX){
// 対象となる兵舎(食品加工工場)と平地の合計が指定数に満たない場合
area.sort(cmp_lv);
for(i=0;i<area.length;i++){
if((area[i].name == TargetName) && (parseInt(area[i].lv) >= OPT_MAXLV)) {
// 削除
var Temp = area[i].xy.split(",");
deleteFacility(Temp[0],Temp[1]);
return;
}
}
} else {
// 普通に削除処理を実行
for(i=0;i<area.length;i++){
if((area[i].name == TargetName) && (parseInt(area[i].lv) == OPT_MAXLV)) {
// 削除
var Temp = area[i].xy.split(",");
deleteFacility(Temp[0],Temp[1]);
return;
}
}
}
}
area.sort(cmp_lv2);
//建設予約ができるかどうか
if((cnt - del) >= 1) { act(); return; }
// 平地建設条件がある場合、対象施設数がOPT_MAX以上かチェックする
var yct = 0;
if( OPT_SorH == "DD" ){
for(i=0;i<area.length;i++){
if(area[i].name == "兵舎"){
// @@ Lv6以下の数だけを数える 2011.06.22 5zen
if(area[i].lv < (OPT_MAXLV + 1)){
yct++;
}
}
}
}
if( OPT_SorH == "HH" ){
for(i=0;i<area.length;i++){
if(area[i].name == "食品加工工場"){
// @@ Lv6以下の数だけを数える 2011.06.22 5zen
if(area[i].lv < (OPT_MAXLV + 1)){
yct++;
}
}
}
}
for(i=0;i<area.length;i++){
if( OPT_SorH == "DD" ){
if((area[i].name != "兵舎") && (area[i].name != "平地")){
// 平地と兵舎以外スキップ
continue;
}
}
else if( OPT_SorH == "HH" ){
if((area[i].name != "食品加工工場") && (area[i].name != "平地")){
// 平地と食品加工工場以外スキップ
continue;
}
}
if( yct >= OPT_MAX ){
if( OPT_SorH == "DD" ){
if(area[i].name != "兵舎"){
// 宿数がすでにOPT_MAX以上なら、平地は無視
continue;
}
}
if( OPT_SorH == "HH" ){
if(area[i].name != "食品加工工場"){
// 食品加工工場数がすでにOPT_MAX以上なら、平地は無視
continue;
}
}
}
// if(parseInt(area[i].lv) >= OPT_MAXLV){break;} //指定Lv以上ならメインに戻る
//建設物名分回す
for(var ii=0;ii<OPT_FUC_NAME.length;ii++){
//ソートしたLvの低い順に比較する
if(area[i].name == OPT_FUC_NAME[ii]){
//建設に必要な資源が有るかどうかチェック
var ret = Chek_Sigen(area[i]);
if(ret == 1){
//資源不足、次巡回時に再び判定
break;
}
var Temp = area[i].xy.split(",");
var c={};
if( (del != 0) && (parseInt(Temp[0]) == delX) && (parseInt(Temp[1]) == delY) ){
// 削除施設とレベルアップ施設が一致したらスキップ
continue;
}
// add 2011.12.14
if(area[i].lv > (OPT_MAXLV - 1)) {
continue;
}
if( area[i].name != "平地"){
c['x']=parseInt(Temp[0]);
c['y']=parseInt(Temp[1]);
c['village_id']=getVillageID(xyVillage);
c['ssid']=j$.cookie('SSID');
} else {
if( OPT_SorH == "DD" ){
c['x']=parseInt(Temp[0]);
c['y']=parseInt(Temp[1]);
c['id']=242;
c['village_id']=getVillageID(xyVillage);
c['ssid']=j$.cookie('SSID');
} else {
c['x']=parseInt(Temp[0]);
c['y']=parseInt(Temp[1]);
c['id']=215;
c['village_id']=getVillageID(xyVillage);
c['ssid']=j$.cookie('SSID');
}
}
var tid=unsafeWindow.setTimeout(function() {
j$.post("http://"+HOST+"/facility/build.php",c,function(){
var tid2=unsafeWindow.setTimeout(function(){
// POST後、拠点ページをリクエスト
j$.get("http://"+HOST+"/village.php",function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
g_pageVillage = htmldoc;
parseHtmlVillage(g_pageVillage);
parseHtmlVillageActions(g_pageVillage);
parseHtmlVillageDomestic(g_pageVillage);
parseHtmlVillageTradeCenter(g_pageVillage);
g_flgScreenChange = true;
act();
});
},INTERVAL);
});
},INTERVAL);
return;
}
}
}
act();
}
//施設建設
function createFacility(f, area){
var xyVillage = getXY();
area.sort(cmp_areas);
for(var i=0;i<area.length;i++){
if(area[i].name == "平地"){ //一番最初に見つかった平地に建設
var Temp = area[i].xy.split(",");
var c = {};
c['x']=parseInt(Temp[0]);
c['y']=parseInt(Temp[1]);
c['village_id']=getVillageID(xyVillage);
c['id']=f;
c['ssid']=j$.cookie('SSID');
var tid=unsafeWindow.setTimeout(function() {
j$.post("http://"+HOST+"/facility/build.php",c,function(){
var tid2=unsafeWindow.setTimeout(function(){
// POST後、拠点ページをリクエスト
j$.get("http://"+HOST+"/village.php",function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
g_pageVillage = htmldoc;
parseHtmlVillage(g_pageVillage);
parseHtmlVillageActions(g_pageVillage);
parseHtmlVillageDomestic(g_pageVillage);
parseHtmlVillageTradeCenter(g_pageVillage);
g_flgScreenChange = true;
act();
});
},INTERVAL);
});
},INTERVAL);
return;
}
}
act();
}
//施設削除
function deleteFacility(_x,_y){
var tid1=unsafeWindow.setTimeout(function(){
j$.get("http://"+HOST+"/facility/facility.php?x=" +_x+ "&y=" +_y ,function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
// var tables = document.evaluate('//*[@name="ssid"]',htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
// var ssid=tables.snapshotItem(0).value;
var c={};
c['x'] = parseInt(_x);
c['y'] = parseInt(_y);
// c['ssid']=tables.snapshotItem(0).value;
c['ssid'] = j$.cookie('SSID');
c['remove']="%E5%BB%BA%E7%89%A9%E3%82%92%E5%A3%8A%E3%81%99";
var tid2=unsafeWindow.setTimeout(function() {
j$.post("http://"+HOST+"/facility/facility.php?x=" + _x + "&y=" + _y ,c,function(){
var tid3=unsafeWindow.setTimeout(function(){
// POST後、拠点ページをリクエスト
j$.get("http://"+HOST+"/village.php",function(x){
var htmldoc2 = document.createElement("html");
htmldoc2.innerHTML = x;
g_pageVillage = htmldoc2;
parseHtmlVillage(g_pageVillage);
parseHtmlVillageActions(g_pageVillage);
parseHtmlVillageDomestic(g_pageVillage);
parseHtmlVillageTradeCenter(g_pageVillage);
g_flgScreenChange = true;
act();
});
},INTERVAL + 2000); // 削除時は2秒の追加ウエイト
});
},INTERVAL);
});
},INTERVAL);
}
// 造兵
function actMakeSoldier() {
debugLog("=== Start actMakeSoldier ===");
if( !g_pageVillage ) {
debugLog("=== act not loaded Village ===");
abort_next();
return; // 処理中止
}
var xyVillage = getXY();
LoadOptBuild(xyVillage);
var nLeft = getBarracksLeft();
var listNbSoldier = getNumOfSoldier();
var aryEnable = getEnableSoldier();
var aryNeed = new Array();
for(var i=0; i<LIST_STATUS_SOLDIER.length; i++) {
var nL = LIST_STATUS_SOLDIER[i];
var nType = CODE[nL] - CODE_SOLDIER;
debugLog("===" +i+ ":" +nL+ ":" +nType+ ":code " + CODE[nL] + ":add " +OPT_SOLDIER_ADD[nType]+ ":budget " +countSoldierBudget(nType)+ " ===");
if(aryEnable[nType] == true) {
if( (OPT_SOLDIER_ADD[nType] == 0)
|| (OPT_SOLDIER_ADD[nType] > nLeft)
|| (OPT_SOLDIER_ADD[nType] > countSoldierBudget(nType))) {
// 1回の造兵数が兵舎の空きを超える場合と資源が足りない場合は造兵しない
aryEnable[nType] = false;
}
}
// 残り必要数を算出
aryNeed[nType] = OPT_SOLDIER_MAX[nType] - listNbSoldier[i];
if( aryNeed[nType] < 0 ) aryNeed[nType] = 0;
}
// 最大必要数の兵科を検出
var nTypeMax = -1;
var nNeedMax = 0;
for(var nType=0; nType<TYPES_SOLDIERS; nType++) {
if(aryEnable[nType] == true) {
if( nNeedMax < aryNeed[nType] ) {
nNeedMax = aryNeed[nType];
nTypeMax = nType;
}
}
}
if(nTypeMax == -1) {
// 造兵する(できる)兵科がないので、造兵終了
debugLog("=== actMakeSoldier cancel ===");
cancelMakeSoldier();
act();
return;
}
// 造兵する施設を検索
var _x = -1;
var _y = -1;
var _lv = -1;
var area = get_area(g_pageVillage);
for(var i=0;i<area.length;i++){
if( area[i].name == SCHOOL_LIST[nTypeMax] ) {
var Temp = area[i].xy.split(",");
_x = Temp[0];
_y = Temp[1];
_lv = area[i].lv;
}
}
if( _lv == -1 ) {
debugLog("=== actMakeSoldier: school is vanished ===");
abort_next();
return; // 処理中止
}
debugLog("=== create: " +nTypeMax+ ":" +SCHOOL_LIST[nTypeMax]+ ": add " + OPT_SOLDIER_ADD[nTypeMax] + " ===");
var c={};
c['x'] = _x;
c['y'] = _y;
c['unit_id'] = CODE_SOLDIER + nTypeMax;
c['count'] = OPT_SOLDIER_ADD[nTypeMax];
var tid=unsafeWindow.setTimeout(function() {
j$.post("http://"+HOST+"/facility/facility.php?x=" +_x+ "&y=" +_y ,c,function(){
// 兵作成したページを確認
var tid2=unsafeWindow.setTimeout(function(){
j$.get("http://"+HOST+"/facility/facility.php?x=" +_x+ "&y=" +_y ,function(x){
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x;
getHtmlFacility(htmldoc, _x, _y);
var tid3=unsafeWindow.setTimeout(function(){
// POST後、拠点ページもリクエスト
j$.get("http://"+HOST+"/village.php",function(x){
var htmldoc2 = document.createElement("html");
htmldoc2.innerHTML = x;
g_pageVillage = htmldoc2;
parseHtmlVillage(g_pageVillage);
parseHtmlVillageActions(g_pageVillage);
parseHtmlVillageDomestic(g_pageVillage);
parseHtmlVillageTradeCenter(g_pageVillage);
g_flgScreenChange = true;
act();
});
},INTERVAL);
});
},INTERVAL);
});
},INTERVAL);
return;
}
// 部隊管理ページから兵士数を合算
function getNumOfSoldier() {
if( !g_pageVillage ) {
debugLog("=== act not loaded Village ===");
abort_next();
return; // 処理中止
}
if( !g_pageUnitStatus ) {
debugLog("=== act not loaded Unit Status ===");
abort_next();
return; // 処理中止
}
var tables = document.evaluate('//*[@class="status village-bottom"]',g_pageVillage, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var Temp = tables.snapshotItem(0).innerHTML.substring(tables.snapshotItem(0).innerHTML.lastIndexOf(" ")+1);
aa = Temp.split("/");
var now_Soldier = aa[0];
var max_Soldier = aa[1];
var result = new Array();
var attackerData = new Array(0,0,0,0,0,0,0,0,0,0,0);
var waitData = new Array(0,0,0,0,0,0,0,0,0,0,0);
var helpData = new Array(0,0,0,0,0,0,0,0,0,0,0);
var sortieData = new Array(0,0,0,0,0,0,0,0,0,0,0);
var returnData = new Array(0,0,0,0,0,0,0,0,0,0,0);
var moveData = new Array(0,0,0,0,0,0,0,0,0,0,0);
// 待機中の兵士
tables = document.evaluate('//div[@id="wait"]', g_pageUnitStatus, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var htmldoc2 = document.createElement("html");
htmldoc2.innerHTML = tables.snapshotItem(0).innerHTML;
var tables2 = document.evaluate('//td[@class="digit"]',htmldoc2, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
waitData = addSoldierCount(waitData, tables2);
attackerData = addSoldierCount(attackerData, tables2);
// 援軍中
tables = document.evaluate('//div[@id="help"]', g_pageUnitStatus, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
htmldoc2.innerHTML = tables.snapshotItem(0).innerHTML;
tables2 = document.evaluate('//table[@class="commonTablesNoMG"]',htmldoc2, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for(var i = 0; i < tables2.snapshotLength; i++ ){
var htmldoc3 = document.createElement("html");
htmldoc3 = tables2.snapshotItem(i);
var tables3 = document.evaluate('*/tr/td[@class="digit"]',htmldoc3, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
helpData = addSoldierCount(helpData, tables3);
attackerData = addSoldierCount(attackerData, tables3);
}
// 出撃中
tables = document.evaluate('//div[@id="sortie"]', g_pageUnitStatus, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
htmldoc2.innerHTML = tables.snapshotItem(0).innerHTML;
tables2 = document.evaluate('//table[@class="commonTablesNoMG"]',htmldoc2, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for(var i = 0; i < tables2.snapshotLength; i++ ){
var htmldoc3 = document.createElement("html");
htmldoc3 = tables2.snapshotItem(i);
var tables3 = document.evaluate('*/tr/td[@class="digit"]',htmldoc3, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
sortieData = addSoldierCount(sortieData, tables3);
attackerData = addSoldierCount(attackerData, tables3);
}
// 帰還中
tables = document.evaluate('//div[@id="return"]', g_pageUnitStatus, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
htmldoc2.innerHTML = tables.snapshotItem(0).innerHTML;
tables2 = document.evaluate('//table[@class="commonTablesNoMG"]',htmldoc2, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for(var i = 0; i < tables2.snapshotLength; i++ ){
var htmldoc3 = document.createElement("html");
htmldoc3 = tables2.snapshotItem(i);
var tables3 = document.evaluate('*/tr/td[@class="digit"]',htmldoc3, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
returnData = addSoldierCount(returnData, tables3);
attackerData = addSoldierCount(attackerData, tables3);
}
// 移動中
tables = document.evaluate('//div[@id="move"]', g_pageUnitStatus, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
htmldoc2.innerHTML = tables.snapshotItem(0).innerHTML;
tables2 = document.evaluate('//table[@class="commonTablesNoMG"]',htmldoc2, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for(var i = 0; i < tables2.snapshotLength; i++ ){
var htmldoc3 = document.createElement("html");
htmldoc3 = tables2.snapshotItem(i);
var tables3 = document.evaluate('*/tr/td[@class="digit"]',htmldoc3, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
moveData = addSoldierCount(moveData, tables3);
attackerData = addSoldierCount(attackerData, tables3);
}
return attackerData;
//兵士数加算
function addSoldierCount(total, add) {
if(total == undefined) total = new Array();
if(total == undefined) {
total = new Array(0,0,0,0,0,0,0,0,0,0,0);
}
for(var j = 0; j < 11; j++) {
total[j] += parseInt(add.snapshotItem(j).innerHTML);
}
return total;
}
}
// 各兵学校ページから現在作成可能な兵科を列挙
function getEnableSoldier() {
var aryEnable = new Array();
// for(var i=0; i<LIST_STATUS_SOLDIER.length; i++) {
// var nType = CODE[LIST_STATUS_SOLDIER[i]] - CODE_SOLDIER;
// aryEnable[nType] = false;
// }
if(g_pageSoldierSchool) { aryEnable = checkEnable( g_pageSoldierSchool, aryEnable ); }
if(g_pageArmySchool) { aryEnable = checkEnable( g_pageArmySchool, aryEnable ); }
if(g_pageNavySchool) { aryEnable = checkEnable( g_pageNavySchool, aryEnable ); }
if(g_pageAirforceSchool) { aryEnable = checkEnable( g_pageAirforceSchool, aryEnable ); }
if(g_pageEngineerSchool) { aryEnable = checkEnable( g_pageEngineerSchool, aryEnable ); }
return aryEnable;
function checkEnable(htmldoc, aryEnable) {
var elmTimer = document.evaluate('//*[@id="area_timer0"]',htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(elmTimer.snapshotLength > 0) {
// 兵士を作成中なので、この施設では他の兵科も含めて造兵しない
} else {
var elmTable = document.evaluate('//th[@class="mainTtl"]',htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for(var i = 1; i < elmTable.snapshotLength; i++ ){
var strSoldierType = elmTable.snapshotItem(i).innerHTML;
var nType = CODE[strSoldierType] - CODE_SOLDIER;
// 作成可能
aryEnable[nType] = true;
}
}
return aryEnable;
}
}
// 兵舎の空きを算出
function getBarracksLeft() {
if( !g_pageVillage ) {
debugLog("=== act not loaded Village ===");
abort_next();
return; // 処理中止
}
var tables = document.evaluate('//*[@class="status village-bottom"]',g_pageVillage, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var Temp = tables.snapshotItem(0).innerHTML.substring(tables.snapshotItem(0).innerHTML.lastIndexOf(" ")+1);
temp0 = Temp.split("/");
var now_Soldier = temp0[0];
var max_Soldier = temp0[1];
var make_max = temp0[1] - temp0[0]; // 最大作成可能兵数
return make_max;
}
function countSoldierBudget(nType){
var SoldierCost = [
[ 1, 1, 1, 1],
[ 11, 1, 11, 61], // 301 新兵
[ 1, 1, 1, 1],
[ 88, 132, 1, 21], // 303 軽戦車
[ 264, 396, 1, 61], // 304 重戦車
[ 1, 128, 192, 41], // 305 軽戦闘機
[ 1, 1, 1, 1],
[ 1, 384, 576, 121], // 307 重戦闘機
[ 144, 1, 96, 35], // 308 水雷艇
[ 432, 1, 288, 105], // 309 駆逐艦
[ 151, 151, 151, 1], // 310 工作員
[ 451, 451, 451, 31], // 311 特殊部隊
[ 501, 1, 501, 1], // 312 工兵
[ 1,1501,1501, 1] // 313 自走臼砲
];
var wood = parseInt( $("wood").innerHTML, 10 );
var stone = parseInt( $("stone").innerHTML, 10 );
var iron = parseInt( $("iron").innerHTML, 10 );
var rice = parseInt( $("rice").innerHTML, 10 );
countWood = parseInt((wood - OPT_BLD_WOOD) / SoldierCost[nType][0]);
countStone = parseInt((stone - OPT_BLD_STONE) / SoldierCost[nType][1]);
countIron = parseInt((iron - OPT_BLD_IRON) / SoldierCost[nType][2]);
countRice = parseInt((rice - OPT_BLD_RICE) / SoldierCost[nType][3]);
var MaxSoldier = countWood;
if(MaxSoldier > countStone) { MaxSoldier = countStone; }
if(MaxSoldier > countIron) { MaxSoldier = countIron; }
if(MaxSoldier > countRice) { MaxSoldier = countRice; }
return MaxSoldier;
}
// =================================================================================================
// 次拠点移動
function forwardNextVillage(){
// 巡回停止中ならスキップ
var AutoFlg = cloadData("AutoFlg", true, true, true);
if(!AutoFlg) { return; }
var villages = loadVillages();
var RoundTime = cloadData("RoundTime", ROUND_TIME_DEFAULT, true, true);
if(g_flgScreenChange) { RoundTime = ROUND_TIME_DEFAULT; }
// 2014.02.13 if文追加 by 5zen
if (tidMain2 != undefined){
clearInterval(tidMain2);
tidMain2 = undefined;
}
// 貿易が予約されている場合は、最短巡回時間で貿易センターのある都市へ
if((flgTrade == true) && (URLTradeCenter != "")) {
tidMain2 = unsafeWindow.setTimeout( function(){
setIndicator(0, 1);
location.href = URLTradeCenter;
}, ROUND_TIME_LEAST *1000 );
g_xyNextVillage = xyTradeCenter;
return;
}
var xyNextVillage = "";
var strNextURL = "";
var timeLastVisit = new Date();
// 前回巡回時刻がもっとも過去の拠点を検索
for(var i = 0; i < villages.length; i++) {
var chkAvc1 = GM_getValue(HOST+PGNAME+"OPT_CHKBOX_AVC_"+i, true);
if(chkAvc1 != true) { continue; }
var timeVisit = new Date("2000/1/1 00:00:00");
if(villages[i][IDX_VISIT]) {
timeVisit = new Date(villages[i][IDX_VISIT]);
}
if(timeLastVisit >= timeVisit) {
timeLastVisit = timeVisit;
xyNextVillage = villages[i][IDX_XY];
strNextURL = villages[i][IDX_URL];
}
}
debugLog("LastVisit:" +timeLastVisit+ " next:(" +xyNextVillage+ ")");
// 巡回時間を追加して、通常巡回予定時刻が確定
// 平均巡回時間(ユーザーが設定)×拠点数 + 最低巡回時間
// 拠点が0の場合でも最低巡回時間以上保障
var timeLastAction = timeLastVisit;
timeLastAction.setSeconds(timeLastVisit.getSeconds() + parseInt(RoundTime) * villages.length + ROUND_TIME_LEAST );
debugLog("LastVisit:" +timeLastAction);
// 通常巡回予定時刻より先に完了するアクションがあればそちらを優先する
for(var i = 0; i < villages.length; i++) {
var timeVisit = new Date("2000/1/1 00:00:01");
if(villages[i][IDX_VISIT]) {
timeVisit = new Date(villages[i][IDX_VISIT]);
}
var actions = villages[i][IDX_ACTIONS];
for(var j = 0; j < actions.length; j++) {
var timeAction = new Date(actions[j][IDX2_TIME]);
if( (timeVisit <= timeAction) && (timeAction < timeLastAction)) {
timeLastAction = timeAction;
xyNextVillage = villages[i][IDX_XY];
strNextURL = villages[i][IDX_URL];
}
}
}
g_xyNextVillage = xyNextVillage;
debugLog("LastAction:" +timeLastAction+ " next:(" +xyNextVillage+ ")");
// 遷移までのタイミングを算出する
var timeNow = new Date();
var timeNext = timeLastAction.getTime() - timeNow.getTime();
// 現在地と次巡回地が同じ場合、公式リロードと被るのを避ける為1秒遅らせる。
if(g_xyNowVillage == g_xyNextVillage) { timeNext += 1000; }
// 最短巡回時間保証
if( timeNext < ROUND_TIME_LEAST *1000 ) { timeNext = ROUND_TIME_LEAST *1000; }
tidMain2 = unsafeWindow.setTimeout( function(){
setIndicator(0, 1);
location.href = strNextURL;
}, timeNext );
debugLog(timeNext + "msec next:(" +g_xyNextVillage+ ") URL:" + strNextURL);
}
// =================================================================================================
//////////////////////////////////////////////////////////////////////////////////////////
// 生産量取得
function getProduct(htmldoc) {
var aryRes = new Array();
var aryStatus = $a('id("status_left")/*[@class="status_resource"]/*[@class="status_rsrc_data"]', htmldoc);
for(var i=0;i<aryStatus.length;i++) {
var tmp = aryStatus[i].innerHTML.match(/(.+)\s*<span class=\"increase\">(.+)/);
if( !tmp ) {
tmp = aryStatus[i].innerHTML.match(/(.+)\s*<span class=\"resource\">(.+)/);
}
product = parseInt(tmp[1].match(/(\d+)/),10);
increase = parseInt(tmp[2].match(/(\d+)/),10);
aryRes[i*2 ] = product;
aryRes[i*2+1] = increase;
}
return aryRes;
}
//施設一覧取得
function get_area(htmldoc){
var results = document.evaluate('//area', htmldoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
var area = new Array();
for(var i=0,n=0; i<results.snapshotLength; i++){
if(results.snapshotItem(i).alt.match(/(.*?)\s.*?(\d+)/)){
var strURL = results.snapshotItem(i).href;
area[n] = new lv_sort(RegExp.$1,RegExp.$2,getURLxy(strURL));
n++;
}
}
return area;
}
function get_area_all(htmldoc){
var results = document.evaluate('//area', htmldoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
var area = new Array();
for(var i=0,n=0; i<results.snapshotLength; i++){
var strURL = results.snapshotItem(i).href;
area[n] = new areas(results.snapshotItem(i).alt,getURLxy(strURL));
n++;
}
return area;
}
function areas(name,xy){
this.name = name;
this.xy = xy;
}
//比較する関数
function cmp_areas(a,b){
if(a.xy > b.xy){return 1;} else {return -1;}
}
//比較する関数
function cmp_time(a,b){
if(a.xy > b.xy){return 1;} else {return -1;}
}
//建設物の格納用
function lv_sort(name,lv,xy){
this.name = name;
this.lv = lv;
this.xy = xy;
}
//比較する関数
function cmp_lv(a,b){
return a.lv - b.lv;
}
function cmp_lv2(a,b){
return b.lv - a.lv;
}
//拠点IDの取得
function getVillageID(xyVillage){
//villages
var villages = loadVillages();
for(var i=0; i<villages.length;i++){
if(villages[i][IDX_XY] == xyVillage){
var vURL = villages[i][IDX_URL];
var temp = vURL.split("?");
var temp2 = temp[1].split("=");
return temp2[1];
}
}
}
function getURLxy(strURL){
if(strURL == ""){ return "";}
var strTemp = "";
strTemp = strURL;
var Temp = strTemp.split("?");
var Temp2 = Temp[1].split("&");
var Temp3 = Temp2[0].split("=");
var Temp4 = Temp2[1].split("=");
return Temp3[1] + "," +Temp4[1];
}
//建設設定画面を開く
function openIniBuilderBox() {
addIniBuilderHtml();
}
//建設設定画面を閉じる
function closeIniBuilderBox() {
deleteIniBuilderHtml();
deleteIniBuilderFrameHtml();
}
//建設対象拠点表示HTML削除
function deleteIniBuilderHtml() {
var elem = document.getElementById("ABContainer");
if(elem == undefined) return;
document.body.removeChild(document.getElementById("ABContainer"));
}
//建設対象拠点表示HTML削除
function deleteIniBuilderFrameHtml() {
var elem = document.getElementById("ABContainer");
if(elem == undefined) return;
document.body.removeChild(document.getElementById("ABContainer"));
}
//LvUP対象施設設定画面を開く
function openInifacBox0() {
clearInterval(tidMain2);
closeInifacBox0();
addInifacHtml0();
}
///LvUP対象施設設定画面を閉じる
function closeInifacBox0() {
deleteInifacHtml0();
deleteInifacFrameHtml0();
}
//LvUP対象施設設定画面を開く
function openInifacBox(xyVillage) {
clearInterval(tidMain2);
closeInifacBox();
addInifacHtml(xyVillage);
}
///LvUP対象施設設定画面を閉じる
function closeInifacBox() {
deleteInifacHtml();
deleteInifacFrameHtml();
}
//LvUP対象施設設定画面を開く
function openInifacBox2(xyVillage) {
clearInterval(tidMain2);
closeInifacBox2();
addInifacHtml2(xyVillage);
}
///LvUP対象施設設定画面を閉じる
function closeInifacBox2() {
deleteInifacHtml2();
deleteInifacFrameHtml2();
}
///LvUP対象施設設のチェックボックスをクリアする
function clearInifacBox() {
var checkbox = $a('//input[@id="OPT_CHKBOX0"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX1"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX2"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX3"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX4"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX5"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX6"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX7"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX8"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX9"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX10"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX11"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX12"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX13"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX14"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX15"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX16"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX17"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX18"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX19"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX20"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX21"]'); checkbox[0].checked = false;
var checkbox = $a('//input[@id="OPT_CHKBOX22"]'); checkbox[0].checked = false;
var textbox = $a('//input[@id="OPT_CHKBOXLV0"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV1"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV2"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV3"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV4"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV5"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV6"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV7"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV8"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV9"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV10"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV11"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV12"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV13"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV14"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV15"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV16"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV17"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV18"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV19"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV20"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV21"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_CHKBOXLV22"]'); textbox[0].value = 0;
// 内政設定
var checkbox = $a('//input[@id="OPT_DOME_SKILL1"]'); checkbox[0].checked = false; // 鉄生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL2"]'); checkbox[0].checked = false; // 緊急鉄鉱石輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL3"]'); checkbox[0].checked = false; // 海軍戦力増強
var checkbox = $a('//input[@id="OPT_DOME_SKILL4"]'); checkbox[0].checked = false; // 石油生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL5"]'); checkbox[0].checked = false; // 緊急石油輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL6"]'); checkbox[0].checked = false; // 陸軍戦力増強
var checkbox = $a('//input[@id="OPT_DOME_SKILL7"]'); checkbox[0].checked = false; // 軽金属生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL8"]'); checkbox[0].checked = false; // 緊急軽金属輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL9"]'); checkbox[0].checked = false; // 空軍戦力増強
var checkbox = $a('//input[@id="OPT_DOME_SKILL10"]'); checkbox[0].checked = false; // 食料生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL11"]'); checkbox[0].checked = false; // 緊急食料輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL12"]'); checkbox[0].checked = false; // 農林対策
var checkbox = $a('//input[@id="OPT_DOME_SKILL13"]'); checkbox[0].checked = false; // xx農林技術
var checkbox = $a('//input[@id="OPT_DOME_SKILL14"]'); checkbox[0].checked = false; // 資源生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL15"]'); checkbox[0].checked = false; // 資源補給作戦
var checkbox = $a('//input[@id="OPT_DOME_SKILL16"]'); checkbox[0].checked = false; // 好景気
var checkbox = $a('//input[@id="OPT_DOME_SKILL17"]'); checkbox[0].checked = false; // xx富国論
var checkbox = $a('//input[@id="OPT_DOME_SKILL18"]'); checkbox[0].checked = false; // 殖産興業
var checkbox = $a('//input[@id="OPT_DOME_SKILL19"]'); checkbox[0].checked = false; // 戦時特需景気
var checkbox = $a('//input[@id="OPT_DOME_SKILL20"]'); checkbox[0].checked = false; // xx美玉歌舞
var checkbox = $a('//input[@id="OPT_DOME_SKILL21"]'); checkbox[0].checked = false; // xx恵風
var checkbox = $a('//input[@id="OPT_DOME_SKILL22"]'); checkbox[0].checked = false; // xx人選眼力
var checkbox = $a('//input[@id="OPT_DOME_SKILL23"]'); checkbox[0].checked = false; // 戦時設計
var checkbox = $a('//input[@id="OPT_DOME_SKILL24"]'); checkbox[0].checked = false; // 軍需相の辣腕
var checkbox = $a('//input[@id="OPT_DOME_SKILL25"]'); checkbox[0].checked = false; // 歩兵訓練
var checkbox = $a('//input[@id="OPT_DOME_SKILL26"]'); checkbox[0].checked = false; // 歩兵動員令
var checkbox = $a('//input[@id="OPT_DOME_SKILL27"]'); checkbox[0].checked = false; // 戦車兵訓練
var checkbox = $a('//input[@id="OPT_DOME_SKILL28"]'); checkbox[0].checked = false; // 陸軍演習
var checkbox = $a('//input[@id="OPT_DOME_SKILL29"]'); checkbox[0].checked = false; // 水兵訓練
var checkbox = $a('//input[@id="OPT_DOME_SKILL30"]'); checkbox[0].checked = false; // 艦艇増産
var checkbox = $a('//input[@id="OPT_DOME_SKILL31"]'); checkbox[0].checked = false; // 飛行兵訓練
var checkbox = $a('//input[@id="OPT_DOME_SKILL32"]'); checkbox[0].checked = false; // 航空機増産
// 食料生産拠点オプション
var checkbox = $a('//input[@id="OPT_KATEMURA"]'); checkbox[0].checked = false; // 食料生産拠点化
}
function InitMilitaryHome(){
// 航空基地
clearInifacBox();
var checkbox = $a('//input[@id="OPT_CHKBOX0"]'); checkbox[0].checked = false; // 拠点
var checkbox = $a('//input[@id="OPT_CHKBOX1"]'); checkbox[0].checked = false; // 製鉄所
var checkbox = $a('//input[@id="OPT_CHKBOX2"]'); checkbox[0].checked = false; // 製油所
var checkbox = $a('//input[@id="OPT_CHKBOX3"]'); checkbox[0].checked = false; // アルミニウム精錬所
var checkbox = $a('//input[@id="OPT_CHKBOX4"]'); checkbox[0].checked = true; // 食品加工工場
var checkbox = $a('//input[@id="OPT_CHKBOX5"]'); checkbox[0].checked = true; // 備蓄基地
var checkbox = $a('//input[@id="OPT_CHKBOX6"]'); checkbox[0].checked = true; // 銅像
var checkbox = $a('//input[@id="OPT_CHKBOX7"]'); checkbox[0].checked = true; // 武装研究所
var checkbox = $a('//input[@id="OPT_CHKBOX8"]'); checkbox[0].checked = true; // 装甲研究所
var checkbox = $a('//input[@id="OPT_CHKBOX9"]'); checkbox[0].checked = true; // 歩兵学校
var checkbox = $a('//input[@id="OPT_CHKBOX10"]'); checkbox[0].checked = false; // 陸軍士官学校
var checkbox = $a('//input[@id="OPT_CHKBOX11"]'); checkbox[0].checked = false; // 海軍兵学校
var checkbox = $a('//input[@id="OPT_CHKBOX12"]'); checkbox[0].checked = false; // 空軍士官学校
var checkbox = $a('//input[@id="OPT_CHKBOX13"]'); checkbox[0].checked = true; // 兵舎
var checkbox = $a('//input[@id="OPT_CHKBOX14"]'); checkbox[0].checked = false; // 工兵学校
var checkbox = $a('//input[@id="OPT_CHKBOX15"]'); checkbox[0].checked = false; // 貿易センター
var checkbox = $a('//input[@id="OPT_CHKBOX16"]'); checkbox[0].checked = true; // 飛行場
var checkbox = $a('//input[@id="OPT_CHKBOX17"]'); checkbox[0].checked = false; // 食品冷凍工場
var checkbox = $a('//input[@id="OPT_CHKBOX18"]'); checkbox[0].checked = false; // 化学コンビナート
var checkbox = $a('//input[@id="OPT_CHKBOX19"]'); checkbox[0].checked = false; // 技術研究所
var checkbox = $a('//input[@id="OPT_CHKBOX20"]'); checkbox[0].checked = true; // 駐屯地
var checkbox = $a('//input[@id="OPT_CHKBOX21"]'); checkbox[0].checked = true; // 航空基地
var checkbox = $a('//input[@id="OPT_CHKBOX22"]'); checkbox[0].checked = true; // レーダーサイト
var textbox = $a('//input[@id="OPT_CHKBOXLV0"]'); textbox[0].value = 0; // 拠点
var textbox = $a('//input[@id="OPT_CHKBOXLV1"]'); textbox[0].value = 0; // 製鉄所
var textbox = $a('//input[@id="OPT_CHKBOXLV2"]'); textbox[0].value = 0; // 製油所
var textbox = $a('//input[@id="OPT_CHKBOXLV3"]'); textbox[0].value = 0; // アルミニウム精錬所
var textbox = $a('//input[@id="OPT_CHKBOXLV4"]'); textbox[0].value = 5; // 食品加工工場
var textbox = $a('//input[@id="OPT_CHKBOXLV5"]'); textbox[0].value = 1; // 備蓄基地
var textbox = $a('//input[@id="OPT_CHKBOXLV6"]'); textbox[0].value = 7; // 銅像
var textbox = $a('//input[@id="OPT_CHKBOXLV7"]'); textbox[0].value = 5; // 武装研究所
var textbox = $a('//input[@id="OPT_CHKBOXLV8"]'); textbox[0].value = 7; // 装甲研究所
var textbox = $a('//input[@id="OPT_CHKBOXLV9"]'); textbox[0].value = 3; // 歩兵学校
var textbox = $a('//input[@id="OPT_CHKBOXLV10"]'); textbox[0].value = 0; // 陸軍士官学校
var textbox = $a('//input[@id="OPT_CHKBOXLV11"]'); textbox[0].value = 0; // 海軍兵学校
var textbox = $a('//input[@id="OPT_CHKBOXLV12"]'); textbox[0].value = 0; // 空軍士官学校
var textbox = $a('//input[@id="OPT_CHKBOXLV13"]'); textbox[0].value = 15; // 兵舎
var textbox = $a('//input[@id="OPT_CHKBOXLV14"]'); textbox[0].value = 0; // 工兵学校
var textbox = $a('//input[@id="OPT_CHKBOXLV15"]'); textbox[0].value = 0; // 貿易センター
var textbox = $a('//input[@id="OPT_CHKBOXLV16"]'); textbox[0].value = 5; // 飛行場
var textbox = $a('//input[@id="OPT_CHKBOXLV17"]'); textbox[0].value = 0; // 食品冷凍工場
var textbox = $a('//input[@id="OPT_CHKBOXLV18"]'); textbox[0].value = 0; // 化学コンビナート
var textbox = $a('//input[@id="OPT_CHKBOXLV19"]'); textbox[0].value = 0; // 技術研究所
var textbox = $a('//input[@id="OPT_CHKBOXLV20"]'); textbox[0].value = 8; // 駐屯地
var textbox = $a('//input[@id="OPT_CHKBOXLV21"]'); textbox[0].value = 10; // 航空基地
var textbox = $a('//input[@id="OPT_CHKBOXLV22"]'); textbox[0].value = 8; // レーダーサイト
// 内政設定
var checkbox = $a('//input[@id="OPT_DOME_SKILL1"]'); checkbox[0].checked = false; // 鉄生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL2"]'); checkbox[0].checked = false; // 緊急鉄鉱石輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL3"]'); checkbox[0].checked = false; // 海軍戦力増強
var checkbox = $a('//input[@id="OPT_DOME_SKILL4"]'); checkbox[0].checked = false; // 石油生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL5"]'); checkbox[0].checked = false; // 緊急石油輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL6"]'); checkbox[0].checked = false; // 陸軍戦力増強
var checkbox = $a('//input[@id="OPT_DOME_SKILL7"]'); checkbox[0].checked = false; // 軽金属生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL8"]'); checkbox[0].checked = false; // 緊急軽金属輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL9"]'); checkbox[0].checked = false; // 空軍戦力増強
var checkbox = $a('//input[@id="OPT_DOME_SKILL10"]'); checkbox[0].checked = false; // 食料生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL11"]'); checkbox[0].checked = false; // 緊急食料輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL12"]'); checkbox[0].checked = false; // 農林対策
var checkbox = $a('//input[@id="OPT_DOME_SKILL13"]'); checkbox[0].checked = false; // xx農林技術
var checkbox = $a('//input[@id="OPT_DOME_SKILL14"]'); checkbox[0].checked = false; // 資源生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL15"]'); checkbox[0].checked = false; // 資源補給作戦
var checkbox = $a('//input[@id="OPT_DOME_SKILL16"]'); checkbox[0].checked = false; // 好景気
var checkbox = $a('//input[@id="OPT_DOME_SKILL17"]'); checkbox[0].checked = false; // xx富国論
var checkbox = $a('//input[@id="OPT_DOME_SKILL18"]'); checkbox[0].checked = false; // 殖産興業
var checkbox = $a('//input[@id="OPT_DOME_SKILL19"]'); checkbox[0].checked = false; // 戦時特需景気
var checkbox = $a('//input[@id="OPT_DOME_SKILL20"]'); checkbox[0].checked = false; // xx美玉歌舞
var checkbox = $a('//input[@id="OPT_DOME_SKILL21"]'); checkbox[0].checked = false; // xx恵風
var checkbox = $a('//input[@id="OPT_DOME_SKILL22"]'); checkbox[0].checked = false; // xx人選眼力
}
function InitRiceParadise(){
// 食料生産拠点
clearInifacBox();
var checkbox = $a('//input[@id="OPT_CHKBOX0"]'); checkbox[0].checked = true; // 拠点
var checkbox = $a('//input[@id="OPT_CHKBOX4"]'); checkbox[0].checked = true; // 食品加工工場
var checkbox = $a('//input[@id="OPT_CHKBOX5"]'); checkbox[0].checked = true; // 備蓄基地
var checkbox = $a('//input[@id="OPT_CHKBOX6"]'); checkbox[0].checked = true; // 銅像
var textbox = $a('//input[@id="OPT_CHKBOXLV0"]'); textbox[0].value = 10; // 拠点
var textbox = $a('//input[@id="OPT_CHKBOXLV4"]'); textbox[0].value = 15; // 食品加工工場
var textbox = $a('//input[@id="OPT_CHKBOXLV5"]'); textbox[0].value = 20; // 備蓄基地
var textbox = $a('//input[@id="OPT_CHKBOXLV6"]'); textbox[0].value = 10; // 銅像
// 内政設定
var checkbox = $a('//input[@id="OPT_DOME_SKILL1"]'); checkbox[0].checked = false; // 鉄生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL2"]'); checkbox[0].checked = false; // 緊急鉄鉱石輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL3"]'); checkbox[0].checked = false; // 海軍戦力増強
var checkbox = $a('//input[@id="OPT_DOME_SKILL4"]'); checkbox[0].checked = false; // 石油生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL5"]'); checkbox[0].checked = false; // 緊急石油輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL6"]'); checkbox[0].checked = false; // 陸軍戦力増強
var checkbox = $a('//input[@id="OPT_DOME_SKILL7"]'); checkbox[0].checked = false; // 軽金属生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL8"]'); checkbox[0].checked = false; // 緊急軽金属輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL9"]'); checkbox[0].checked = false; // 空軍戦力増強
var checkbox = $a('//input[@id="OPT_DOME_SKILL10"]'); checkbox[0].checked = false; // 食料生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL11"]'); checkbox[0].checked = false; // 緊急食料輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL12"]'); checkbox[0].checked = false; // 農林対策
var checkbox = $a('//input[@id="OPT_DOME_SKILL13"]'); checkbox[0].checked = false; // xx農林技術
var checkbox = $a('//input[@id="OPT_DOME_SKILL14"]'); checkbox[0].checked = false; // 資源生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL15"]'); checkbox[0].checked = false; // 資源補給作戦
var checkbox = $a('//input[@id="OPT_DOME_SKILL16"]'); checkbox[0].checked = false; // 好景気
var checkbox = $a('//input[@id="OPT_DOME_SKILL17"]'); checkbox[0].checked = false; // xx富国論
var checkbox = $a('//input[@id="OPT_DOME_SKILL18"]'); checkbox[0].checked = false; // 殖産興業
var checkbox = $a('//input[@id="OPT_DOME_SKILL19"]'); checkbox[0].checked = false; // 戦時特需景気
var checkbox = $a('//input[@id="OPT_DOME_SKILL20"]'); checkbox[0].checked = false; // xx美玉歌舞
var checkbox = $a('//input[@id="OPT_DOME_SKILL21"]'); checkbox[0].checked = false; // xx恵風
var checkbox = $a('//input[@id="OPT_DOME_SKILL22"]'); checkbox[0].checked = false; // xx人選眼力
// 食料生産拠点オプション
var checkbox = $a('//input[@id="OPT_KATEMURA"]'); checkbox[0].checked = true; // 食料生産拠点化
}
function InitResVillage(){
// 資源生産拠点
clearInifacBox();
var checkbox = $a('//input[@id="OPT_CHKBOX0"]'); checkbox[0].checked = true; // 拠点
var checkbox = $a('//input[@id="OPT_CHKBOX1"]'); checkbox[0].checked = true; // 製鉄所
var checkbox = $a('//input[@id="OPT_CHKBOX2"]'); checkbox[0].checked = true; // 製油所
var checkbox = $a('//input[@id="OPT_CHKBOX3"]'); checkbox[0].checked = true; // アルミニウム精錬所
var checkbox = $a('//input[@id="OPT_CHKBOX4"]'); checkbox[0].checked = true; // 食品加工工場
var checkbox = $a('//input[@id="OPT_CHKBOX5"]'); checkbox[0].checked = true; // 備蓄基地
var checkbox = $a('//input[@id="OPT_CHKBOX6"]'); checkbox[0].checked = true; // 銅像
var textbox = $a('//input[@id="OPT_CHKBOXLV0"]'); textbox[0].value = 10;
var textbox = $a('//input[@id="OPT_CHKBOXLV1"]'); textbox[0].value = 13;
var textbox = $a('//input[@id="OPT_CHKBOXLV2"]'); textbox[0].value = 13;
var textbox = $a('//input[@id="OPT_CHKBOXLV3"]'); textbox[0].value = 13;
var textbox = $a('//input[@id="OPT_CHKBOXLV4"]'); textbox[0].value = 15;
var textbox = $a('//input[@id="OPT_CHKBOXLV5"]'); textbox[0].value = 20;
var textbox = $a('//input[@id="OPT_CHKBOXLV6"]'); textbox[0].value = 10;
// 内政設定
var checkbox = $a('//input[@id="OPT_DOME_SKILL1"]'); checkbox[0].checked = false; // 鉄生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL2"]'); checkbox[0].checked = false; // 緊急鉄鉱石輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL3"]'); checkbox[0].checked = false; // 海軍戦力増強
var checkbox = $a('//input[@id="OPT_DOME_SKILL4"]'); checkbox[0].checked = false; // 石油生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL5"]'); checkbox[0].checked = false; // 緊急石油輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL6"]'); checkbox[0].checked = false; // 陸軍戦力増強
var checkbox = $a('//input[@id="OPT_DOME_SKILL7"]'); checkbox[0].checked = false; // 軽金属生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL8"]'); checkbox[0].checked = false; // 緊急軽金属輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL9"]'); checkbox[0].checked = false; // 空軍戦力増強
var checkbox = $a('//input[@id="OPT_DOME_SKILL10"]'); checkbox[0].checked = false; // 食料生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL11"]'); checkbox[0].checked = false; // 緊急食料輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL12"]'); checkbox[0].checked = false; // 農林対策
var checkbox = $a('//input[@id="OPT_DOME_SKILL13"]'); checkbox[0].checked = false; // xx農林技術
var checkbox = $a('//input[@id="OPT_DOME_SKILL14"]'); checkbox[0].checked = false; // 資源生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL15"]'); checkbox[0].checked = false; // 資源補給作戦
var checkbox = $a('//input[@id="OPT_DOME_SKILL16"]'); checkbox[0].checked = false; // 好景気
var checkbox = $a('//input[@id="OPT_DOME_SKILL17"]'); checkbox[0].checked = false; // xx富国論
var checkbox = $a('//input[@id="OPT_DOME_SKILL18"]'); checkbox[0].checked = false; // 殖産興業
var checkbox = $a('//input[@id="OPT_DOME_SKILL19"]'); checkbox[0].checked = false; // 戦時特需景気
var checkbox = $a('//input[@id="OPT_DOME_SKILL20"]'); checkbox[0].checked = false; // xx美玉歌舞
var checkbox = $a('//input[@id="OPT_DOME_SKILL21"]'); checkbox[0].checked = false; // xx恵風
var checkbox = $a('//input[@id="OPT_DOME_SKILL22"]'); checkbox[0].checked = false; // xx人選眼力
// 食料生産拠点オプション
var checkbox = $a('//input[@id="OPT_KATEMURA"]'); checkbox[0].checked = false; // 食料生産拠点化
}
function InitMilitarySite(){
//軍事拠点
clearInifacBox();
var checkbox = $a('//input[@id="OPT_CHKBOX0"]'); checkbox[0].checked = true; // 拠点
var checkbox = $a('//input[@id="OPT_CHKBOX10"]'); checkbox[0].checked = true; // 陸軍士官学校
var checkbox = $a('//input[@id="OPT_CHKBOX11"]'); checkbox[0].checked = true; // 海軍兵学校
var checkbox = $a('//input[@id="OPT_CHKBOX12"]'); checkbox[0].checked = true; // 空軍士官学校
var checkbox = $a('//input[@id="OPT_CHKBOX13"]'); checkbox[0].checked = true; // 工兵学校
var checkbox = $a('//input[@id="OPT_CHKBOX14"]'); checkbox[0].checked = true; // 兵舎
var checkbox = $a('//input[@id="OPT_CHKBOX20"]'); checkbox[0].checked = true; // 駐屯地
var textbox = $a('//input[@id="OPT_CHKBOXLV0"]'); textbox[0].value = 10;
// 内政設定
var checkbox = $a('//input[@id="OPT_DOME_SKILL1"]'); checkbox[0].checked = false; // 鉄生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL2"]'); checkbox[0].checked = false; // 緊急鉄鉱石輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL3"]'); checkbox[0].checked = false; // 海軍戦力増強
var checkbox = $a('//input[@id="OPT_DOME_SKILL4"]'); checkbox[0].checked = false; // 石油生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL5"]'); checkbox[0].checked = false; // 緊急石油輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL6"]'); checkbox[0].checked = false; // 陸軍戦力増強
var checkbox = $a('//input[@id="OPT_DOME_SKILL7"]'); checkbox[0].checked = false; // 軽金属生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL8"]'); checkbox[0].checked = false; // 緊急軽金属輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL9"]'); checkbox[0].checked = false; // 空軍戦力増強
var checkbox = $a('//input[@id="OPT_DOME_SKILL10"]'); checkbox[0].checked = false; // 食料生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL11"]'); checkbox[0].checked = false; // 緊急食料輸送
var checkbox = $a('//input[@id="OPT_DOME_SKILL12"]'); checkbox[0].checked = false; // 農林対策
var checkbox = $a('//input[@id="OPT_DOME_SKILL13"]'); checkbox[0].checked = false; // xx農林技術
var checkbox = $a('//input[@id="OPT_DOME_SKILL14"]'); checkbox[0].checked = false; // 資源生産増加
var checkbox = $a('//input[@id="OPT_DOME_SKILL15"]'); checkbox[0].checked = false; // 資源補給作戦
var checkbox = $a('//input[@id="OPT_DOME_SKILL16"]'); checkbox[0].checked = false; // 好景気
var checkbox = $a('//input[@id="OPT_DOME_SKILL17"]'); checkbox[0].checked = false; // xx富国論
var checkbox = $a('//input[@id="OPT_DOME_SKILL18"]'); checkbox[0].checked = false; // 殖産興業
var checkbox = $a('//input[@id="OPT_DOME_SKILL19"]'); checkbox[0].checked = false; // 戦時特需景気
var checkbox = $a('//input[@id="OPT_DOME_SKILL20"]'); checkbox[0].checked = false; // xx美玉歌舞
var checkbox = $a('//input[@id="OPT_DOME_SKILL21"]'); checkbox[0].checked = false; // xx恵風
var checkbox = $a('//input[@id="OPT_DOME_SKILL22"]'); checkbox[0].checked = false; // xx人選眼力
}
// 残す資源量のクリア
function clearInitRemainingRes(){
var textbox = $a('//input[@id="OPT_BLD_WOOD"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BLD_STONE"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BLD_IRON"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BLD_RICE"]'); textbox[0].value = 0;
}
// 武装・装甲強化レベルのクリア
function clearInitArmsArmor(){
var textbox = $a('//input[@id="OPT_BK_LV1"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BK_LV8"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BK_LV3"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BK_LV9"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BK_LV5"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BK_LV4"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BK_LV7"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BK_LV12"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BK_LV13"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BG_LV1"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BG_LV8"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BG_LV3"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BG_LV9"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BG_LV5"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BG_LV4"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BG_LV7"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BG_LV10"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BG_LV11"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BG_LV12"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_BG_LV13"]'); textbox[0].value = 0;
}
// 造兵時作成単位初期化
function clearInitSoldier(){
var textbox = $a('//input[@id="OPT_SOLDIER_ADD1"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_SOLDIER_ADD8"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_SOLDIER_ADD3"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_SOLDIER_ADD5"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_SOLDIER_ADD9"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_SOLDIER_ADD4"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_SOLDIER_ADD7"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_SOLDIER_ADD10"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_SOLDIER_ADD11"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_SOLDIER_ADD12"]'); textbox[0].value = 0;
var textbox = $a('//input[@id="OPT_SOLDIER_ADD13"]'); textbox[0].value = 0;
}
//建設対象施設表示HTML削除
function deleteInifacHtml0() {
var elem = document.getElementById("ABfacContainer0");
if(elem == undefined) return;
document.body.removeChild(document.getElementById("ABfacContainer0"));
}
//建設対象施設表示HTML削除
function deleteInifacFrameHtml0() {
var elem = document.getElementById("ABfacContainer0");
if(elem == undefined) return;
document.body.removeChild(document.getElementById("ABfacContainer0"));
}
//建設対象施設表示HTML削除
function deleteInifacHtml() {
var elem = document.getElementById("ABfacContainer");
if(elem == undefined) return;
document.body.removeChild(document.getElementById("ABfacContainer"));
}
//建設対象施設表示HTML削除
function deleteInifacFrameHtml() {
var elem = document.getElementById("ABfacContainer");
if(elem == undefined) return;
document.body.removeChild(document.getElementById("ABfacContainer"));
}
//建設対象施設表示HTML削除
function deleteInifacHtml2() {
var elem = document.getElementById("ABfacContainer2");
if(elem == undefined) return;
document.body.removeChild(document.getElementById("ABfacContainer2"));
}
//建設対象施設表示HTML削除
function deleteInifacFrameHtml2() {
var elem = document.getElementById("ABfacContainer2");
if(elem == undefined) return;
document.body.removeChild(document.getElementById("ABfacContainer2"));
}
//ステイタス取得HTML追加
function addIniBuilderHtml() {
// add 2011.09.27 設定画面移動
var popupLeft = GM_getValue(HOST+PGNAME + "_popup_left", 150);
var popupTop = GM_getValue(HOST+PGNAME + "_popup_top", 150);
if(popupLeft < 0) popupLeft = 0;
if(popupTop < 0) popupTop = 0;
// end
// 表示コンテナ作成
var ABContainer = document.createElement("div");
ABContainer.id = "ABContainer";
ABContainer.style.position = "absolute";
ABContainer.style.backgroundColor = COLOR_FRAME;
ABContainer.style.opacity= 1.0; // 透明度
ABContainer.style.border = "solid 2px #000000";
ABContainer.style.MozBorderRadius = "4px"; // 角丸
ABContainer.style.top = popupTop + "px";
ABContainer.style.left = popupLeft + "px";
ABContainer.style.fontSize = "10px";
ABContainer.style.padding = "4px";
ABContainer.style.zIndex = 999;
document.body.appendChild(ABContainer);
$e(ABContainer, "mousedown", function(event){
if( event.target != $("ABContainer")) {return false;}
g_MD="ABContainer";
g_MX=event.pageX-parseInt(this.style.left,10);
g_MY=event.pageY-parseInt(this.style.top,10);
event.preventDefault();
});
$e(document, "mousemove", function(event){
if(g_MD != "ABContainer") return true;
var ABContainer = $("ABContainer");
if( !ABContainer ) return true;
var popupLeft = event.pageX - g_MX;
var popupTop = event.pageY - g_MY;
ABContainer.style.left = popupLeft + "px";
ABContainer.style.top = popupTop + "px";
//ポップアップ位置を永続保存
GM_setValue(HOST + PGNAME + "_popup_left", popupLeft);
GM_setValue(HOST + PGNAME + "_popup_top", popupTop);
});
$e(document, "mouseup", function(event){ g_MD=""; });
//拠点情報のロード
var villages = loadVillages();
// タイトル+バージョン
var title = document.createElement("span");
title.style.color = "#FFFFFF";
title.style.font = 'bold 120% "MS ゴシック"';
title.style.margin = "2px";
title.innerHTML = "Auto Builder ";
var version = document.createElement("span");
version.style.color = COLOR_TITLE;
version.style.font = '96% "MS ゴシック"';
version.style.margin = "2px";
version.innerHTML = " Ver." + VERSION + (ADVANCE?"Advanced mode":"");
// var storageLimit = document.createElement("span");
// storageLimit.style.color = "#FFFFFF";
// storageLimit.style.font = '110% "MS Pゴシック"';
// storageLimit.style.margin = "2px";
// storageLimit.innerHTML = "資源保持上限(取引量) : " + SetPrice(Math.floor(parseInt( $("rice_max").innerHTML, 10 ) * 0.95)) + " ( " + SetPrice(Math.floor(parseInt( $("rice_max").innerHTML, 10 ) * 0.05)) +" )";
ABContainer.appendChild(title);
// ABContainer.appendChild(storageLimit);
ABContainer.appendChild(version);
// ボタンエリア
var ButtonBox = document.createElement("div");
ButtonBox.style.border ="solid 0px"; // 通常 0px チェック時 1px
ButtonBox.style.margin = "2px";
ButtonBox.style.padding = "0px";
ABContainer.appendChild(ButtonBox);
// 巡回中/停止中ボタン
var Button1 = document.createElement("span");
var AutoFlg = cloadData("AutoFlg", true, true, true);
if(AutoFlg == true) { // 初回時対応
ccreateButton(Button1, "巡回中", "巡回停止します",
function() {
csaveData("AutoFlg", false, true, true);
location.reload();
},48);
} else {
ccreateButton(Button1, "停止中", "巡回開始します",
function() {
csaveData("AutoFlg", true, true, true);
location.reload();
},48);
}
ButtonBox.appendChild(Button1);
// 巡回時間プルダウン
var typeDiv = document.createElement("span");
typeDiv.title = "全ての拠点が指定時間×拠点数以内に巡回されます";
ButtonBox.appendChild(typeDiv);
var caption = document.createElement("span");
caption.style.verticalAlign = "middle";
// caption.innerHTML = "巡回 ";
caption.style.color = "#FFFFFF";
typeDiv.appendChild(caption);
var selectBox = document.createElement("select");
selectBox.id = "dispMode";
selectBox.style.width = "80px";
selectBox.addEventListener("change",
function() {
var RoundTime = document.getElementById("dispMode").value;
csaveData("RoundTime", RoundTime, true, true);
// GM_setValue(HOST+PGNAME+"OPT_ROUND_TIME1" , document.getElementById("dispMode").value );
// OPT_ROUND_TIME1 = document.getElementById("dispMode").value
}, true);
typeDiv.appendChild(selectBox);
var options = new Array(
new Array("平均30sec ", 30),
new Array("平均40sec ", 40),
new Array("平均50sec ", 50),
new Array("平均60sec ", 60),
new Array("平均70sec ", 70),
new Array("平均80sec ", 80),
new Array("平均90sec ", 90),
new Array("平均100sec", 100),
new Array("平均120sec", 120),
new Array("平均150sec", 150),
new Array("平均180sec", 180),
new Array("平均210sec", 210),
new Array("平均240sec", 240)
);
for(var i = 0; i < options.length; i++) {
var elem = document.createElement("option");
elem.innerHTML = options[i][0];
elem.value = options[i][1];
selectBox.appendChild(elem);
}
var RoundTime = cloadData("RoundTime", ROUND_TIME_DEFAULT, true, true);
if( RoundTime < ROUND_TIME_LEAST ) { RoundTime = ROUND_TIME_LEAST; }
selectBox.value = RoundTime;
var Padding2 = document.createElement("span");
Padding2.innerHTML = "    完了表示 ";
Padding2.style.color = "#FFFFFF";
ButtonBox.appendChild(Padding2);
// 過去ログ表示チェックボックス
var spanLogLock = document.createElement("span");
spanLogLock.title = "完了したイベントも表示します";
ButtonBox.appendChild(spanLogLock);
var boxLogLock = document.createElement("input");
boxLogLock.type = "checkbox";
boxLogLock.style.verticalAlign = "middle";
boxLogLock.checked = getLogMode();
boxLogLock.addEventListener("change",
function() {
changeLogMode(this.checked);
// btnLogClear.disabled = !this.checked;
redrawInfoWindow(true);
setIndicatorReady();
}, true);
ButtonBox.appendChild(boxLogLock);
// var spanLogLock2 = document.createElement("span");
// spanLogLock2.style.verticalAlign = "middle";
// spanLogLock2.innerHTML = "";
// spanLogLock2.style.color = "#FFFFFF";
// spanLogLock.appendChild(spanLogLock2);
// 済みイベント確認ボタン
var Button2 = document.createElement("span");
var btnLogClear = ccreateButton(Button2, "一括消去", "完了済の情報を削除します",
function() {
confirmTimer();
redrawInfoWindow(true);
setIndicatorReady();
}, 56);
btnLogClear.disabled = !getLogMode();
ButtonBox.appendChild(Button2);
var Padding3 = document.createElement("span");
Padding3.style.color = "#FFFFFF";
Padding3.innerHTML = "   設定";
ButtonBox.appendChild(Padding3);
// 設定ボタン
var Button5 = document.createElement("span");
ccreateButton(Button5, "資源", "資源に関する設定を行います",
function() {
openInifacBox0();
},36);
ButtonBox.appendChild(Button5);
var Padding4 = document.createElement("span");
Padding4.innerHTML = "               ";
ButtonBox.appendChild(Padding4);
// 常駐チェックボックス
var staySpan = document.createElement("span");
staySpan.title = "常にウインドウを表示します / ウインドウを閉じたまま動作します";
ButtonBox.appendChild(staySpan);
var stayBox = document.createElement("input");
stayBox.type = "checkbox";
stayBox.style.verticalAlign = "middle";
stayBox.checked = getStayMode();
stayBox.addEventListener("change",
function() {changeStayMode(this.checked)}, true);
ButtonBox.appendChild(stayBox);
var stayCap = document.createElement("span");
stayCap.style.verticalAlign = "middle";
stayCap.innerHTML = "常時表示 ";
stayCap.style.color = "#FFFFFF";
staySpan.appendChild(stayCap);
// 閉じるボタン
var Button3 = document.createElement("span");
ccreateButton(Button3, "閉", "一時的にウインドウを閉じます",
function() {
closeIniBuilderBox();
},28);
ButtonBox.appendChild(Button3);
// インジケーターエリア
var IndicatorBox = document.createElement("div");
IndicatorBox.style.border ="solid 0px"; // 通常 0px チェック時 1px
IndicatorBox.style.margin = "2px";
IndicatorBox.style.padding = "2px";
// インジケーター
var tblIndicator = document.createElement("table");
tblIndicator.style.border ="0px";
{
var tr = document.createElement("tr");
tr.style.fontFamily = "MS ゴシック";
tr.style.border = "solid 1px black";
// tr.style.padding = "3px";
tr.style.width = INDICATOR_MAX +"px";
tr.style.hight = "10px";
var td1 = document.createElement("td");
td1.style.backgroundColor = COLOR_INDICATOR_PROGRESS;
// td1.style.border = "solid 1px black";
td1.style.padding = "3px";
td1.style.width = INDICATOR_MAX +"px";
td1.style.hight = "10px";
tr.appendChild(td1);
tblIndicator.appendChild(tr);
g_resIndicator = td1;
}
IndicatorBox.appendChild(tblIndicator);
ABContainer.appendChild(IndicatorBox);
// 取引用貿易表示
// var TradeCenterList = cloadData("TradeCenterList","[]",true,true);
// if(TradeCenterList.length != 0) {
// TradeCenterList.sort( function(a,b) { if(a[1] < b[1]) return 1; if(a[1] > b[1]) return -1; return 0;});
// var villages = loadVillages();
// var nextIndex = -1;
// for(var i=0; i<villages.length;i++){
// if(TradeCenterList[0].xyVillage == villages[i][IDX_XY]){
// nextIndex = i;
// break;
// }
// }
// if(nextIndex != -1) {
// var ShopBox = document.createElement("div");
// ShopBox.style.color = "#EE9090";
// ShopBox.style.backgroundColor = "#000000";
// ShopBox.style.verticalAlign = "middle";
// ShopBox.innerHTML = " 自動取引用貿易センター : " + villages[nextIndex][IDX_BASE_NAME] + " (" + villages[nextIndex][IDX_XY] + ") 貿易センターLv : " + TradeCenterList[0].lv;
// ABContainer.appendChild(ShopBox);
// }
// }
// 拠点毎ログと設定ボタンの作成
var tbl = document.createElement("table");
tbl.style.border ="0px";
if((villages.length == 0) || (villages[0][IDX_URL] == "")) {
//拠点情報が無い場合、初回起動画面を表示
var tr = document.createElement("tr");
var td = document.createElement("td");
td.style.padding = "3px";
// td.style.border = "solid 2px black";
tr.style.fontFamily = "MS ゴシック";
tr.appendChild(td);
tbl.appendChild(tr);
var msg = document.createElement("span");
msg.style.fontSize = "15px";
msg.style.margin = "3px";
msg.style.color = "#FFFFFF";
msg.style.font = 'bold 120% "MS ゴシック"';
msg.innerHTML = "<br>" +
"  インストールありがとうございます。<br>" +
"  まずは、プロフィール画面を開いて<br>" +
"  拠点情報を取得してください。<br> ";
td.appendChild(msg);
} else {
for(var i = 0; i < villages.length; i++) {
var vname = villages[i][IDX_BASE_NAME];
var fColor = "#F9C471";
var tr = document.createElement("tr");
var td = document.createElement("td");
tr.style.fontFamily = "MS ゴシック";
td.style.padding = "2px";
td.style.border = "solid 1px black";
td.style.backgroundColor = COLOR_INFOBOX_TITLE;
tr.appendChild(td);
tbl.appendChild(tr);
// 現在と次巡回予定の拠点枠内背景色を変更
if(g_xyNowVillage == villages[i][IDX_XY]) {
td.style.backgroundColor = COLOR_INFOBOX_NOW;
}
if(g_xyNextVillage == villages[i][IDX_XY]) {
td.style.backgroundColor = COLOR_INFOBOX_NEXT;
}
// 各拠点用ログ表示枠・設定ボタン枠
if(villages[i][IDX_BASE_NAME] != ""){
var td00 = document.createElement("div");
td00.style.width = "110px";
// 巡回可否チェックボックス
ccreateCheckBox0(td00, "OPT_CHKBOX_AVC_"+i, loadAVCBox2(i), villages[i][IDX_BASE_NAME],"チェックを外すと定時巡回を行いません",0 ,villages);
var opfacLink = document.createElement("text");
opfacLink.style.padding = "3px";
td00.appendChild(opfacLink);
// 拠点名
var villageText = villages[i][IDX_BASE_NAME];
if(villages[i][IDX_URL] != "") {
villageText = "<a href=" + villages[i][IDX_URL] +
" style='color:#344665; text-decoration:none'>" +
villageText + "</a>";
}
//前回巡回時刻
var textVisit = "<span style='color:#7486A5'>";
if( villages[i][IDX_VISIT] ) {
textVisit += "巡回:" + villages[i][IDX_VISIT].replace(/^[0-9]{4}\//, "");
} else {
textVisit += "  未巡回";
}
textVisit += "</span>";
villageText = villageText + "<br />" + textVisit;
opfacLink.innerHTML = villageText;
opfacLink.style.textDecoration = "none";
td.appendChild(td00);
tr.appendChild(td);
// ログ表示枠
var actionsTd = document.createElement("td");
actionsTd.style.backgroundColor = COLOR_BACK;
actionsTd.style.border = "solid 1px black";
actionsTd.style.padding = "3px";
actionsTd.style.width = "360px";
tr.appendChild(actionsTd);
var actions = sortAction(villages[i][IDX_ACTIONS]);
var nowTime = new Date();
for(var j = 0; j < actions.length; j++) {
// 完了イベントは表示しない
if(!getLogMode() && (new Date(actions[j][IDX2_TIME]) < nowTime)) {
continue;
}
var actionDiv = createActionDiv(actions[j], nowTime, villages[i][IDX_XY]);
if(!actionDiv) continue;
// 完了済みフラグのチェック
actionsTd.appendChild(actionDiv);
}
// 第1ボタン枠
var settingTd = document.createElement("td");
settingTd.style.backgroundColor = COLOR_INFOBOX_TITLE;
settingTd.style.border = "solid 1px black";
settingTd.style.padding = "3px";
settingTd.style.width = "20px";
tr.appendChild(settingTd);
if((villages[i][IDX_RESERVE] == RESERVE_DELETED) || (villages[i][IDX_RESERVE] == RESERVE_ABORT)) {
// 削除済み・建設失敗は、今後拠点が建設されない(される予定がない)為、設定ボタンを表示しない
} else {
// 建設設定ボタン
var btn1 = document.createElement("input");
btn1.style.padding = "1px";
btn1.type = "button";
btn1.value = "建設";
btn1.title = "建設設定画面を表示します";
settingTd.appendChild(document.createTextNode(" "));
settingTd.appendChild(btn1);
settingTd.appendChild(document.createTextNode(" "));
settingTd.setAttribute('xyVillage', villages[i][IDX_XY]);
settingTd.addEventListener("click", function() {
var xyVillage = this.getAttribute('xyVillage');
openInifacBox(xyVillage);
}, true);
}
// 第2ボタン枠
var settingTd2 = document.createElement("td");
settingTd2.style.backgroundColor = COLOR_INFOBOX_TITLE;
settingTd2.style.border = "solid 1px black";
settingTd2.style.padding = "3px";
settingTd2.style.width = "20px";
tr.appendChild(settingTd2);
var btn2 = document.createElement("input");
btn2.style.padding = "1px";
btn2.type = "button";
settingTd2.appendChild(document.createTextNode(" "));
settingTd2.appendChild(btn2);
settingTd2.appendChild(document.createTextNode(" "));
settingTd2.setAttribute('xyVillage', villages[i][IDX_XY]);
if((villages[i][IDX_RESERVE] == RESERVE_DELETED) || (villages[i][IDX_RESERVE] == RESERVE_ABORT)) {
settingTd2.style.backgroundColor = COLOR_INFOBOX_NOTICE;
//確認ボタン
btn2.value = "確認";
btn2.title = "確認済にして削除します";
settingTd2.addEventListener("click", function() {
var xyVillage = this.getAttribute('xyVillage');
canselReserve(xyVillage);
}, true);
} else
if((villages[i][IDX_RESERVE] == RESERVE_FRONTBASE1) || (villages[i][IDX_RESERVE] == RESERVE_SUPPLYBASE1)) {
settingTd2.style.backgroundColor = COLOR_INFOBOX_NOTICE;
// 予約取り消しボタン
btn2.value = "取消";
btn2.title = "予約を取消します";
settingTd2.addEventListener("click", function() {
var xyVillage = this.getAttribute('xyVillage');
canselReserve(xyVillage);
}, true);
} else
if((villages[i][IDX_RESERVE] == RESERVE_FRONTBASE2) || (villages[i][IDX_RESERVE] == RESERVE_SUPPLYBASE2)) {
settingTd2.style.backgroundColor = COLOR_INFOBOX_NOTICE;
// 建設中止ボタン
btn2.value = "中止";
btn2.title = "建設はキャンセルできません";
btn2.disabled = true;
settingTd2.addEventListener("click", function() {
// var xyVillage = this.getAttribute('xyVillage');
// canselReserve(xyVillage);
}, true);
} else {
// 内政設定ボタン
btn2.value = "内政";
btn2.title = "内政設定画面を表示します";
settingTd2.addEventListener("click", function() {
var xyVillage = this.getAttribute('xyVillage');
openInifacBox2(xyVillage);
}, true);
}
}
}
}
ABContainer.appendChild(tbl);
function canselReserve(xy)
{
var oldVillages = loadVillages();
var newVillages = new Array();
var flgDelete = false;
for(var i=0; i<oldVillages.length; i++) {
if((oldVillages[i][IDX_XY] == xy) && (oldVillages[i][IDX_RESERVE] != RESERVE_NONE)) {
// 削除
flgDelete = true;
continue;
}
var newVil = oldVillages[i];
newVillages.push(newVil);
}
if( flgDelete ) {
saveVillages(newVillages);
//更新後内容で表示
redrawInfoWindow(true);
setIndicatorReady();
}
}
//各ログ行生成
function createActionDiv(action, nowTime, xyBase) {
var type = action[IDX2_TYPE].charAt(0);
// if(getDispMode(type) == DISP_MODE_NONE) {
// return undefined;
// }
// 背景色:削除ケース
var actionDiv = document.createElement("div");
if( action[IDX2_DELETE] == "true" ) {
actionDiv.style.backgroundColor = COLOR_LOG_DELETE;
}
// 作業完了背景色
var actionTime = new Date(action[IDX2_TIME]);
if(actionTime < nowTime) {
actionDiv.style.backgroundColor = COLOR_LOG_PAST;
}
//作業完了時刻
var textSpan = document.createElement("span");
var text = "";
text += action[IDX2_TIME].replace(/^[0-9]{4}\//, "");
// if(getDispWaitTime()) {
var finishTime = new Date(action[IDX2_TIME]);
text += " (あと" + generateWaitTimeString(finishTime, nowTime) + ")";
// }
text += " ";
text += action[IDX2_STATUS];
textSpan.innerHTML = text;
actionDiv.appendChild(textSpan);
//作業完了行の個別削除リンク
if(actionTime < nowTime) {
var delLink = document.createElement("a");
delLink.title = "確認済にして削除します";
delLink.href = "javascript:void(0);";
delLink.style.color = "#616DE8";
delLink.innerHTML = "済";
var key = DELIMIT1 + xyBase + DELIMIT1 + action[IDX2_TIME];
delLink.addEventListener("click",
(function(key_) {
return function() { deleteLog(key_); }
})(key), true);
actionDiv.appendChild(delLink);
}
return actionDiv;
}
function deleteLog(key) {
var villages = loadVillages();
var exists = false;
villageLoop:
for(var i = 0; i < villages.length; i++) {
for(var j = 0; j < villages[i][IDX_ACTIONS].length; j++) {
var action = villages[i][IDX_ACTIONS][j];
var curKey = DELIMIT1 + villages[i][IDX_XY] + DELIMIT1 + action[IDX2_TIME];
if(key == curKey) {
exists = true;
villages[i][IDX_ACTIONS].splice(j, 1);
break villageLoop;
}
}
}
//見つかったら更新
if(exists) {
saveVillages(villages);
redrawInfoWindow(false);
setIndicatorReady();
return;
}
}
}
// 拠点巡回読込
function loadAVCBox(){
OPT_CHKBOX_AVC = parseInt(GM_getValue(HOST+PGNAME+"AVC", ""));
}
function loadAVCBox2(tVID){
//OPT_CHKBOX_AVC = parseInt(GM_getValue(HOST+PGNAME+"AVC"+"_"+tVID, ""));
OPT_CHKBOX_AVC = GM_getValue(HOST+PGNAME+"OPT_CHKBOX_AVC_" + tVID, true);
return OPT_CHKBOX_AVC;
}
//数値を3ケタ区切りにする関数
function SetPrice(price){
var num = new String(price).replace(/,/g, "");
while(num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
return num;
}
// 拠点巡回保存
function saveAVCBox(){
OPT_CHKBOX_AVC = cgetCheckBoxValue($("OPT_CHKBOX_AVC"));
GM_setValue(HOST+PGNAME+"AVC", OPT_CHKBOX_AVC);
}
function saveAVCBox2(tVID,flg){
//OPT_CHKBOX_AVC = cgetCheckBoxValue($("OPT_CHKBOX_AVC"));
//GM_setValue(HOST+PGNAME+"AVC", OPT_CHKBOX_AVC);
GM_setValue(HOST+PGNAME+"AVC"+"_"+tVID, flg);
setIndicator(0, 1);
//var tid=unsafeWindow.setTimeout(function(){location.reload();},INTERVAL);
tidMain=unsafeWindow.setTimeout(function(){location.reload(false);},INTERVAL);
}
function addInifacHtml0() {
var popupLeft = GM_getValue(HOST+PGNAME + "_popup_left0", 10);
var popupTop = GM_getValue(HOST+PGNAME + "_popup_top0", 10);
if(popupLeft < 0) popupLeft = 0;
if(popupTop < 0) popupTop = 0;
//表示コンテナ作成
var ABfacContainer = document.createElement("div");
ABfacContainer.id = "ABfacContainer0";
ABfacContainer.style.position = "absolute";
ABfacContainer.style.color = COLOR_BASE;
ABfacContainer.style.backgroundColor = COLOR_FRAME;
ABfacContainer.style.opacity= 1.0;
ABfacContainer.style.border = "solid 2px black";
ABfacContainer.style.left = popupLeft + "px";
ABfacContainer.style.top = popupTop + "px";
ABfacContainer.style.fontSize = "10px";
ABfacContainer.style.fontFamily = "MS ゴシック";
ABfacContainer.style.padding = "2px";
ABfacContainer.style.MozBorderRadius = "4px";
ABfacContainer.style.zIndex = 999;
// ABfacContainer.setAttribute('xyVillage', xyVillage);
document.body.appendChild(ABfacContainer);
$e(ABfacContainer, "mousedown", function(event){
if( event.target != $("ABfacContainer0")) {return false;}
g_MD="ABfacContainer0";
g_MX=event.pageX-parseInt(this.style.left,10);
g_MY=event.pageY-parseInt(this.style.top,10);
event.preventDefault();});
$e(document, "mousemove", function(event){
if(g_MD != "ABfacContainer0") return true;
var ABfacContainer = $("ABfacContainer0");
if( !ABfacContainer ) return true;
var popupLeft = event.pageX - g_MX;
var popupTop = event.pageY - g_MY;
ABfacContainer.style.left = popupLeft + "px";
ABfacContainer.style.top = popupTop + "px";
//ポップアップ位置を永続保存
GM_setValue(HOST + PGNAME + "_popup_left0", popupLeft);
GM_setValue(HOST + PGNAME + "_popup_top0", popupTop);
});
$e(document, "mouseup", function(event){g_MD="";});
// ===== タイトル =====
var BaseName = document.createElement("span");
BaseName.style.border ="solid 0px red";
BaseName.style.padding = "3px";
BaseName.style.font = "bold 120% 'MS ゴシック'";
BaseName.style.color = "#F9C471";
BaseName.innerHTML = "資源設定";
var villages = loadVillages();
LoadOptCommon();
ABfacContainer.appendChild(BaseName);
// ===== 自動資源変換設定 =====
var Market_Box = document.createElement("table");
Market_Box.style.border ="solid 2px black";
Market_Box.style.fontFamily = "MS ゴシック";
Market_Box.style.margin = "0px 4px 4px 0px";
Market_Box.style.width = "100%";
var tr30 = document.createElement("tr");
tr30.style.backgroundColor = COLOR_TITLE;
var td30 = document.createElement("td");
td30.colSpan = 4;
ccreateText(td30, "dummy", "■ 自動資源変換 ", 0 );
var tr31 = document.createElement("tr");
// tr31.style.border = "solid 1px black";
tr31.style.backgroundColor = COLOR_BACK;
var td311 = document.createElement("td");
td311.style.padding = "3px";
td311.style.verticalAlign = "top";
var td312 = document.createElement("td");
td312.colSpan = 3;
td312.style.padding = "3px";
td312.style.verticalAlign = "top";
var tr32 = document.createElement("tr");
// tr32.style.border = "solid 1px black";
tr32.style.backgroundColor = COLOR_BACK;
var td321 = document.createElement("td");
td321.style.padding = "3px";
td321.style.verticalAlign = "top";
var td322 = document.createElement("td");
td322.style.padding = "3px";
td322.style.verticalAlign = "top";
var td323 = document.createElement("td");
td323.style.padding = "3px";
td323.style.verticalAlign = "top";
var td324 = document.createElement("td");
td324.style.padding = "3px";
td324.style.verticalAlign = "top";
// 貿易センターのある拠点をメニューに追加
var elmSelectTrader = document.createElement("select");
elmSelectTrader.id = "OPT_CONV_TRADE_CENTER";
elmSelectTrader.addEventListener("change",
function() {
OPT_CONV_TRADE_CENTER = document.getElementById("OPT_CONV_TRADE_CENTER").value;
}, true);
{
var elem = document.createElement("option");
elem.innerHTML = "自動変換を行いません";
elem.value = "";
elmSelectTrader.appendChild(elem);
}
var TradeCenterList = cloadData("TradeCenterList","[]",true,true);
for(var i=0; i<villages.length; i++) {
for(var j=0 ; j<TradeCenterList.length ; j++) {
if(TradeCenterList[j].xyVillage == villages[i][IDX_XY]) {
var strText = "貿易センターLv" + TradeCenterList[j].lv + " : " + villages[i][IDX_BASE_NAME] + " を利用します";
var elem = document.createElement("option");
elem.innerHTML = strText;
elem.value = villages[i][IDX_XY];
elmSelectTrader.appendChild(elem);
}
}
}
td312.appendChild(elmSelectTrader);
elmSelectTrader.value = OPT_CONV_TRADE_CENTER;
// 輸出資源
ccreateText(td321, "dummy", " 輸出資源", 0 );
var selectExportResource = ccreateComboBox(td321, "OPT_CONV_EXPORT_RESOURSE", ["鉄","石油","アルミ","食料"], OPT_CONV_EXPORT_RESOURSE, "", "",5);
$e(selectExportResource, "change", function(event){
OPT_CONV_EXPORT_RESOURSE = $("OPT_CONV_EXPORT_RESOURSE").value;
changeTradeMode();
});
// 輸出制限量
var selectExportMode = ccreateComboBox(td321, "OPT_CONV_EXPORT_MODE", ["常時輸出","輸出制限つき","資源を平均化"], OPT_CONV_EXPORT_MODE, "", "",5);
ccreateTextBox(td321, "OPT_CONV_EXPORT_LIMIT", OPT_CONV_EXPORT_LIMIT, "", "指定量以下の場合、輸出を行わない", 10, 5);
$e(selectExportMode, "change", function(event){
OPT_CONV_EXPORT_MODE = $("OPT_CONV_EXPORT_MODE").value;
changeTradeMode();
});
// 1回の取引量
ccreateText(td322, "dummy", "  取引単位", 0 );
var selectTradeAmount = ccreateComboBox(td322, "OPT_CONV_TRADE_AMOUNT", ["2.00 ","1.50 ","1.25 ","1.00 ","0.75 ","0.50 ","0.40 ","0.30 ","0.25 ","0.20 ","0.15 "], OPT_CONV_TRADE_AMOUNT, "毎時生産量 ×", "1回の取引量",5);
$e(selectTradeAmount,"change", function(event){
OPT_CONV_TRADE_AMOUNT = $("OPT_CONV_TRADE_AMOUNT").value;
changeTradeMode();
});
var boxTradeAmountUnit = ccreateTextBox(td322, "OPT_CONV_TRADE_AMOUNT_UNIT", OPT_CONV_TRADE_AMOUNT_UNIT, " ", "取引資源量は現在の値です", 15, 5);
boxTradeAmountUnit.disabled = true;
ccreateText(td322, "dummy", " ", 0 );
ccreateComboBox(td322, "OPT_CONV_DUTY", ["0.0","0.1","0.2","0.3","0.4","0.5","0.75","1.0","1.5","2.0","2.5","3.0","4.0","5.0","6.0","8.0","10.0"], OPT_CONV_DUTY, "関税率(%)", "資源取引毎に寄付を行う",5);
// 輸入資源
ccreateText(td323, "dummy", " 輸入資源", 0 );
var selectImportModeIron = ccreateComboBox(td323, "OPT_CONV_INPORT_MODE_IRON", ["常時輸入","輸入制限つき","輸入しない"], OPT_CONV_INPORT_MODE_IRON, "鉄  ", "",5);
var selectImportModeOil = ccreateComboBox(td323, "OPT_CONV_INPORT_MODE_OIL", ["常時輸入","輸入制限つき","輸入しない"], OPT_CONV_INPORT_MODE_OIL, "石油 ", "",5);
var selectImportModeAlumi = ccreateComboBox(td323, "OPT_CONV_INPORT_MODE_ALUMI", ["常時輸入","輸入制限つき","輸入しない"], OPT_CONV_INPORT_MODE_ALUMI, "アルミ", "",5);
var selectImportModeFood = ccreateComboBox(td323, "OPT_CONV_INPORT_MODE_FOOD", ["常時輸入","輸入制限つき","輸入しない"], OPT_CONV_INPORT_MODE_FOOD, "食料 ", "",5);
ccreateText(td324, "dummy", " 輸入制限量", 0 );
ccreateTextBox(td324, "OPT_CONV_INPORT_LIMIT_IRON", OPT_CONV_INPORT_LIMIT_IRON, "", "鉄が指定量以上の場合、輸入を行わない。", 10, 5);
ccreateTextBox(td324, "OPT_CONV_INPORT_LIMIT_OIL", OPT_CONV_INPORT_LIMIT_OIL, "", "石油が指定量以上の場合、輸入を行わない。", 10, 5);
ccreateTextBox(td324, "OPT_CONV_INPORT_LIMIT_ALUMI", OPT_CONV_INPORT_LIMIT_ALUMI, "", "アルミが指定量以上の場合、輸入を行わない。", 10, 5);
ccreateTextBox(td324, "OPT_CONV_INPORT_LIMIT_FOOD", OPT_CONV_INPORT_LIMIT_FOOD, "", "食料が指定量以上の場合、輸入を行わない。", 10, 5);
$e(selectImportModeIron, "change", function(event){
OPT_CONV_INPORT_MODE_IRON = $("OPT_CONV_INPORT_MODE_IRON").value;
changeTradeMode();
});
$e(selectImportModeOil, "change", function(event){
OPT_CONV_INPORT_MODE_OIL = $("OPT_CONV_INPORT_MODE_OIL").value;
changeTradeMode();
});
$e(selectImportModeAlumi, "change", function(event){
OPT_CONV_INPORT_MODE_ALUMI = $("OPT_CONV_INPORT_MODE_ALUMI").value;
changeTradeMode();
});
$e(selectImportModeFood, "change", function(event){
OPT_CONV_INPORT_MODE_FOOD = $("OPT_CONV_INPORT_MODE_FOOD").value;
changeTradeMode();
});
Market_Box.appendChild(tr30);
tr30.appendChild(td30);
Market_Box.appendChild(tr31);
tr31.appendChild(td311);
tr31.appendChild(td312);
Market_Box.appendChild(tr32);
tr32.appendChild(td321);
tr32.appendChild(td322);
tr32.appendChild(td323);
tr32.appendChild(td324);
// ===== 寄付設定 =====
var Contribution_Box = document.createElement("table");
Contribution_Box.style.margin = "0px 4px 4px 0px";
Contribution_Box.style.border ="solid 2px black";
Contribution_Box.style.fontFamily = "MS ゴシック";
Contribution_Box.style.width = "100%";
var tr400 = document.createElement("tr");
tr400.style.border = "solid 1px black";
tr400.style.backgroundColor =COLOR_TITLE;
var td401 = document.createElement("td");
// td401.style.padding = "2px";
ccreateCheckBox(td401, "OPT_KIFU", OPT_KIFU, " 自動寄付", "", 0);
var tr411 = document.createElement("tr");
tr411.style.border = "solid 1px black";
tr411.style.backgroundColor =COLOR_BACK;
var td411 = document.createElement("td");
td411.style.padding = "3px";
td411.style.verticalAlign = "top";
ccreateTextBox(td411, "OPT_RICE_KIFU_MAX", OPT_RICE_KIFU_MAX, "食料が右の数量になったら寄付する ","自動で食料を寄付し始める量指定します。", 10, 5);
ccreateTextBox(td411, "OPT_RICE_KIFU", OPT_RICE_KIFU, "自動で食料を寄付する量      ","自動で食料を寄付する量指定します。", 10, 5);
Contribution_Box.appendChild(tr400);
tr400.appendChild(td401);
Contribution_Box.appendChild(tr411);
tr411.appendChild(td411);
// ===== 確認 ====
var Operation_Box = document.createElement("table");
Operation_Box.style.border ="solid 0px gray";
Operation_Box.style.fontFamily = "MS ゴシック";
var tr711 = document.createElement("tr");
var td711 = document.createElement("td");
td711.style.padding = "3px";
td711.style.verticalAlign = "top";
Operation_Box.appendChild(tr711);
tr711.appendChild(td711);
ccreateButton(td711, "保存", "設定内容を保存して閉じます", function() {
SaveOptCommon();
alert("保存しました");
closeInifacBox0();
clearInterval(tidMain2);
setIndicator(0, 1);
var tid=unsafeWindow.setTimeout(function(){
plan();
fetch();
},THREAD_CHANGE);
});
ccreateButton(td711, "閉じる", "設定内容を保存せず閉じます", function() {
closeInifacBox0();
clearInterval(tidMain2);
setIndicator(0, 1);
var tid=unsafeWindow.setTimeout(function(){
next();
},THREAD_CHANGE);
});
// キャッシュクリアボタン
if(ADVANCE) {
ccreateButton(td711, "設定初期化", "キャッシュを初期化します",
function() {
clearCache();
},72);
}
// == コンテナ設定 ==
// 上段
var tbl000 = document.createElement("table"); // 全体
tbl000.style.border = "solid 0px lime";
var tr000 = document.createElement("tr");
var td001 = document.createElement("td"); // 左枠
td001.style.verticalAlign = "top";
td001.style.width = "Auto";
td001.appendChild(Market_Box);
td001.appendChild(Contribution_Box);
// var td002 = document.createElement("td"); // 右枠
// td002.style.verticalAlign = "top";
// td002.style.paddingLeft = "4px";
// td002.style.width = "Auto";
// 中段
// var tbl010 = document.createElement("table");
// tbl010.style.border = "solid 0px red";
// var tr010 = document.createElement("tr");
// tr010.style.verticalAlign = "top";
// var td011 = document.createElement("td");
// var td012 = document.createElement("td");
// var td013 = document.createElement("td");
// レイアウト
ABfacContainer.appendChild(tbl000);
tbl000.appendChild(tr000);
tr000.appendChild(td001);
// tr000.appendChild(td002);
// ABfacContainer.appendChild(tbl010);
// tbl010.appendChild(tr010);
// tr010.appendChild(td011);
// tr010.appendChild(td012);
// tr010.appendChild(td013);
ABfacContainer.appendChild(Operation_Box);
// 設定値を反映
changeTradeMode();
return;
function changeTradeMode() {
$("OPT_CONV_EXPORT_LIMIT").disabled = false;
if(OPT_CONV_EXPORT_MODE != "輸出制限つき") {
$("OPT_CONV_EXPORT_LIMIT").disabled = true;
}
$("OPT_CONV_INPORT_MODE_IRON").disabled = false;
$("OPT_CONV_INPORT_MODE_OIL").disabled = false;
$("OPT_CONV_INPORT_MODE_ALUMI").disabled = false;
$("OPT_CONV_INPORT_MODE_FOOD").disabled = false;
$("OPT_CONV_INPORT_LIMIT_IRON").disabled = false;
$("OPT_CONV_INPORT_LIMIT_OIL").disabled = false;
$("OPT_CONV_INPORT_LIMIT_ALUMI").disabled = false;
$("OPT_CONV_INPORT_LIMIT_FOOD").disabled = false;
if(OPT_CONV_EXPORT_RESOURSE == "鉄") {
$("OPT_CONV_INPORT_MODE_IRON").disabled = true;
$("OPT_CONV_INPORT_LIMIT_IRON").disabled = true;
}
if(OPT_CONV_EXPORT_RESOURSE == "石油") {
$("OPT_CONV_INPORT_MODE_OIL").disabled = true;
$("OPT_CONV_INPORT_LIMIT_OIL").disabled = true;
}
if(OPT_CONV_EXPORT_RESOURSE == "アルミ") {
$("OPT_CONV_INPORT_MODE_ALUMI").disabled = true;
$("OPT_CONV_INPORT_LIMIT_ALUMI").disabled = true;
}
if(OPT_CONV_EXPORT_RESOURSE == "食料") {
$("OPT_CONV_INPORT_MODE_FOOD").disabled = true;
$("OPT_CONV_INPORT_LIMIT_FOOD").disabled = true;
}
if(OPT_CONV_INPORT_MODE_IRON != "輸入制限つき") {
$("OPT_CONV_INPORT_LIMIT_IRON").disabled = true;
}
if(OPT_CONV_INPORT_MODE_OIL != "輸入制限つき") {
$("OPT_CONV_INPORT_LIMIT_OIL").disabled = true;
}
if(OPT_CONV_INPORT_MODE_ALUMI != "輸入制限つき") {
$("OPT_CONV_INPORT_LIMIT_ALUMI").disabled = true;
}
if(OPT_CONV_INPORT_MODE_FOOD != "輸入制限つき") {
$("OPT_CONV_INPORT_LIMIT_FOOD").disabled = true;
}
// 取引量を決定
var nProduct;
var aryProduct = getProduct(document);
if(OPT_CONV_EXPORT_RESOURSE == "鉄") {
nProduct = aryProduct[0] + aryProduct[1];
}
if(OPT_CONV_EXPORT_RESOURSE == "石油") {
nProduct = aryProduct[2] + aryProduct[3];
}
if(OPT_CONV_EXPORT_RESOURSE == "アルミ") {
nProduct = aryProduct[4] + aryProduct[5];
}
if(OPT_CONV_EXPORT_RESOURSE == "食料") {
nProduct = aryProduct[6] + aryProduct[7];
}
// 毎時産出量から実量を計算、100単位に切り上げ
var nTradeUnit = Math.floor(nProduct * OPT_CONV_TRADE_AMOUNT / 100) * 100 + 100;
$("OPT_CONV_TRADE_AMOUNT_UNIT").value = OPT_CONV_EXPORT_RESOURSE + " : " + nTradeUnit;
}
}
function addInifacHtml(xyVillage) {
// add 2011.09.27 設定画面移動 @@@@
var popupLeft = GM_getValue(HOST+PGNAME + "_popup_left2", 10);
var popupTop = GM_getValue(HOST+PGNAME + "_popup_top2", 10);
if(popupLeft < 0) popupLeft = 0;
if(popupTop < 0) popupTop = 0;
// end
//表示コンテナ作成
var ABfacContainer = document.createElement("div");
ABfacContainer.id = "ABfacContainer";
ABfacContainer.style.position = "absolute";
ABfacContainer.style.color = COLOR_BASE;
ABfacContainer.style.backgroundColor = COLOR_FRAME;
ABfacContainer.style.opacity= 1.0;
ABfacContainer.style.border = "solid 2px black";
ABfacContainer.style.left = popupLeft + "px";
ABfacContainer.style.top = popupTop + "px";
ABfacContainer.style.fontSize = "10px";
ABfacContainer.style.fontFamily = "MS ゴシック";
ABfacContainer.style.padding = "2px";
ABfacContainer.style.MozBorderRadius = "4px";
ABfacContainer.style.zIndex = 999;
ABfacContainer.setAttribute('xyVillage', xyVillage);
document.body.appendChild(ABfacContainer);
$e(ABfacContainer, "mousedown", function(event){
if( event.target != $("ABfacContainer")) {return false;}
g_MD="ABfacContainer";
g_MX=event.pageX-parseInt(this.style.left,10);
g_MY=event.pageY-parseInt(this.style.top,10);
event.preventDefault();});
$e(document, "mousemove", function(event){
if(g_MD != "ABfacContainer") return true;
var ABfacContainer = $("ABfacContainer");
if( !ABfacContainer ) return true;
var popupLeft = event.pageX - g_MX;
var popupTop = event.pageY - g_MY;
ABfacContainer.style.left = popupLeft + "px";
ABfacContainer.style.top = popupTop + "px";
//ポップアップ位置を永続保存
GM_setValue(HOST + PGNAME + "_popup_left2", popupLeft);
GM_setValue(HOST + PGNAME + "_popup_top2", popupTop);
});
$e(document, "mouseup", function(event){g_MD="";});
// ===== タイトル =====
var BaseName = document.createElement("span");
BaseName.style.border ="solid 0px red";
BaseName.style.padding = "3px";
BaseName.style.font = "bold 120% 'MS ゴシック'";
BaseName.style.color = "#F9C471";
BaseName.innerHTML = "建設設定";
var villages = loadVillages();
for(var i = 0; i < villages.length; i++) {
//表示中の設定対象拠点名の表示
if(xyVillage == villages[i][IDX_XY]){
BaseName.innerHTML = "建設設定:" + villages[i][IDX_BASE_NAME];
}
}
LoadOptBuild(xyVillage);
LoadOptCommon();
ABfacContainer.appendChild(BaseName);
// ===== 建設設定 =====
var Build_Box = document.createElement("table");
Build_Box.style.border ="solid 2px black";
Build_Box.style.margin = "0px 4px 4px 0px";
Build_Box.style.width = "100%";
var tr11 = document.createElement("tr");
tr11.style.backgroundColor = COLOR_TITLE;
tr11.style.border ="solid 1px black";
var td11 = document.createElement("td");
td11.style.padding = "1px";
td11.colSpan = "3";
ccreateCheckBox(td11, "OPT_BLD", OPT_BLD, " 自動建設", "この都市に来たら、自動的に建設します。", 0);
var tr111 = document.createElement("tr");
tr111.style.backgroundColor = COLOR_BACK;
tr111.style.border ="solid 1px black";
var td111 = document.createElement("td");
td111.style.padding = "3px";
td111.style.verticalAlign = "top";
var td112 = document.createElement("td");
td112.style.padding = "3px";
td112.style.verticalAlign = "top";
var td113 = document.createElement("td");
td113.style.padding = "3px";
td113.style.verticalAlign = "top";
var tr30 = document.createElement("tr");
tr30.style.backgroundColor = COLOR_BACK;
var td31 = document.createElement("td");
td31.colSpan = "3";
td31.style.padding = "3px";
Build_Box.appendChild(tr11);
tr11.appendChild(td11);
Build_Box.appendChild(tr111);
tr111.appendChild(td111);
tr111.appendChild(td112);
tr111.appendChild(td113);
Build_Box.appendChild(tr30);
tr30.appendChild(td31);
// ABfacContainer.appendChild(Build_Box);
ccreateCheckBoxKai2(td111, "OPT_CHKBOX", 0, " 拠点     ","中央の本拠地・補給基地・前線基地のLvを上げます。",0);
ccreateCheckBoxKai2(td111, "OPT_CHKBOX", 6, " 銅像     ","この都市の銅像が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateText(td111, "Dummy" , " ", 0);
ccreateCheckBoxKai2(td111, "OPT_CHKBOX", 1, " 製鉄所    ","この都市の製鉄所が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateCheckBoxKai2(td111, "OPT_CHKBOX", 2, " 製油所    ","この都市の製油所が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateCheckBoxKai2(td111, "OPT_CHKBOX", 3, " アルミ精錬所 ","この都市のアルミ精錬所が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateCheckBoxKai2(td111, "OPT_CHKBOX", 4, " 食品加工工場 ","この都市の食品加工工場が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateCheckBoxKai2(td111, "OPT_CHKBOX", 5, " 備蓄基地   ","この都市の備蓄基地が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateText(td111, "Dummy" , " ", 0);
ccreateCheckBoxKai2(td111, "OPT_CHKBOX", 7, " 武装研究所  ","この都市の武装研究所が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateCheckBoxKai2(td111, "OPT_CHKBOX", 8, " 装甲研究所  ","この都市の装甲研究所が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateCheckBoxKai2(td112, "OPT_CHKBOX", 9, " 歩兵学校   ","この都市の歩兵学校が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateCheckBoxKai2(td112, "OPT_CHKBOX", 10, " 陸軍士官学校 ","この都市の陸軍士官学校が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateCheckBoxKai2(td112, "OPT_CHKBOX", 11, " 海軍兵学校  ","この都市の海軍兵学校が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateCheckBoxKai2(td112, "OPT_CHKBOX", 12, " 空軍士官学校 ","この都市の空軍士官学校が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateCheckBoxKai2(td112, "OPT_CHKBOX", 14, " 工兵学校   ","この都市の工兵学校が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateText(td112, "Dummy" , " ", 0);
ccreateCheckBoxKai2(td112, "OPT_CHKBOX", 13, " 兵舎     ","この都市の兵舎が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateCheckBoxKai2(td112, "OPT_CHKBOX", 20, " 駐屯地    ","この都市の駐屯地が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateText(td112, "Dummy" , " ", 0);
ccreateCheckBoxKai2(td112, "OPT_CHKBOX", 16, " 飛行場    ","この都市の飛行場が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateCheckBoxKai2(td112, "OPT_CHKBOX", 21, " 航空基地   ","この都市の航空基地が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateCheckBoxKai2(td113, "OPT_CHKBOX", 15, " 貿易センター   ","この都市の貿易センターが目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateText(td113, "Dummy" , " ", 0);
ccreateCheckBoxKai2(td113, "OPT_CHKBOX", 17, " 食品冷凍工場   ","この都市の食品冷凍工場が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateCheckBoxKai2(td113, "OPT_CHKBOX", 18, " 化学コンビナート ","この都市の化学コンビナートが目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateText(td113, "Dummy" , " ", 0);
ccreateCheckBoxKai2(td113, "OPT_CHKBOX", 19, " 技術研究所    ","この都市の技術研究所が目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateCheckBoxKai2(td113, "OPT_CHKBOX", 22, " レーダーサイト  ","この都市のレーダーサイトが目標Lvになるまで、自動的にLvUPを行います。",0);
ccreateButton(td31, "航空基地" , "本拠地に航空基地を建てる設定にします。", function() {InitMilitaryHome()},85);
ccreateButton(td31, "食料生産拠点" , "食料生産拠点の設定にします。", function() {InitRiceParadise()});
ccreateButton(td31, "資源生産拠点" , "資源生産拠点の設定にします。", function() {InitResVillage()});
ccreateButton(td31, "軍事拠点" , "軍事拠点の設定にします。", function() {InitMilitarySite()});
ccreateButton(td31, "初期化", "自動建設設定を消去します。", function() {clearInifacBox();});
// ===== ビルド&スクラップ設定 =====
var Scrap_Box = document.createElement("table");
Scrap_Box.style.margin = "0px 4px 4px 0px";
Scrap_Box.style.border ="solid 2px black";
Scrap_Box.style.fontFamily = "MS ゴシック";
Scrap_Box.style.width = "100%";
var tr510 = document.createElement("tr");
tr510.style.border = "solid 1px black";
tr510.style.backgroundColor =COLOR_TITLE;
var td510 = document.createElement("td");
td510.style.padding = "1px";
// td510.appendChild( createRadioBtn ( 'BS', 'ビルド&スクラッチ' ) );
ccreateCheckBox(td510, "OPT_SCRAP", OPT_SCRAP, " ビルド&スクラッチ", "自動建設との同時設定は非推奨です", 0);
var tr511 = document.createElement("tr");
tr511.style.border = "solid 1px black";
tr511.style.backgroundColor =COLOR_BACK;
var td511 = document.createElement("td");
td511.style.padding = "3px";
td511.style.verticalAlign = "top";
td511.appendChild( createRadioBtn2 ( 'DD', ' 兵舎対象 ' ) );
td511.appendChild( createRadioBtn2 ( 'HH', ' 食品加工工場対象  ' ) );
ccreateTextBox(td511, "OPT_MAX", OPT_MAX, "対象施設数 ", "自動で建設/破棄する施設の数。", 5, 3);
ccreateTextBox(td511, "OPT_MAXLV", OPT_MAXLV, "対象施設LV ", "自動で建設/破棄する施設の最大LV。", 5, 3);
Scrap_Box.appendChild(tr510);
tr510.appendChild(td510);
Scrap_Box.appendChild(tr511);
tr511.appendChild(td511);
if(!ADVANCE) Scrap_Box.style.visibility = "hidden";
// ===== 食料生産拠点化 ===
var Field_Box = document.createElement("table");
Field_Box.style.margin = "0px 4px 4px 0px";
Field_Box.style.border ="solid 2px black";
Field_Box.style.fontFamily = "MS ゴシック";
Field_Box.style.width = "100%";
var tr600 = document.createElement("tr");
tr600.style.border = "solid 1px black";
tr600.style.backgroundColor =COLOR_TITLE;
var td600 = document.createElement("td");
// td600.style.padding = "2px";
ccreateCheckBox(td600,"OPT_KATEMURA", OPT_KATEMURA, " 食料生産拠点化", "この都市を食料生産拠点にする。平地に食品加工工場・備蓄基地・銅像を建てる。",0);
var tr611 = document.createElement("td");
tr611.style.border = "solid 1px black";
tr611.style.backgroundColor =COLOR_BACK;
var td611 = document.createElement("td");
td611.style.padding = "3px";
td611.style.verticalAlign = "top";
ccreateTextBox(td611,"OPT_SOUKO_MAX", OPT_SOUKO_MAX,"設置する備蓄基地の数 ","設置する備蓄基地の数を指定してください。",4,0);
Field_Box.appendChild(tr600);
tr600.appendChild(td600);
Field_Box.appendChild(tr611);
tr611.appendChild(td611);
// ==== 自動造兵設定 ====
var Soldier_Box = document.createElement("table");
Soldier_Box.style.border ="solid 2px black";
Soldier_Box.style.marginBottom = "4px";
Soldier_Box.style.width = "100%";
var tr800 = document.createElement("tr");
tr800.style.border = "solid 1px black";
tr800.style.backgroundColor =COLOR_TITLE;
var td800 = document.createElement("td");
ccreateCheckBox(td800, "OPT_BLD_SOL", OPT_BLD_SOL, " 自動造兵", "この都市で自動的に造兵します。", 0);
var tr81 = document.createElement("tr");
tr81.style.fontFamily = "MS ゴシック";
tr81.style.border = "solid 1px black";
tr81.style.backgroundColor =COLOR_BACK;
var td81 = document.createElement("td");
td81.style.padding = "3px";// td81.style.border = "solid 1px black";
var tr811 = document.createElement("tr");
var td811 = document.createElement("td"); td811.style.padding = "3px"; td811.style.verticalAlign = "bottom";
var td812 = document.createElement("td"); td812.style.padding = "3px"; td812.style.verticalAlign = "top"; td812.style.textAlign = "center";
var td813 = document.createElement("td"); td813.style.padding = "3px"; td813.style.verticalAlign = "top"; td813.style.textAlign = "center";
var td814 = document.createElement("td"); td814.style.padding = "3px"; td814.style.verticalAlign = "top"; td814.style.textAlign = "center";
var td815 = document.createElement("td"); td815.style.padding = "3px"; td815.style.verticalAlign = "top"; td815.style.textAlign = "center";
var td816 = document.createElement("td"); td816.style.padding = "3px"; td816.style.verticalAlign = "top"; td816.style.textAlign = "center";
var td817 = document.createElement("td"); td817.style.padding = "3px"; td817.style.verticalAlign = "top"; td817.style.textAlign = "center";
var td818 = document.createElement("td"); td818.style.padding = "3px"; td818.style.verticalAlign = "top"; td818.style.textAlign = "center";
var td819 = document.createElement("td"); td819.style.padding = "3px"; td819.style.verticalAlign = "top"; td819.style.textAlign = "center";
var td820 = document.createElement("td"); td820.style.padding = "3px"; td820.style.verticalAlign = "top"; td820.style.textAlign = "center";
var td821 = document.createElement("td"); td821.style.padding = "3px"; td821.style.verticalAlign = "top"; td821.style.textAlign = "center";
var td822 = document.createElement("td"); td822.style.padding = "3px"; td822.style.verticalAlign = "top"; td822.style.textAlign = "center";
var td823 = document.createElement("td"); td823.style.padding = "3px"; td823.style.verticalAlign = "bottom";
Soldier_Box.appendChild(tr800);
tr800.appendChild(td800);
Soldier_Box.appendChild(tr81);
tr81.appendChild(td81);
td81.appendChild(tr811);
tr811.appendChild(td811);
tr811.appendChild(td812);
tr811.appendChild(td813);
tr811.appendChild(td814);
tr811.appendChild(td815);
tr811.appendChild(td816);
tr811.appendChild(td817);
tr811.appendChild(td818);
tr811.appendChild(td819);
tr811.appendChild(td820);
tr811.appendChild(td821);
tr811.appendChild(td822);
tr811.appendChild(td823);
// ABfacContainer.appendChild(Soldier_Box);
ccreateText(td812, "dummy", "新兵", 0 );
ccreateText(td813, "dummy", "軽戦車", 0 );
ccreateText(td814, "dummy", "水雷艇", 0 );
ccreateText(td815, "dummy", "軽戦闘機", 0 );
ccreateText(td816, "dummy", "重戦車", 0 );
ccreateText(td817, "dummy", "駆逐艦", 0 );
ccreateText(td818, "dummy", "重戦闘機", 0 );
ccreateText(td819, "dummy", "工作員", 0 );
ccreateText(td820, "dummy", "特殊部隊", 0 );
ccreateText(td821, "dummy", "工兵", 0 );
ccreateText(td822, "dummy", "自走臼砲", 0 );
ccreateText(td823, "dummy", " ", 0 );
ccreateText(td811, "dummy", " ", 0 );
ccreateText(td811, "dummy", " 兵数上限", 0 );
ccreateText(td811, "dummy", " 作成単位", 0 );
ccreateTextBox(td812,"OPT_SOLDIER_MAX1", OPT_SOLDIER_MAX[1],"","新兵の兵数上限",8,0);
ccreateTextBox(td813,"OPT_SOLDIER_MAX3", OPT_SOLDIER_MAX[3],"","軽戦車の兵数上限",8,0);
ccreateTextBox(td814,"OPT_SOLDIER_MAX8", OPT_SOLDIER_MAX[8],"","水雷艇の兵数上限",8,0);
ccreateTextBox(td815,"OPT_SOLDIER_MAX5", OPT_SOLDIER_MAX[5],"","軽戦闘機の兵数上限",8,0);
ccreateTextBox(td816,"OPT_SOLDIER_MAX4", OPT_SOLDIER_MAX[4],"","重戦車の兵数上限",8,0);
ccreateTextBox(td817,"OPT_SOLDIER_MAX9", OPT_SOLDIER_MAX[9],"","駆逐艦の兵数上限",8,0);
ccreateTextBox(td818,"OPT_SOLDIER_MAX7", OPT_SOLDIER_MAX[7],"","重戦闘機の兵数上限",8,0);
ccreateTextBox(td819,"OPT_SOLDIER_MAX10", OPT_SOLDIER_MAX[10],"","工作員の兵数上限",8,0);
ccreateTextBox(td820,"OPT_SOLDIER_MAX11", OPT_SOLDIER_MAX[11],"","特殊部隊の兵数上限",8,0);
ccreateTextBox(td821,"OPT_SOLDIER_MAX12", OPT_SOLDIER_MAX[12],"","工兵の兵数上限",8,0);
ccreateTextBox(td822,"OPT_SOLDIER_MAX13", OPT_SOLDIER_MAX[13],"","自走臼砲の兵数上限",8,0);
ccreateTextBox(td812,"OPT_SOLDIER_ADD1", OPT_SOLDIER_ADD[1],"","新兵の作成単位",8,0);
ccreateTextBox(td813,"OPT_SOLDIER_ADD3", OPT_SOLDIER_ADD[3],"","軽戦車の作成単位",8,0);
ccreateTextBox(td814,"OPT_SOLDIER_ADD8", OPT_SOLDIER_ADD[8],"","水雷艇の作成単位",8,0);
ccreateTextBox(td815,"OPT_SOLDIER_ADD5", OPT_SOLDIER_ADD[5],"","軽戦闘機の作成単位",8,0);
ccreateTextBox(td816,"OPT_SOLDIER_ADD4", OPT_SOLDIER_ADD[4],"","重戦車の作成単位",8,0);
ccreateTextBox(td817,"OPT_SOLDIER_ADD9", OPT_SOLDIER_ADD[9],"","駆逐艦の作成単位",8,0);
ccreateTextBox(td818,"OPT_SOLDIER_ADD7", OPT_SOLDIER_ADD[7],"","重戦闘機の作成単位",8,0);
ccreateTextBox(td819,"OPT_SOLDIER_ADD10", OPT_SOLDIER_ADD[10],"","工作員の作成単位",8,0);
ccreateTextBox(td820,"OPT_SOLDIER_ADD11", OPT_SOLDIER_ADD[11],"","特殊部隊の作成単位",8,0);
ccreateTextBox(td821,"OPT_SOLDIER_ADD12", OPT_SOLDIER_ADD[12],"","工兵の作成単位",8,0);
ccreateTextBox(td822,"OPT_SOLDIER_ADD13", OPT_SOLDIER_ADD[13],"","自走臼砲の作成単位",8,0);
ccreateButton(td823, "作成中止", "兵士の作成単位を初期化します。", function() {clearInitSoldier()});
// ===== 自動 武装・装甲強化 ====
var Blacksmith_Box = document.createElement("table");
Blacksmith_Box.style.border ="solid 2px black";
Blacksmith_Box.style.marginBottom = "4px";
Blacksmith_Box.style.width = "100%";
var tr900 = document.createElement("tr");
tr900.style.border = "solid 1px black";
tr900.style.backgroundColor =COLOR_TITLE;
var td900 = document.createElement("td");
ccreateCheckBox(td900, "OPT_BKBG_CHK", OPT_BKBG_CHK, " 自動武装・装甲強化", "この都市で自動的に武装・装甲の強化をします。", 0);
var tr91 = document.createElement("tr");
tr91.style.fontFamily = "MS ゴシック";
tr91.style.border = "solid 1px black";
tr91.style.backgroundColor =COLOR_BACK;
var td91 = document.createElement("td");
td91.style.padding = "3px";
var tr911 = document.createElement("tr");
var td911 = document.createElement("td"); td911.style.padding = "3px"; td911.style.verticalAlign = "bottom";
var td912 = document.createElement("td"); td912.style.padding = "3px"; td912.style.verticalAlign = "top"; td912.style.textAlign = "center";
var td913 = document.createElement("td"); td913.style.padding = "3px"; td913.style.verticalAlign = "top"; td913.style.textAlign = "center";
var td914 = document.createElement("td"); td914.style.padding = "3px"; td914.style.verticalAlign = "top"; td914.style.textAlign = "center";
var td915 = document.createElement("td"); td915.style.padding = "3px"; td915.style.verticalAlign = "top"; td915.style.textAlign = "center";
var td916 = document.createElement("td"); td916.style.padding = "3px"; td916.style.verticalAlign = "top"; td916.style.textAlign = "center";
var td917 = document.createElement("td"); td917.style.padding = "3px"; td917.style.verticalAlign = "top"; td917.style.textAlign = "center";
var td918 = document.createElement("td"); td918.style.padding = "3px"; td918.style.verticalAlign = "top"; td918.style.textAlign = "center";
var td919 = document.createElement("td"); td919.style.padding = "3px"; td919.style.verticalAlign = "top"; td919.style.textAlign = "center";
var td920 = document.createElement("td"); td920.style.padding = "3px"; td920.style.verticalAlign = "top"; td920.style.textAlign = "center";
var td921 = document.createElement("td"); td921.style.padding = "3px"; td921.style.verticalAlign = "top"; td921.style.textAlign = "center";
var td922 = document.createElement("td"); td922.style.padding = "3px"; td922.style.verticalAlign = "top"; td922.style.textAlign = "center";
var td923 = document.createElement("td"); td911.style.padding = "3px"; td911.style.verticalAlign = "bottom";
var td924 = document.createElement("td"); td912.style.padding = "3px"; td912.style.verticalAlign = "top"; td912.style.textAlign = "center";
var td925 = document.createElement("td"); td913.style.padding = "3px"; td913.style.verticalAlign = "top"; td913.style.textAlign = "center";
Blacksmith_Box.appendChild(tr900);
tr900.appendChild(td900);
Blacksmith_Box.appendChild(tr91);
tr91.appendChild(td91);
td91.appendChild(tr911);
tr911.appendChild(td911);
tr911.appendChild(td912);
tr911.appendChild(td913);
tr911.appendChild(td914);
tr911.appendChild(td915);
tr911.appendChild(td916);
tr911.appendChild(td917);
tr911.appendChild(td918);
tr911.appendChild(td919);
tr911.appendChild(td920);
tr911.appendChild(td921);
tr911.appendChild(td922);
tr911.appendChild(td923);
tr911.appendChild(td924);
tr911.appendChild(td925);
// ABfacContainer.appendChild(Blacksmith_Box);
ccreateText(td912, "dummy", "新兵", 0 );
ccreateText(td913, "dummy", "軽戦車", 0 );
ccreateText(td914, "dummy", "水雷艇", 0 );
ccreateText(td915, "dummy", "軽戦闘機", 0 );
ccreateText(td916, "dummy", "重戦車", 0 );
ccreateText(td917, "dummy", "駆逐艦", 0 );
ccreateText(td918, "dummy", "重戦闘機", 0 );
ccreateText(td919, "dummy", "工作員", 0 );
ccreateText(td920, "dummy", "特殊部隊", 0 );
ccreateText(td921, "dummy", "工兵", 0 );
ccreateText(td922, "dummy", "自走臼砲", 0 );
ccreateText(td923, "dummy", " ", 0 );
ccreateText(td923, "dummy", " ", 0 );
ccreateText(td911, "dummy", " ", 0 );
ccreateText(td911, "dummy", "武装レベル", 0 );
ccreateText(td911, "dummy", "装甲レベル", 0 );
ccreateTextBox(td912,"OPT_BK_LV1", OPT_BK_LV[1],"","新兵の武装レベル",8,0);
ccreateTextBox(td913,"OPT_BK_LV3", OPT_BK_LV[3],"","軽戦車の武装レベル",8,0);
ccreateTextBox(td914,"OPT_BK_LV8", OPT_BK_LV[8],"","水雷艇の武装レベル",8,0);
ccreateTextBox(td916,"OPT_BK_LV4", OPT_BK_LV[4],"","重戦車の武装レベル",8,0);
ccreateTextBox(td915,"OPT_BK_LV5", OPT_BK_LV[5],"","軽戦闘機の武装レベル",8,0);
ccreateTextBox(td917,"OPT_BK_LV9", OPT_BK_LV[9],"","駆逐艦の武装レベル",8,0);
ccreateTextBox(td918,"OPT_BK_LV7", OPT_BK_LV[7],"","重戦闘機の武装レベル",8,0);
var tbox919a = ccreateTextBox(td919,"OPT_BK_LV10", OPT_BK_LV[10],"","工作員の武装レベル",8,0);
var tbox920a = ccreateTextBox(td920,"OPT_BK_LV11", OPT_BK_LV[11],"","特殊部隊の武装レベル",8,0);
tbox919a.style.visibility = "hidden";
tbox920a.style.visibility = "hidden";
ccreateTextBox(td921,"OPT_BK_LV12", OPT_BK_LV[12],"","工兵の武装レベル",8,0);
ccreateTextBox(td922,"OPT_BK_LV13", OPT_BK_LV[13],"","自走臼砲の武装レベル",8,0);
ccreateTextBox(td912,"OPT_BG_LV1", OPT_BG_LV[1],"","新兵の装甲レベル",8,0);
ccreateTextBox(td913,"OPT_BG_LV3", OPT_BG_LV[3],"","軽戦車の装甲レベル",8,0);
ccreateTextBox(td914,"OPT_BG_LV8", OPT_BG_LV[8],"","水雷艇の装甲レベル",8,0);
ccreateTextBox(td916,"OPT_BG_LV4", OPT_BG_LV[4],"","重戦車の装甲レベル",8,0);
ccreateTextBox(td915,"OPT_BG_LV5", OPT_BG_LV[5],"","軽戦闘機の装甲レベル",8,0);
ccreateTextBox(td917,"OPT_BG_LV9", OPT_BG_LV[9],"","駆逐艦の装甲レベル",8,0);
ccreateTextBox(td918,"OPT_BG_LV7", OPT_BG_LV[7],"","重戦闘機の装甲レベル",8,0);
ccreateTextBox(td919,"OPT_BG_LV10", OPT_BG_LV[10],"","工作員の装甲レベル",8,0);
ccreateTextBox(td920,"OPT_BG_LV11", OPT_BG_LV[11],"","特殊部隊の装甲レベル",8,0);
ccreateTextBox(td921,"OPT_BG_LV12", OPT_BG_LV[12],"","工兵の装甲レベル",8,0);
ccreateTextBox(td922,"OPT_BG_LV13", OPT_BG_LV[13],"","自走臼砲の装甲レベル",8,0);
ccreateButton(td923, "初期化", "武装・装甲の設定レベルを消去します。", function() {clearInitArmsArmor()});
// ===== 残す資源量 ====
var Storage_Box = document.createElement("table");
Storage_Box.style.border ="solid 2px black";
Storage_Box.style.marginBottom = "4px";
Storage_Box.style.width = "100%";
var tra10 = document.createElement("tr");
tra10.style.border = "solid 1px black";
tra10.style.backgroundColor =COLOR_TITLE;
var tda10 = document.createElement("td");
ccreateText(tda10, "dummy", "■ 自動造兵・武装強化・装甲強化時に残す資源量 ■", 0 );
var tra1 = document.createElement("tr");
tra1.style.fontFamily = "MS ゴシック";
tra1.style.border = "solid 1px black";
tra1.style.backgroundColor =COLOR_BACK;
var tda1 = document.createElement("td");
tda1.style.padding = "3px";
var tra11 = document.createElement("tr");
var tra21 = document.createElement("tr");
var tda11 = document.createElement("td");
tda11.style.padding = "3px";
tda11.style.verticalAlign = "bottom";
var tda12 = document.createElement("td");
tda12.style.padding = "3px";
tda12.style.verticalAlign = "top";
tda12.style.textAlign = "center";
var tda13 = document.createElement("td");
tda13.style.padding = "3px";
tda13.style.verticalAlign = "top";
tda13.style.textAlign = "center";
var tda14 = document.createElement("td");
tda14.style.padding = "3px";
tda14.style.verticalAlign = "top";
tda14.style.textAlign = "center";
var tda15 = document.createElement("td");
tda15.style.padding = "3px";
tda15.style.verticalAlign = "top";
tda15.style.textAlign = "center";
var tda16 = document.createElement("td");
tda16.style.padding = "3px";
tda16.style.verticalAlign = "top";
tda16.style.textAlign = "center";
Storage_Box.appendChild(tra10);
tra10.appendChild(tda10);
Storage_Box.appendChild(tra1);
tra1.appendChild(tda1);
tda1.appendChild(tra11);
tra11.appendChild(tda11);
tra11.appendChild(tda12);
tra11.appendChild(tda13);
tra11.appendChild(tda14);
tra11.appendChild(tda15);
tra11.appendChild(tda16);
ccreateText(tda11, "dummy", " ", 0 );
ccreateText(tda11, "dummy", "残す資源量", 0 );
ccreateText(tda12, "dummy", "鉄", 0 );
ccreateTextBox(tda12,"OPT_BLD_WOOD", OPT_BLD_WOOD,"","鉄を残す量",8,0);
ccreateText(tda13, "dummy", "石油", 0 );
ccreateTextBox(tda13,"OPT_BLD_STONE", OPT_BLD_STONE,"","石油を残す量",8,0);
ccreateText(tda14, "dummy", "アルミ", 0 );
ccreateTextBox(tda14,"OPT_BLD_IRON", OPT_BLD_IRON,"","アルミを残す量",8,0);
ccreateText(tda15, "dummy", "食料", 0 );
ccreateTextBox(tda15,"OPT_BLD_RICE", OPT_BLD_RICE,"","食料を残す量",8,0);
// ccreateText(tda16, "dummy", " ", 0 );
ccreateButton(tda16, "初期化", "残す資源量の設定内容を消去します。", function() {clearInitRemainingRes()},54,10);
// ===== 確認 ====
var Operation_Box = document.createElement("table");
Operation_Box.style.border ="solid 0px gray";
Operation_Box.style.fontFamily = "MS ゴシック";
var tr711 = document.createElement("tr");
var td711 = document.createElement("td");
td711.style.padding = "3px";
td711.style.verticalAlign = "top";
Operation_Box.appendChild(tr711);
tr711.appendChild(td711);
ccreateButton(td711, "保存", "設定内容を保存して閉じます", function() {
SaveOptBuild(ABfacContainer.getAttribute('xyVillage'))
alert("保存しました");
closeInifacBox();
clearInterval(tidMain2);
setIndicator(0, 1);
if(getXY() == ABfacContainer.getAttribute('xyVillage')) {
var tid=unsafeWindow.setTimeout(function(){
// 新設定で、再度プランニングから実行
plan();
fetch();
},THREAD_CHANGE);
} else {
var tid=unsafeWindow.setTimeout(function(){
// 一時的にキャンセルされた巡回を再開
next();
},THREAD_CHANGE);
}
});
ccreateButton(td711, "閉じる", "設定内容を保存せず閉じます", function() {
closeInifacBox();
clearInterval(tidMain2);
setIndicator(0, 1);
var tid=unsafeWindow.setTimeout(function(){
// 一時的にキャンセルされた巡回を再開
next();
},THREAD_CHANGE);
});
// == コンテナ設定 ==
// 上段
var tbl000 = document.createElement("table"); // 全体
tbl000.style.border = "solid 0px lime";
var tr000 = document.createElement("tr");
var td001 = document.createElement("td"); // 左枠
td001.style.verticalAlign = "top";
td001.style.width = "Auto";
td001.appendChild(Build_Box);
var td002 = document.createElement("td"); // 右枠
td002.style.verticalAlign = "top";
td002.style.paddingLeft = "4px";
td002.style.width = "Auto";
td002.appendChild(Field_Box);
td002.appendChild(Scrap_Box);
td002.appendChild(Storage_Box);
// 中段
var tbl010 = document.createElement("table");
tbl010.style.border = "solid 0px red";
var tr010 = document.createElement("tr");
tr010.style.verticalAlign = "top";
var td011 = document.createElement("td");
var td012 = document.createElement("td");
var td013 = document.createElement("td");
// レイアウト
ABfacContainer.appendChild(tbl000);
tbl000.appendChild(tr000);
tr000.appendChild(td001);
tr000.appendChild(td002);
ABfacContainer.appendChild(tbl010);
tbl010.appendChild(tr010);
tr010.appendChild(td011);
tr010.appendChild(td012);
tr010.appendChild(td013);
ABfacContainer.appendChild(Soldier_Box);
ABfacContainer.appendChild(Blacksmith_Box);
ABfacContainer.appendChild(Operation_Box);
}
//ステイタス取得HTML追加
function addInifacHtml2(xyVillage) {
// add 2011.09.27 設定画面移動 @@@@
var popupLeft = GM_getValue(HOST+PGNAME + "_popup_left3", 10);
var popupTop = GM_getValue(HOST+PGNAME + "_popup_top3", 10);
if(popupLeft < 0) popupLeft = 0;
if(popupTop < 0) popupTop = 0;
// end
//表示コンテナ作成
var ABfacContainer = document.createElement("div");
ABfacContainer.id = "ABfacContainer2";
ABfacContainer.style.position = "absolute";
ABfacContainer.style.color = COLOR_BASE;
ABfacContainer.style.backgroundColor = COLOR_FRAME;
ABfacContainer.style.opacity= 1.0;
ABfacContainer.style.border = "solid 2px black";
ABfacContainer.style.left = popupLeft + "px";
ABfacContainer.style.top = popupTop + "px";
ABfacContainer.style.fontSize = "10px";
ABfacContainer.style.fontFamily = "MS ゴシック";
ABfacContainer.style.padding = "2px";
ABfacContainer.style.MozBorderRadius = "4px";
ABfacContainer.style.zIndex = 999;
ABfacContainer.setAttribute('xyVillage', xyVillage);
document.body.appendChild(ABfacContainer);
$e(ABfacContainer, "mousedown", function(event){
if( event.target != $("ABfacContainer2")) {return false;}
g_MD="ABfacContainer";
g_MX=event.pageX-parseInt(this.style.left,10);
g_MY=event.pageY-parseInt(this.style.top,10);
event.preventDefault();});
$e(document, "mousemove", function(event){
if(g_MD != "ABfacContainer") return true;
var ABfacContainer = $("ABfacContainer2");
if( !ABfacContainer ) return true;
var popupLeft = event.pageX - g_MX;
var popupTop = event.pageY - g_MY;
ABfacContainer.style.left = popupLeft + "px";
ABfacContainer.style.top = popupTop + "px";
//ポップアップ位置を永続保存
GM_setValue(HOST + PGNAME + "_popup_left3", popupLeft);
GM_setValue(HOST + PGNAME + "_popup_top3", popupTop);
});
$e(document, "mouseup", function(event){g_MD="";});
// ===== タイトル =====
var BaseName = document.createElement("span");
BaseName.style.border ="solid 0px red";
BaseName.style.padding = "3px";
BaseName.style.font = "bold 120% 'MS ゴシック'";
BaseName.style.color = "#F9C471";
BaseName.innerHTML = "内政設定";
var villages = loadVillages();
for(var i = 0; i < villages.length; i++) {
//表示中の設定対象拠点名の表示
if(xyVillage == villages[i][IDX_XY]){
BaseName.innerHTML = "内政設定:" + villages[i][IDX_BASE_NAME];
}
}
LoadOptDomestic(xyVillage);
ABfacContainer.appendChild(BaseName);
// ===== 内政設定 =====
var DomeSkillBox = document.createElement("table");
DomeSkillBox.style.border = "solid 2px black";
DomeSkillBox.style.margin = "0px 4px 4px 0px";
DomeSkillBox.style.width = "100%";
var tr1 = document.createElement("tr");
var td1 = document.createElement("td");
td1.colSpan = 5;
// td1.style.padding = "2px";
td1.style.backgroundColor = COLOR_TITLE;
ccreateText(td1, "dummy", "■ 内政スキル設定", 0 );
var tr2 = document.createElement("tr");
tr2.style.backgroundColor = COLOR_BACK;
tr2.style.border = "solid 1px black";
var td21 = document.createElement("td");
td21.style.padding = "3px";
td21.style.verticalAlign = "top";
var td22 = document.createElement("td");
td22.style.padding = "3px";
td22.style.verticalAlign = "top";
var td23 = document.createElement("td");
td23.style.padding = "3px";
td23.style.verticalAlign = "top";
var td24 = document.createElement("td");
td24.style.padding = "3px";
td24.style.verticalAlign = "top";
var td25 = document.createElement("td");
td25.style.padding = "3px";
td25.style.verticalAlign = "top";
DomeSkillBox.appendChild(tr1);
tr1.appendChild(td1);
DomeSkillBox.appendChild(tr2);
tr2.appendChild(td21);
tr2.appendChild(td22);
tr2.appendChild(td23);
tr2.appendChild(td24);
tr2.appendChild(td25);
// ABfacContainer.appendChild(DomeSkillBox);
ccreateCheckBox(td21, "OPT_DOME_SKILL1" , OPT_DOME_SKILL[1] , " " + DASkill[1] + " ", "この都市に来たら、自動的に内政スキル(" + DASkill[1] + ")を発動します。", 0);
ccreateCheckBox(td22, "OPT_DOME_SKILL2" , OPT_DOME_SKILL[2] , " " + DASkill[2] + " ", "この都市に来たら、自動的に内政スキル(" + DASkill[2] + ")を発動します。", 0);
ccreateCheckBox(td23, "OPT_DOME_SKILL16", OPT_DOME_SKILL[16], " " + DASkill[16] + " ", "この都市に来たら、自動的に内政スキル(" + DASkill[16] + ")を発動します。", 0);
ccreateCheckBox(td24, "OPT_DOME_SKILL12", OPT_DOME_SKILL[12], " " + DASkill[12] + " ", "この都市に来たら、自動的に内政スキル(" + DASkill[12] + ")を発動します。", 0);
// ccreateCheckBox(td25, "OPT_DOME_SKILL13", OPT_DOME_SKILL[13], " " + DASkill[13] + " ", "この都市に来たら、自動的に内政スキル(" + DASkill[13] + ")を発動します。", 0);
ccreateText(td25, "Dummy" , " ", 0);
ccreateCheckBox(td21, "OPT_DOME_SKILL4" , OPT_DOME_SKILL[4] , " " + DASkill[4] + " ", "この都市に来たら、自動的に内政スキル(" + DASkill[4] + ")を発動します。", 0);
ccreateCheckBox(td22, "OPT_DOME_SKILL5" , OPT_DOME_SKILL[5] , " " + DASkill[5] + " ", "この都市に来たら、自動的に内政スキル(" + DASkill[5] + ")を発動します。", 0);
// ccreateCheckBox(td23, "OPT_DOME_SKILL17", OPT_DOME_SKILL[17], " " + DASkill[17] + " ", "この都市に来たら、自動的に内政スキル(" + DASkill[17] + ")を発動します。", 0);
ccreateText(td23, "Dummy" , " ", 0);
ccreateCheckBox(td24, "OPT_DOME_SKILL14", OPT_DOME_SKILL[14], " " + DASkill[14] + " ", "この都市に来たら、自動的に内政スキル(" + DASkill[14] + ")を発動します。", 0);
ccreateCheckBox(td25, "OPT_DOME_SKILL15", OPT_DOME_SKILL[15], " " + DASkill[15] + " ", "この都市に来たら、自動的に内政スキル(" + DASkill[15] + ")を発動します。", 0);
ccreateCheckBox(td21, "OPT_DOME_SKILL7" , OPT_DOME_SKILL[7] , " " + DASkill[7] + " ", "この都市に来たら、自動的に内政スキル(" + DASkill[7] + ")を発動します。", 0);
ccreateCheckBox(td22, "OPT_DOME_SKILL8" , OPT_DOME_SKILL[8] , " " + DASkill[8] + " ", "この都市に来たら、自動的に内政スキル(" + DASkill[8] + ")を発動します。", 0);
ccreateCheckBox(td23, "OPT_DOME_SKILL18", OPT_DOME_SKILL[18], " " + DASkill[18] + " ", "この都市に来たら、自動的に内政スキル(" + DASkill[18] + ")を発動します。", 0);
ccreateCheckBox(td24, "OPT_DOME_SKILL19", OPT_DOME_SKILL[19], " " + DASkill[19], "この都市に来たら、自動的に内政スキル(" + DASkill[19] + ")を発動します。", 0);
// ccreateCheckBox(td25, "OPT_DOME_SKILL20", OPT_DOME_SKILL[20], " " + DASkill[20], "この都市に来たら、自動的に内政スキル(" + DASkill[20] + ")を発動します。", 0);
ccreateText(td25, "Dummy" , " ", 0);
ccreateCheckBox(td21, "OPT_DOME_SKILL10", OPT_DOME_SKILL[10], " " + DASkill[10], "この都市に来たら、自動的に内政スキル(" + DASkill[10] + ")を発動します。", 0);
ccreateCheckBox(td22, "OPT_DOME_SKILL11", OPT_DOME_SKILL[11], " " + DASkill[11], "この都市に来たら、自動的に内政スキル(" + DASkill[11] + ")を発動します。", 0);
ccreateText(td23, "Dummy" , " ", 0);
ccreateText(td24, "Dummy" , " ", 0);
ccreateText(td25, "Dummy" , " ", 0);
ccreateCheckBox(td21, "OPT_DOME_SKILL25", OPT_DOME_SKILL[25], " " + DASkill[25], "この都市に来たら、自動的に内政スキル(" + DASkill[25] + ")を発動します。", 0);
ccreateCheckBox(td22, "OPT_DOME_SKILL27", OPT_DOME_SKILL[27], " " + DASkill[27], "この都市に来たら、自動的に内政スキル(" + DASkill[27] + ")を発動します。", 0);
ccreateCheckBox(td23, "OPT_DOME_SKILL29", OPT_DOME_SKILL[29], " " + DASkill[29], "この都市に来たら、自動的に内政スキル(" + DASkill[29] + ")を発動します。", 0);
ccreateCheckBox(td24, "OPT_DOME_SKILL31", OPT_DOME_SKILL[31], " " + DASkill[31], "この都市に来たら、自動的に内政スキル(" + DASkill[31] + ")を発動します。", 0);
ccreateCheckBox(td25, "OPT_DOME_SKILL33", OPT_DOME_SKILL[33], " " + DASkill[33], "この都市に来たら、自動的に内政スキル(" + DASkill[33] + ")を発動します。", 0);
ccreateCheckBox(td21, "OPT_DOME_SKILL26", OPT_DOME_SKILL[26], " " + DASkill[26], "この都市に来たら、自動的に内政スキル(" + DASkill[26] + ")を発動します。", 0);
ccreateCheckBox(td22, "OPT_DOME_SKILL28", OPT_DOME_SKILL[28], " " + DASkill[28], "この都市に来たら、自動的に内政スキル(" + DASkill[28] + ")を発動します。", 0);
ccreateCheckBox(td23, "OPT_DOME_SKILL30", OPT_DOME_SKILL[30], " " + DASkill[30], "この都市に来たら、自動的に内政スキル(" + DASkill[30] + ")を発動します。", 0);
ccreateCheckBox(td24, "OPT_DOME_SKILL32", OPT_DOME_SKILL[32], " " + DASkill[32], "この都市に来たら、自動的に内政スキル(" + DASkill[32] + ")を発動します。", 0);
ccreateCheckBox(td25, "OPT_DOME_SKILL34", OPT_DOME_SKILL[34], " " + DASkill[34], "この都市に来たら、自動的に内政スキル(" + DASkill[34] + ")を発動します。", 0);
ccreateText(td21, "Dummy" , " ", 0);
ccreateCheckBox(td22, "OPT_DOME_SKILL3", OPT_DOME_SKILL[3], " " + DASkill[3], "この都市に来たら、自動的に内政スキル(" + DASkill[3] + ")を発動します。", 0);
ccreateCheckBox(td23, "OPT_DOME_SKILL6", OPT_DOME_SKILL[6], " " + DASkill[6], "この都市に来たら、自動的に内政スキル(" + DASkill[6] + ")を発動します。", 0);
ccreateCheckBox(td24, "OPT_DOME_SKILL9", OPT_DOME_SKILL[9], " " + DASkill[9], "この都市に来たら、自動的に内政スキル(" + DASkill[9] + ")を発動します。", 0);
ccreateText(td25, "Dummy" , " ", 0);
// ccreateCheckBox(td21, "OPT_DOME_SKILL21", OPT_DOME_SKILL[21], " " + DASkill[21], "この都市に来たら、自動的に内政スキル(" + DASkill[21] + ")を発動します。", 0);
ccreateText(td21, "Dummy" , " ", 0);
// ccreateCheckBox(td22, "OPT_DOME_SKILL22", OPT_DOME_SKILL[22], " " + DASkill[22], "この都市に来たら、自動的に内政スキル(" + DASkill[22] + ")を発動します。", 0);
ccreateText(td22, "Dummy" , " ", 0);
ccreateCheckBox(td23, "OPT_DOME_SKILL23", OPT_DOME_SKILL[23], " " + DASkill[23], "この都市に来たら、自動的に内政スキル(" + DASkill[23] + ")を発動します。", 0);
ccreateCheckBox(td24, "OPT_DOME_SKILL24", OPT_DOME_SKILL[24], " " + DASkill[24], "この都市に来たら、自動的に内政スキル(" + DASkill[24] + ")を発動します。", 0);
ccreateText(td25, "Dummy" , " ", 0);
// ===== 内政ユニット設定 =====
var DomeUnitBox = document.createElement("table");
{
DomeUnitBox.style.margin = "0px 4px 4px 0px";
DomeUnitBox.style.border ="solid 2px black";
DomeUnitBox.style.fontFamily = "MS ゴシック";
DomeUnitBox.style.width = "100%";
{
var tr1 = document.createElement("tr");
tr1.style.border = "solid 1px black";
tr1.style.backgroundColor =COLOR_TITLE;
var td11 = document.createElement("td");
td11.colSpan = 2;
// td11.style.padding = "2px";
td11.style.backgroundColor = COLOR_TITLE;
ccreateText(td11, "dummy", "■ 内政ユニット設定", 0 );
tr1.appendChild(td11);
DomeUnitBox.appendChild(tr1);
}
tr1.style.border = "solid 1px black";
tr1.style.backgroundColor =COLOR_BACK;
{
var tr2 = document.createElement("tr");
tr2.style.backgroundColor =COLOR_BACK;
var td21 = document.createElement("td");
td21.colSpan = 2;
td21.style.padding = "2px";
// td21.style.verticalAlign = "top";
var bi2 = ccreateButton(td21, "現在の内政ユニットを外す", "現在のユニットを内政から外しファイルに戻します。", function() {
var VillageId = getVillageID(this.getAttribute('xyVillage'));
unsetForceDomestic(0, VillageId);
closeInifacBox2();
},130,10);
tr2.appendChild(td21);
if( getXY() != xyVillage ) { bi2.disabled = true; }
DomeUnitBox.appendChild(tr2);
}
{
var tri = document.createElement("tr");
tri.style.backgroundColor =COLOR_BACK;
var tdi1 = document.createElement("td");
tdi1.style.padding = "3px";
tdi1.style.verticalAlign = "top";
ccreateText(tdi1, "dummy", "ユニット ID 1", 0 );
ccreateTextBox(tdi1, "OPT_DOME_UNIT1", OPT_DOME_UNIT[1], "", "内政用ユニットIDを設定します。", 10, 3);
tri.appendChild(tdi1);
var tdi2 = document.createElement("td");
tdi2.style.padding = "3px";
// tdi2.style.verticalAlign = "top";
var bi2 = ccreateButton(tdi2, "セット", "このユニットを内政に設定します。", function() {
var VillageId = getVillageID(ABfacContainer.getAttribute('xyVillage'));
var cardId = cgetTextBoxValue($("OPT_DOME_UNIT1"));
setDirectDomestic(cardId, VillageId);
closeInifacBox2();
},54,10);
tri.appendChild(tdi2);
if( getXY() != xyVillage ) { bi2.disabled = true; }
DomeUnitBox.appendChild(tri);
}
{
var tri = document.createElement("tr");
tri.style.backgroundColor =COLOR_BACK;
var tdi1 = document.createElement("td");
tdi1.style.padding = "3px";
tdi1.style.verticalAlign = "top";
ccreateText(tdi1, "dummy", "ユニット ID 2", 0 );
ccreateTextBox(tdi1, "OPT_DOME_UNIT2", OPT_DOME_UNIT[2], "", "内政用ユニットIDを設定します。", 10, 3);
tri.appendChild(tdi1);
var tdi2 = document.createElement("td");
tdi2.style.padding = "3px";
// tdi2.style.verticalAlign = "top";
var bi2 = ccreateButton(tdi2, "セット", "このユニットを内政に設定します。", function() {
var VillageId = getVillageID(ABfacContainer.getAttribute('xyVillage'));
var cardId = cgetTextBoxValue($("OPT_DOME_UNIT2"));
setDirectDomestic(cardId, VillageId);
closeInifacBox2();
},54,10);
tri.appendChild(tdi2);
if( getXY() != xyVillage ) { bi2.disabled = true; }
DomeUnitBox.appendChild(tri);
}
{
var tri = document.createElement("tr");
tri.style.backgroundColor =COLOR_BACK;
var tdi1 = document.createElement("td");
tdi1.style.padding = "3px";
tdi1.style.verticalAlign = "top";
ccreateText(tdi1, "dummy", "ユニット ID 3", 0 );
ccreateTextBox(tdi1, "OPT_DOME_UNIT3", OPT_DOME_UNIT[3], "", "内政用ユニットIDを設定します。", 10, 3);
tri.appendChild(tdi1);
var tdi2 = document.createElement("td");
tdi2.style.padding = "3px";
// tdi2.style.verticalAlign = "top";
var bi2 = ccreateButton(tdi2, "セット", "このユニットを内政に設定します。", function() {
var VillageId = getVillageID(ABfacContainer.getAttribute('xyVillage'));
var cardId = cgetTextBoxValue($("OPT_DOME_UNIT3"));
setDirectDomestic(cardId, VillageId);
closeInifacBox2();
},54,10);
tri.appendChild(tdi2);
if( getXY() != xyVillage ) { bi2.disabled = true; }
DomeUnitBox.appendChild(tri);
}
{
var tri = document.createElement("tr");
tri.style.backgroundColor =COLOR_BACK;
var tdi1 = document.createElement("td");
tdi1.style.padding = "3px";
tdi1.style.verticalAlign = "top";
ccreateText(tdi1, "dummy", "ユニット ID 4", 0 );
ccreateTextBox(tdi1, "OPT_DOME_UNIT4", OPT_DOME_UNIT[4], "", "内政用ユニットIDを設定します。", 10, 3);
tri.appendChild(tdi1);
var tdi2 = document.createElement("td");
tdi2.style.padding = "3px";
// tdi2.style.verticalAlign = "top";
var bi2 = ccreateButton(tdi2, "セット", "このユニットを内政に設定します。", function() {
var VillageId = getVillageID(ABfacContainer.getAttribute('xyVillage'));
var cardId = cgetTextBoxValue($("OPT_DOME_UNIT4"));
setDirectDomestic(cardId, VillageId);
closeInifacBox2();
},54,10);
tri.appendChild(tdi2);
if( getXY() != xyVillage ) { bi2.disabled = true; }
DomeUnitBox.appendChild(tri);
}
{
var tri = document.createElement("tr");
tri.style.backgroundColor =COLOR_BACK;
var tdi1 = document.createElement("td");
tdi1.style.padding = "3px";
tdi1.style.verticalAlign = "top";
ccreateText(tdi1, "dummy", "ユニット ID 5", 0 );
ccreateTextBox(tdi1, "OPT_DOME_UNIT5", OPT_DOME_UNIT[5], "", "内政用ユニットIDを設定します。", 10, 3);
tri.appendChild(tdi1);
var tdi2 = document.createElement("td");
tdi2.style.padding = "3px";
// tdi2.style.verticalAlign = "top";
var bi2 = ccreateButton(tdi2, "セット", "このユニットを内政に設定します。", function() {
var VillageId = getVillageID(ABfacContainer.getAttribute('xyVillage'));
var cardId = cgetTextBoxValue($("OPT_DOME_UNIT5"));
setDirectDomestic(cardId, VillageId);
closeInifacBox2();
},54,10);
tri.appendChild(tdi2);
if( getXY() != xyVillage ) { bi2.disabled = true; }
DomeUnitBox.appendChild(tri);
}
{
var tri = document.createElement("tr");
tri.style.backgroundColor =COLOR_BACK;
var tdi1 = document.createElement("td");
tdi1.style.padding = "3px";
tdi1.style.verticalAlign = "top";
ccreateText(tdi1, "dummy", "ユニット ID 6", 0 );
ccreateTextBox(tdi1, "OPT_DOME_UNIT6", OPT_DOME_UNIT[6], "", "内政用ユニットIDを設定します。", 10, 3);
tri.appendChild(tdi1);
var tdi2 = document.createElement("td");
tdi2.style.padding = "3px";
// tdi2.style.verticalAlign = "top";
var bi2 = ccreateButton(tdi2, "セット", "このユニットを内政に設定します。", function() {
var VillageId = getVillageID(ABfacContainer.getAttribute('xyVillage'));
var cardId = cgetTextBoxValue($("OPT_DOME_UNIT6"));
setDirectDomestic(cardId, VillageId);
closeInifacBox2();
},54,10);
tri.appendChild(tdi2);
if( getXY() != xyVillage ) { bi2.disabled = true; }
DomeUnitBox.appendChild(tri);
}
if(!ADVANCE) { DomeUnitBox.style.visibility = "hidden"; }
}
// ===== 確認 ====
var Operation_Box = document.createElement("table");
Operation_Box.style.border ="solid 0px gray";
Operation_Box.style.fontFamily = "MS ゴシック";
var tr711 = document.createElement("tr");
var td711 = document.createElement("td");
td711.style.padding = "3px";
td711.style.verticalAlign = "top";
Operation_Box.appendChild(tr711);
tr711.appendChild(td711);
ccreateButton(td711, "保存", "設定内容を保存して閉じます", function() {
SaveOptDomestic(ABfacContainer.getAttribute('xyVillage'))
alert("保存しました");
closeInifacBox2();
clearInterval(tidMain2);
setIndicator(0, 1);
if(getXY() == ABfacContainer.getAttribute('xyVillage')) {
var tid=unsafeWindow.setTimeout(function(){
// 新設定で、再度プランニングから実行
plan();
fetch();
},THREAD_CHANGE);
} else {
var tid=unsafeWindow.setTimeout(function(){
// 一時的にキャンセルされた巡回を再開
next();
},THREAD_CHANGE);
}
});
ccreateButton(td711, "閉じる", "設定内容を保存せず閉じます", function() {
closeInifacBox2();
clearInterval(tidMain2);
setIndicator(0, 1);
var tid=unsafeWindow.setTimeout(function(){
// 一時的にキャンセルされた巡回を再開
next();
},THREAD_CHANGE);
});
// == コンテナ設定 ==
// 上段
var tbl000 = document.createElement("table"); // 全体
tbl000.style.border = "solid 0px lime";
var tr000 = document.createElement("tr");
var td001 = document.createElement("td"); // 左枠
td001.style.verticalAlign = "top";
td001.style.width = "Auto";
td001.appendChild(DomeSkillBox)
var td002 = document.createElement("td"); // 右枠
td002.style.verticalAlign = "top";
td002.style.paddingLeft = "4px";
td002.style.width = "Auto";
td002.appendChild(DomeUnitBox);
// 中段
var tbl010 = document.createElement("table");
tbl010.style.border = "solid 0px red";
var tr010 = document.createElement("tr");
tr010.style.verticalAlign = "top";
var td011 = document.createElement("td");
var td012 = document.createElement("td");
var td013 = document.createElement("td");
// レイアウト
ABfacContainer.appendChild(tbl000);
tbl000.appendChild(tr000);
tr000.appendChild(td001);
tr000.appendChild(td002);
ABfacContainer.appendChild(tbl010);
tbl010.appendChild(tr010);
tr010.appendChild(td011);
tr010.appendChild(td012);
tr010.appendChild(td013);
ABfacContainer.appendChild(Operation_Box);
}
function createRadioBtn2 ( value, txt ) {
var radioLabel = document.createElement('label');
radioLabel.style.display = 'inline-block';
radioLabel.style.margin = '0 5px 0 0';
radioLabel.style.padding = '0px';
radioLabel.addEventListener ( 'click', function(){ OPT_SorH = value; }, true );
var radioLabelText = document.createTextNode(txt);
var radioButton = document.createElement('input');
radioButton.type = 'radio';
radioButton.name = 'SorH';
radioButton.value = value;
// radioButton.style.margin = '0 2px 0 0';
radioButton.style.verticalAlign = "top";
if( OPT_SorH == value ) radioButton.checked = true;
radioLabel.appendChild( radioButton );
radioLabel.appendChild( radioLabelText );
return radioLabel;
}
//内政設定の保存(XY MAX_LV CheckData)
function SaveOptDomestic(xyVillage){
//内政スキル使用フラグ
var strDomeSkill = "";
try {
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL1")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL2")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL3")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL4")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL5")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL6")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL7")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL8")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL9")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL10")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL11")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL12")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL13")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL14")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL15")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL16")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL17")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL18")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL19")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL20")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL21")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL22")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL23")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL24")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL25")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL26")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL27")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL28")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL29")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL30")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL31")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL32")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL33")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL34")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL35")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL36")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL37")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL38")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL39")) + DELIMIT2;
strDomeSkill += cgetCheckBoxValue($("OPT_DOME_SKILL40")) + DELIMIT2;
} catch(e) {
strSave += 0 + DELIMIT2; // チェックボックスが無かった場合の対策
}
// 内政ユニット設定
var strDomeUnit = "";
strDomeUnit += cgetCheckBoxValue($("OPT_ROTATE_DOMESTIC")) + DELIMIT2;
strDomeUnit += cgetTextBoxValue($("OPT_DOME_UNIT1")) + DELIMIT2;
strDomeUnit += cgetTextBoxValue($("OPT_DOME_UNIT2")) + DELIMIT2;
strDomeUnit += cgetTextBoxValue($("OPT_DOME_UNIT3")) + DELIMIT2;
strDomeUnit += cgetTextBoxValue($("OPT_DOME_UNIT4")) + DELIMIT2;
strDomeUnit += cgetTextBoxValue($("OPT_DOME_UNIT5")) + DELIMIT2;
strDomeUnit += cgetTextBoxValue($("OPT_DOME_UNIT6")) + DELIMIT2;
// まとめて、保存
var strSave = "";
strSave += "Domestic" + DELIMIT1;
strSave += strDomeSkill + DELIMIT1;
strSave += strDomeUnit + DELIMIT1;
GM_setValue(HOST+PGNAME+ "OptDomestic" + xyVillage, strSave);
}
//内政設定の読み込み
function LoadOptDomestic(xyVillage){
debugLog("=== Start LoadOptDomestic ===");
var src = GM_getValue(HOST+PGNAME + "OptDomestic" + xyVillage, "");
// 初期値設定
// 内政スキル使用設定
for(i=1; i<=40; i++){ OPT_DOME_SKILL[i] = 0;}
// 内政ユニット設定
OPT_ROTATE_DOMESTIC = 0;
for(i=1; i<=6; i++){ OPT_DOME_UNIT[i] = 0; }
// OPT_DOME_UNIT1 = 0;
// OPT_DOME_UNIT2 = 0;
// OPT_DOME_UNIT3 = 0;
// OPT_DOME_UNIT4 = 0;
// OPT_DOME_UNIT5 = 0;
// OPT_DOME_UNIT6 = 0;
var strTemp = src.split(DELIMIT1);
if(strTemp.length != 4) {
debugLog("拠点データなし");
} else {
var tempDomeSkill = strTemp[1].split(DELIMIT2);
var tempDomeUnit = strTemp[2].split(DELIMIT2);
// 内政スキル使用設定
for(i=1;i<=40;i++){
OPT_DOME_SKILL[i] = forInt(tempDomeSkill[i -1]);
}
// 内政ユニット設定
OPT_ROTATE_DOMESTIC = forInt(tempDomeUnit[0]);
for(i=1; i<=6; i++){ OPT_DOME_UNIT[i] = forInt(tempDomeUnit[i]); }
// OPT_DOME_UNIT1 = forInt(tempDomeUnit[1]);
// OPT_DOME_UNIT2 = forInt(tempDomeUnit[2]);
// OPT_DOME_UNIT3 = forInt(tempDomeUnit[3]);
// OPT_DOME_UNIT4 = forInt(tempDomeUnit[4]);
// OPT_DOME_UNIT5 = forInt(tempDomeUnit[5]);
// OPT_DOME_UNIT6 = forInt(tempDomeUnit[6]);
}
}
//建設設定の保存(XY MAX_LV CheckData)
function SaveOptBuild(xyVillage){
var i;
// 施設ごとの建設レベル保存用
var strBuild = "";
strBuild += cgetCheckBoxValue($("OPT_BLD")) + DELIMIT2; // 自動建設
for(i=0; i<=22;i++){
var opt = $("OPT_CHKBOX"+i);
strBuild += cgetCheckBoxValue(opt) + DELIMIT2;
}
for(i=0; i<=22;i++) {
var opt = $("OPT_CHKBOXLV" + i);
strBuild += cgetTextBoxValue(opt) + DELIMIT2;
}
//食料生産拠点化
var strKatemura = "";
strKatemura += cgetCheckBoxValue($("OPT_KATEMURA")) + DELIMIT2;
strKatemura += cgetTextBoxValue($("OPT_SOUKO_MAX")) + DELIMIT2;
//ビルド&スクラップ
var strScrap = "";
strScrap += cgetCheckBoxValue($("OPT_SCRAP")) + DELIMIT2; // ビルド&スクラッチ
strScrap += OPT_SorH + DELIMIT2; // 食品加工工場 or 兵舎
strScrap += cgetTextBoxValue($("OPT_MAX")) + DELIMIT2; // 対象上限数
if(cgetTextBoxValue($("OPT_MAXLV")) < 16) {
strScrap += cgetTextBoxValue($("OPT_MAXLV")) + DELIMIT2; // 対象上限LV
} else {
strScrap += 15 + DELIMIT2; // 対象上限LV
}
// 兵作成情報の保存
var strSoldier = "";
strSoldier += cgetCheckBoxValue($("OPT_BLD_SOL")) + DELIMIT2;; //自動造兵するかのフラグ
for(i=0;i<14;i++){
var opt = $("OPT_SOLDIER_MAX" + i);
strSoldier += cgetTextBoxValue(opt) + DELIMIT2;
}
for(i=0;i<14;i++){
var opt = $("OPT_SOLDIER_ADD" + i);
strSoldier += cgetTextBoxValue(opt) + DELIMIT2;
}
// 兵作成時に残る資源量
strSoldier += cgetTextBoxValue($("OPT_BLD_WOOD")) + DELIMIT2;
strSoldier += cgetTextBoxValue($("OPT_BLD_STONE")) + DELIMIT2;
strSoldier += cgetTextBoxValue($("OPT_BLD_IRON")) + DELIMIT2;
strSoldier += cgetTextBoxValue($("OPT_BLD_RICE")) + DELIMIT2;
// 武装装甲Lvの保存
var strWeapon = "";
strWeapon += cgetCheckBoxValue($("OPT_BKBG_CHK")) + DELIMIT2; //自動武装・装甲強化するかのフラグ
for(i=0;i<14;i++){
if((i == 10) || (i == 11)) {
strWeapon += "0" + DELIMIT2;
} else {
var opt = $("OPT_BK_LV" + i);
if(cgetTextBoxValue(opt) > 10) {
strWeapon += "10" + DELIMIT2;
} else {
strWeapon += cgetTextBoxValue(opt) + DELIMIT2;
}
}
}
for(i=0;i<14;i++){
var opt = $("OPT_BG_LV" + i);
if(cgetTextBoxValue(opt) > 10) {
strWeapon += "10" + DELIMIT2;
} else {
strWeapon += cgetTextBoxValue(opt) + DELIMIT2;
}
}
var strSave;
strSave = "AutoBuild" + DELIMIT1;
strSave += strBuild + DELIMIT1;
strSave += strKatemura + DELIMIT1;
strSave += strScrap + DELIMIT1;
strSave += strSoldier + DELIMIT1;
strSave += strWeapon + DELIMIT1;
GM_setValue(HOST+PGNAME+ "OptBuild" + xyVillage, strSave);
}
//拠点単位の設定の読み込み
function LoadOptBuild(xyVillage){
debugLog("=== Start LoadOptBuild ===");
var src = GM_getValue(HOST+PGNAME + "OptBuild" + xyVillage, "");
if(src == "") {
debugLog("拠点データなし");
// 拠点データがない場合
OPT_KATEMURA = 0;
OPT_SOUKO_MAX = 0;
for(i=0; i<=22; i++){ OPT_CHKBOX[i] = 0;}
for(i=0; i<=22; i++){ OPT_CHKBOXLV[i] = "0";}
// ビルド&スクラッチ情報
OPT_BLD = 0;
OPT_SCRAP = 0;
OPT_SorH = "DD";
OPT_MAX = 0;
OPT_MAXLV = 0;
OPT_MAX = 6;
OPT_MAXLV = 6;
// 兵作成情報
for(i=0;i<14;i++){ OPT_SOLDIER_MAX[i] = 0; }
for(i=0;i<14;i++){ OPT_SOLDIER_ADD[i] = 0; }
OPT_BLD_SOL = 0;
OPT_BLD_WOOD = 0;
OPT_BLD_STONE = 0;
OPT_BLD_IRON = 0;
OPT_BLD_RICE = 0;
OPT_BLD_WOOD = 0;
OPT_BLD_STONE = 0;
OPT_BLD_IRON = 0;
OPT_BLD_RICE = 0;
// 武装装甲Lv
for(i=0;i<14;i++){ OPT_BK_LV[i] = 0; }
for(i=0;i<14;i++){ OPT_BG_LV[i] = 0; }
OPT_BKBG_CHK = 0;
// SaveOptBuild(xyVillage); // 拠点情報の保存
return;
} else {
// 拠点データの読込
var i;
var strTemp = src.split(DELIMIT1);
//自動建築
var tempBuild = strTemp[1].split(DELIMIT2);
OPT_BLD = forInt(tempBuild[0]);
for(i=0; i<=22;i++){
OPT_CHKBOX[i] = forInt(tempBuild[1 + i]);
}
for(i=0; i<=22; i++){
OPT_CHKBOXLV[i] = forInt(tempBuild[24 + i]);
}
//食料生産拠点化
var tempKatemura = strTemp[2].split(DELIMIT2);
OPT_KATEMURA = forInt(tempKatemura[0]);
OPT_SOUKO_MAX = forInt(tempKatemura[1]);
// ビルド&スクラップ情報
var tempScrap = strTemp[3].split(DELIMIT2);
OPT_SCRAP = forInt(tempScrap[0]);
OPT_SorH = tempScrap[1];
OPT_MAX = tempScrap[2];
OPT_MAXLV = tempScrap[3];
if(OPT_MAX == undefined) { OPT_MAX = 6; }
if(OPT_MAXLV == undefined || OPT_MAXLV > 15) { OPT_MAXLV = 6; }
// 兵作成情報
var tempSoldier = strTemp[4].split(DELIMIT2);
OPT_BLD_SOL = forInt(tempSoldier[0]);
for(i=0;i<14;i++){
OPT_SOLDIER_MAX[i] = forInt(tempSoldier[1 + i]);
if(isNaN(OPT_SOLDIER_MAX[i])) { OPT_SOLDIER_MAX[i] = 0; };
}
for(i=0;i<14;i++){
OPT_SOLDIER_ADD[i] = forInt(tempSoldier[15 + i]);
if(isNaN(OPT_SOLDIER_ADD[i])) { OPT_SOLDIER_ADD[i] = 0; };
}
OPT_BLD_WOOD = forInt(tempSoldier[29]);
OPT_BLD_STONE = forInt(tempSoldier[30]);
OPT_BLD_IRON = forInt(tempSoldier[31]);
OPT_BLD_RICE = forInt(tempSoldier[32]);
if(isNaN(OPT_BLD_WOOD)) { OPT_BLD_WOOD = 0; };
if(isNaN(OPT_BLD_STONE)) { OPT_BLD_STONE = 0; };
if(isNaN(OPT_BLD_IRON)) { OPT_BLD_IRON = 0; };
if(isNaN(OPT_BLD_RICE)) { OPT_BLD_RICE = 0; };
// 武装装甲Lv
var tempWeapon = strTemp[5].split(DELIMIT2);
OPT_BKBG_CHK = forInt(tempWeapon[0]);
for(i=0;i<14;i++){
OPT_BK_LV[i] = forInt(tempWeapon[1 + i]);
if(isNaN(OPT_BK_LV[i])) { OPT_BK_LV[i] = 0; };
}
for(i=0;i<14;i++){
OPT_BG_LV[i] = forInt(tempWeapon[15 + i]);
if(isNaN(OPT_BG_LV[i])) { OPT_BG_LV[i] = 0; };
}
}
}
// 共通設定保存
function SaveOptCommon() {
//貿易取引用
var strMarket = "";
strMarket += cgetComboBoxValue($("OPT_CONV_TRADE_CENTER")) + DELIMIT2; // 貿易センターを利用する拠点
strMarket += cgetComboBoxValue($("OPT_CONV_EXPORT_RESOURSE")) + DELIMIT2; // 輸出資源
strMarket += cgetComboBoxValue($("OPT_CONV_EXPORT_MODE")) + DELIMIT2; // 輸出モード
strMarket += cgetTextBoxValue($("OPT_CONV_EXPORT_LIMIT")) + DELIMIT2; // 輸出制限量
strMarket += cgetComboBoxValue($("OPT_CONV_TRADE_AMOUNT")) + DELIMIT2; // 取引単位、1回の取引量
strMarket += cgetComboBoxValue($("OPT_CONV_DUTY")) + DELIMIT2; // 関税、取引時に寄付を行う
strMarket += cgetComboBoxValue($("OPT_CONV_INPORT_MODE_IRON")) + DELIMIT2; // 輸入モード:鉄
strMarket += cgetComboBoxValue($("OPT_CONV_INPORT_MODE_OIL")) + DELIMIT2; // 輸入モード:石油
strMarket += cgetComboBoxValue($("OPT_CONV_INPORT_MODE_ALUMI")) + DELIMIT2; // 輸入モード:アルミ
strMarket += cgetComboBoxValue($("OPT_CONV_INPORT_MODE_FOOD")) + DELIMIT2; // 輸入モード:食料
strMarket += cgetTextBoxValue($("OPT_CONV_INPORT_LIMIT_IRON")) + DELIMIT2; // 輸入制限量:鉄
strMarket += cgetTextBoxValue($("OPT_CONV_INPORT_LIMIT_OIL")) + DELIMIT2; // 輸入制限量:アルミ
strMarket += cgetTextBoxValue($("OPT_CONV_INPORT_LIMIT_ALUMI")) + DELIMIT2; // 輸入制限量:石油
strMarket += cgetTextBoxValue($("OPT_CONV_INPORT_LIMIT_FOOD")) + DELIMIT2; // 輸入制限量:食料
//自動寄付用
var strKifu = "";
strKifu += cgetCheckBoxValue($("OPT_KIFU")) + DELIMIT2; //寄付するかどうかのフラグ
strKifu += cgetTextBoxValue($("OPT_RICE_KIFU_MAX")) + DELIMIT2;
strKifu += cgetTextBoxValue($("OPT_RICE_KIFU")) + DELIMIT2; //自動内政用に修正
var strSave;
strSave = "Common" + DELIMIT1;
strSave += strMarket + DELIMIT1;
strSave += strKifu + DELIMIT1;
GM_setValue(HOST+PGNAME + "OptCommon", strSave);
}
// 共通設定の読み込み
function LoadOptCommon() {
debugLog("=== Start LoadOptCommon ===");
var src = GM_getValue(HOST+PGNAME + "OptCommon", "");
if(src == "") {
// 拠点データがない場合
debugLog("拠点データなし");
//自動資源変換
OPT_CONV_TRADE_CENTER = ""; // 貿易センターを利用する拠点
OPT_CONV_EXPORT_RESOURSE = "食料"; // 輸出資源
OPT_CONV_EXPORT_MODE = "資源を平均化"; // 輸出モード
OPT_CONV_EXPORT_LIMIT = 0; // 輸出制限量
OPT_CONV_TRADE_AMOUNT = "0.50 "; // 取引単位、1回の取引量
OPT_CONV_DUTY = "1.0"; // 関税、取引時に寄付を行う
OPT_CONV_INPORT_MODE_IRON = "常時輸入"; // 輸入モード:鉄
OPT_CONV_INPORT_MODE_OIL = "常時輸入"; // 輸入モード:石油
OPT_CONV_INPORT_MODE_ALUMI = "常時輸入"; // 輸入モード:アルミ
OPT_CONV_INPORT_MODE_FOOD = "常時輸入"; // 輸入モード:食料
OPT_CONV_INPORT_LIMIT_IRON = 0; // 輸入制限量:鉄
OPT_CONV_INPORT_LIMIT_OIL = 0; // 輸入制限量:石油
OPT_CONV_INPORT_LIMIT_ALUMI= 0; // 輸入制限量:アルミ
OPT_CONV_INPORT_LIMIT_FOOD = 0; // 輸入制限量:食料
//自動寄付
OPT_KIFU = 0;
OPT_RICE_KIFU_MAX = 0;
OPT_RICE_KIFU = 0;
// SaveOptCommon(); // 拠点情報の保存
return;
} else {
var i;
var strTemp = src.split(DELIMIT1);
var tempMarket = strTemp[1].split(DELIMIT2);
var tempKifu = strTemp[2].split(DELIMIT2);
//自動資源変換
OPT_CONV_TRADE_CENTER = tempMarket[0]; // 貿易センターを利用する拠点
OPT_CONV_EXPORT_RESOURSE = tempMarket[1]; // 輸出資源
OPT_CONV_EXPORT_MODE = tempMarket[2]; // 輸出モード
OPT_CONV_EXPORT_LIMIT = forInt(tempMarket[3]); // 輸出制限量
OPT_CONV_TRADE_AMOUNT = tempMarket[4]; // 取引単位、1回の取引量(文字列扱い)
OPT_CONV_DUTY = tempMarket[5]; // 関税、取引時に寄付を行う
OPT_CONV_INPORT_MODE_IRON = tempMarket[6]; // 輸入モード:鉄
OPT_CONV_INPORT_MODE_OIL = tempMarket[7]; // 輸入モード:石油
OPT_CONV_INPORT_MODE_ALUMI = tempMarket[8]; // 輸入モード:アルミ
OPT_CONV_INPORT_MODE_FOOD = tempMarket[9]; // 輸入モード:食料
OPT_CONV_INPORT_LIMIT_IRON = forInt(tempMarket[10]); // 輸入制限量:鉄
OPT_CONV_INPORT_LIMIT_OIL = forInt(tempMarket[11]); // 輸入制限量:石油
OPT_CONV_INPORT_LIMIT_ALUMI= forInt(tempMarket[12]); // 輸入制限量:アルミ
OPT_CONV_INPORT_LIMIT_FOOD = forInt(tempMarket[13]); // 輸入制限量:食料
if(OPT_CONV_TRADE_AMOUNT < 0.15) {
OPT_CONV_TRADE_AMOUNT = "0.50 ";
}
//自動寄付
OPT_KIFU = forInt(tempKifu[0]);
OPT_RICE_KIFU_MAX = forInt(tempKifu[1]);
OPT_RICE_KIFU = forInt(tempKifu[2]);
}
}
//拠点情報を読み出し
function loadVillages() {
var ret = new Array();
var src = GM_getValue(HOST+PGNAME + "InfoLog", "");
if(src == "") return ret;
var villages = src.split(DELIMIT1);
for(var i = 0; i < villages.length; i++) {
var fields = villages[i].split(DELIMIT2);
ret[i] = new Array();
ret[i][IDX_XY] = fields[IDX_XY];
ret[i][IDX_BASE_NAME] = fields[IDX_BASE_NAME];
ret[i][IDX_URL] = fields[IDX_URL];
ret[i][IDX_BASE_ID] = fields[IDX_BASE_ID];
ret[i][IDX_VISIT] = fields[IDX_VISIT];
ret[i][IDX_RESERVE] = fields[IDX_RESERVE];
ret[i][IDX_ACTIONS] = new Array();
if(fields[IDX_ACTIONS] == "") continue;
var actions = fields[IDX_ACTIONS].split(DELIMIT3);
for(var j = 0; j < actions.length; j++) {
ret[i][IDX_ACTIONS][j] = new Array();
if(actions[j] == "") continue;
var item = actions[j].split(DELIMIT4);
if(item[IDX2_TYPE] == undefined) item[IDX2_TYPE] = TYPE_CONSTRUCTION;
ret[i][IDX_ACTIONS][j][IDX2_STATUS] = item[IDX2_STATUS];
ret[i][IDX_ACTIONS][j][IDX2_TIME] = item[IDX2_TIME];
ret[i][IDX_ACTIONS][j][IDX2_TYPE] = item[IDX2_TYPE];
ret[i][IDX_ACTIONS][j][IDX2_ALERTED] = item[IDX2_ALERTED];
ret[i][IDX_ACTIONS][j][IDX2_DELETE] = item[IDX2_DELETE];
ret[i][IDX_ACTIONS][j][IDX2_ROTATION] = item[IDX2_ROTATION];
}
}
return ret;
}
//拠点情報を保存
function saveVillages(newData) {
//配列をデリミタ区切り文字列に変換
var newDataStr = new Array();
for(var i = 0; i < newData.length; i++) {
var villageData = newData[i];
var actions = villageData[IDX_ACTIONS];
//配列をデリミタ区切り文字列に変換
for(var j = 0; j < actions.length; j++) {
actions[j] = genDelimitString(actions[j], DELIMIT4);
}
villageData[IDX_ACTIONS] = genDelimitString(actions, DELIMIT3);
newDataStr[i] = genDelimitString(villageData, DELIMIT2);
}
if(newDataStr.length==0){
return ;
}
GM_setValue(HOST+PGNAME + "InfoLog", genDelimitString(newDataStr, DELIMIT1));
}
//デリミタ区切り文字列生成
function genDelimitString(dataArray, delimiter) {
var ret = "";
for(var i=0; i < dataArray.length; i++) {
if(dataArray[i] != undefined) ret += dataArray[i];
if(i < dataArray.length-1) ret += delimiter;
}
return ret;
}
//先頭ゼロ付加
function padZero(num) {
var result;
if(num < 10) {
result = "0" + num;
} else {
result = "" + num;
}
return result;
}
//先頭ゼロ除去
function trimZero(str) {
var res = str.replace(/^0*/, "");
if(res == "") res = "0";
return res;
}
//空白除去
function trim(str) {
if(str == undefined) return "";
return str.replace(/^[  \t\r\n]+|[  \t\r\n]+$/g, "");
}
//数値チェック
function isNumeric(num) {
if(num.match(/^-?[0-9]+$/)) {
return true;
}
return false;
}
//子Element取得
function getChildElement(parentNode, position) {
var current = 0;
for(var i = 0; i < parentNode.childNodes.length; i++){
var childNode = parentNode.childNodes[i];
if(childNode.nodeType == 1) {
if(current == position) {
return childNode;
}
current++;
}
}
return undefined;
}
//時刻計算(現在時刻に加算、引数hh:mm:ss)
function computeTime(clock) {
var hour = parseInt(trimZero(
clock.replace(/^([0-9]{2}):([0-9]{2}):([0-9]{2})$/, "$1")));
if(isNaN(hour)) hour = 0;
var min = parseInt(trimZero(
clock.replace(/^([0-9]{2}):([0-9]{2}):([0-9]{2})$/, "$2")));
if(isNaN(min)) min = 0;
var sec = parseInt(trimZero(
clock.replace(/^([0-9]{2}):([0-9]{2}):([0-9]{2})$/, "$3")));
if(isNaN(sec)) sec = 0;
var now = new Date();
var resTime = new Date();
resTime.setHours(now.getHours() + hour);
resTime.setMinutes(now.getMinutes() + min);
resTime.setSeconds(now.getSeconds() + sec);
return resTime;
}
//日時文字列編集(yyyy/mm/dd hh:mm:ss)
function generateDateString(date) {
var res = "" + date.getFullYear() + "/" + padZero(date.getMonth() + 1) +
"/" + padZero(date.getDate()) + " " + padZero(date.getHours()) + ":" +
padZero(date.getMinutes()) + ":" + padZero(date.getSeconds());
return res;
}
//日時文字列編集2(mm/dd hh:mm:ss)
function generateDateString2(date) {
var res = "" + padZero(date.getMonth() + 1) + "/" + padZero(date.getDate()) +
" " + padZero(date.getHours()) + ":" + padZero(date.getMinutes()) +
":" + padZero(date.getSeconds());;
return res;
}
//残時間文字列編集
function generateWaitTimeString(time1, time2) {
var result = "";
var waitTimeSec = Math.ceil((time1.getTime() - time2.getTime()) / 1000);
if( waitTimeSec < 0 ) { waitTimeSec = 0; }
result += Math.floor(waitTimeSec / (60*60));
result += ":";
result += padZero(Math.floor((waitTimeSec % (60*60)) / 60));
result += ":";
result += padZero(waitTimeSec % 60);
return result;
}
function ccreateTextBox(container, id, def, text, title, size, left )
{
left += 2;
var dv = document.createElement("div");
dv.style.padding = "2px";
dv.style.paddingLeft= left + "px";
// dv.style.paddingTop = "7px";
// dv.style.paddingBottom = "2px";
dv.title = title;
var tb = document.createElement("input");
tb.type = "text";
tb.id = id;
tb.value = def;
tb.size = size;
// tb.style.verticalAlign = "middle";
tb.style.textAlign = "right";
tb.style.paddingRight = "3px";
var tx = document.createTextNode(text);
tx.title = title;
dv.appendChild(tx);
dv.appendChild(tb);
container.appendChild(dv);
return tb;
}
// @@ ここから @@
function ccreateText(container, id, text, left )
{
left += 2;
var dv = document.createElement("div");
dv.style.padding = "2px";
dv.style.paddingLeft= left + "px";
dv.style.paddingBottom = "2px";
var lb = document.createElement("label");
lb.htmlFor = id;
lb.style.verticalAlign = "middle";
var tx = document.createTextNode(text);
tx.fontsize = "9px";
lb.appendChild( tx );
dv.appendChild(lb);
container.appendChild(dv);
}
// @@ ここまで @@
function ccreateCheckBox(container, id, def, text, title, left )
{
left += 2;
var dv = document.createElement("div");
dv.style.padding = "1px";
dv.style.paddingLeft= left + "px";
dv.title = title;
var cb = document.createElement("input");
cb.type = "checkbox";
cb.style.verticalAlign = "middle";
cb.id = id;
cb.value = 1;
if( def ) cb.checked = true;
var lb = document.createElement("label");
lb.htmlFor = id;
lb.style.verticalAlign = "middle";
var tx = document.createTextNode(text);
lb.appendChild( tx );
dv.appendChild(cb);
dv.appendChild(lb);
container.appendChild(dv);
return cb;
}
function ccreateButton(container, text, title, func, width, top)
{
var btn = document.createElement("input");
btn.style.padding = "0px";
btn.type = "button";
btn.value = text;
if(top != undefined) {
btn.style.marginTop = top + "px";
}
if(width == undefined) {
btn.style.width = "54px";
} else {
btn.style.width = width + "px";
}
btn.style.height = "22px";
btn.style.verticalAlign = "middle";
btn.title = title;
container.appendChild(document.createTextNode(" "));
container.appendChild(btn);
container.appendChild(document.createTextNode(" "));
$e(btn, "click", func);
return btn;
}
function cgetCheckBoxValue(id)
{
var c = id;
if( !c ) return 0;
if( !c.checked ) return 0;
return 1;
}
function cgetTextBoxValue(id)
{
var c = id;
if( !c ) return "";
return c.value;
}
function ccreateComboBox(container, id, sels, def, text, title, left )
{
left += 2;
var dv = document.createElement("div");
dv.style.padding = "1px";
dv.style.paddingLeft= left + "px";
dv.title = title;
var sel = document.createElement("select");
sel.id = id;
for(var i=0; i<sels.length; i++){
var opt = document.createElement("option");
opt.value = sels[i];
opt.appendChild(document.createTextNode(sels[i]));
sel.appendChild(opt);
}
if( def ) sel.value = def;
var tx = document.createTextNode(text);
tx.title = title;
dv.appendChild(tx);
dv.appendChild(sel);
container.appendChild(dv);
return sel;
}
function cgetComboBoxValue(id){
var c = id;
if( !c ) return "";
return c.value;
}
// 資源オーバーフロー防止処理
function OverFlowPrevention() {
var ichiba_x = -1; //貿易センターのX座標
var ichiba_y = -1; //貿易センターのY座標
var ichiba_lv = -1; //貿易センターのレベル
var area = get_area(document.body);
for(i=0;i<area.length;i++){
//貿易センターの座標を取得
if(area[i].name == "貿易センター") {
var Temp = area[i].xy.split(",");
ichiba_x = Temp[0];
ichiba_y = Temp[1];
ichiba_lv = area[i].lv;
}
}
if(ichiba_x < 0) { return; }
// 現在の状態
nResourceIron = parseInt( $("wood").innerHTML, 10 ); // 資源:鉄
nResourceOil = parseInt( $("stone").innerHTML, 10 ); // 資源:石油
nResourceAlumi = parseInt( $("iron").innerHTML, 10 ); // 資源:アルミ
nResourceFood = parseInt( $("rice").innerHTML, 10 ); // 資源:食料
nStorageMax = parseInt( $("rice_max").innerHTML, 10 ); // 備蓄容量
var OverFlowLimit = Math.floor(nStorageMax * 0.95); // 限界容量(備蓄の95%)
var ChangeSigenNum = Math.floor(nStorageMax * 0.05); // 取引量(備蓄の5%)
// 資源:鉄石油アルミが限界を超えている場合
if( (nResourceIron > OverFlowLimit) && (nResourceOil > OverFlowLimit) && (nResourceAlumi > OverFlowLimit) ) {
var max_sigen = 0;
if(nResourceIron > max_sigen) { max_sigen = nResourceIron; ChangeSigenNum = Math.floor(nResourceIron * 0.01); }
if(nResourceOil > max_sigen) { max_sigen = nResourceOil; ChangeSigenNum = Math.floor(nResourceOil * 0.01); }
if(nResourceAlumi > max_sigen) { max_sigen = nResourceAlumi; ChangeSigenNum = Math.floor(nResourceAlumi * 0.01); }
if(nResourceIron == max_sigen) {
changeResorceToResorce(CODE["鉄"], ChangeSigenNum, CODE["食料"], ichiba_x, ichiba_y);
} else if(nResourceOil == max_sigen) {
changeResorceToResorce(CODE["石油"], ChangeSigenNum, CODE["食料"], ichiba_x, ichiba_y);
} else if(nResourceAlumi == max_sigen) {
changeResorceToResorce(CODE["アルミ"], ChangeSigenNum, CODE["食料"], ichiba_x, ichiba_y);
}
}
// 資源:鉄が限界を超えているか?
if(nResourceIron > OverFlowLimit) {
// 一番少ない資源を探せ!
var min_sigen = 9999999999;
if(nResourceOil < min_sigen) { min_sigen = nResourceOil; }
if(nResourceAlumi < min_sigen) { min_sigen = nResourceAlumi; }
if(nResourceOil == min_sigen) {
changeResorceToResorce(CODE["鉄"], ChangeSigenNum, CODE["石油"], ichiba_x, ichiba_y);
} else if(nResourceAlumi == min_sigen) {
changeResorceToResorce(CODE["鉄"], ChangeSigenNum, CODE["アルミ"], ichiba_x, ichiba_y);
}
}
// 資源:石油が限界を超えているか?
if(nResourceOil > OverFlowLimit) {
// 一番少ない資源を探せ!
var min_sigen = 9999999999;
if(nResourceIron < min_sigen) { min_sigen = nResourceIron; }
if(nResourceAlumi < min_sigen) { min_sigen = nResourceAlumi; }
if(nResourceIron == min_sigen) {
changeResorceToResorce(CODE["石油"], ChangeSigenNum, CODE["鉄"], ichiba_x, ichiba_y);
} else if(nResourceAlumi == min_sigen) {
changeResorceToResorce(CODE["石油"], ChangeSigenNum, CODE["アルミ"], ichiba_x, ichiba_y);
}
}
// 資源:アルミが限界を超えているか?
if(nResourceAlumi > OverFlowLimit) {
// 一番少ない資源を探せ!
var min_sigen = 9999999999;
if(nResourceIron < min_sigen) { min_sigen = nResourceIron; }
if(nResourceOil < min_sigen) { min_sigen = nResourceOil; }
if(nResourceIron == min_sigen) {
changeResorceToResorce(CODE["アルミ"], ChangeSigenNum, CODE["鉄"], ichiba_x, ichiba_y);
} else if(nResourceOil == min_sigen) {
changeResorceToResorce(CODE["アルミ"], ChangeSigenNum, CODE["石油"], ichiba_x, ichiba_y);
}
}
// 資源:食料が限界を超えているか?
if(nResourceFood > OverFlowLimit) {
// 一番少ない資源を探せ!
var min_sigen = 9999999999;
if(nResourceIron < min_sigen) { min_sigen = nResourceIron; }
if(nResourceOil < min_sigen) { min_sigen = nResourceOil; }
if(nResourceAlumi < min_sigen) { min_sigen = nResourceAlumi; }
if(nResourceIron == min_sigen) {
changeResorceToResorce(CODE["食料"], ChangeSigenNum, CODE["鉄"], ichiba_x, ichiba_y);
} else if(nResourceOil == min_sigen) {
changeResorceToResorce(CODE["食料"], ChangeSigenNum, CODE["石油"], ichiba_x, ichiba_y);
} else if(nResourceAlumi == min_sigen) {
changeResorceToResorce(CODE["食料"], ChangeSigenNum, CODE["アルミ"], ichiba_x, ichiba_y);
}
}
}
//実取引処理通信部 @@
function changeResorceToResorce(from, tc, to, x, y) {
var c={};
c['x'] = parseInt(x);
c['y'] = parseInt(y);
c['change_btn'] = encodeURIComponent("はい");
c['tc'] = parseInt(tc);
c['st'] = 1;
c['tf_id'] = parseInt(from);
c['tt_id'] = parseInt(to);
c['ssid'] = j$.cookie('SSID');
j$.post("http://"+HOST+"/facility/facility.php?x=" + parseInt(x) + "&y=" + parseInt(y) ,c,function(){ act(); });
}
//自動寄付処理
function actAutoDonate() {
debugLog("=== Start actAutoDonate ===");
//食料が指定量より多いかチェック
if($("rice").innerHTML < OPT_RICE_KIFU_MAX) {
act();
return;
}
var rice = OPT_RICE_KIFU;
/*
var data = "contributionForm=&wood=0&stone=0&iron=0&rice=" + rice + "&contribution=1";
var tid=unsafeWindow.setTimeout(function(){
GM_xmlhttpRequest({
method:"POST",
url:"http://" + HOST + "/alliance/level.php",
headers:{"Content-type":"application/x-www-form-urlencoded"},
data: data,
// onload:function(x){console.log(x.responseText);}
onload:function(x){;}
});
},INTERVAL);
*/
var c={};
c['contributionForm'] = "";
c['wood'] = 0;
c['stone'] = 0;
c['iron'] = 0;
c['rice'] = parseInt(rice);
c['contribution'] = 1;
j$.post("http://"+HOST+"/alliance/level.php",c,function(){
act();
});
// var tid=unsafeWindow.setTimeout(function(){location.reload(false);},INTERVAL);
}
///////////////////////////////////////////////
//Chrome用GM_関数
// @copyright 2009, James Campos
// @license cc-by-3.0; http://creativecommons.org/licenses/by/3.0/
if((typeof GM_getValue == 'undefined') || (GM_getValue('a', 'b') == undefined)) {
GM_addStyle = function(css) {
var style = document.createElement('style');
style.textContent = css;
document.getElementsByTagName('head')[0].appendChild(style);
};
GM_deleteValue = function(name) {
localStorage.removeItem(name);
};
GM_getValue = function(name, defaultValue) {
var value = localStorage.getItem(name);
if(!value)
return defaultValue;
var type = value[0];
value = value.substring(1);
switch (type) {
case 'b':
return value == 'true';
case 'n':
return Number(value);
default:
return value;
}
};
GM_log = function(message) {
if(window.opera) {
opera.postError(message);
return;
}
};
GM_registerMenuCommand = function(name, funk) {
//todo
};
GM_setValue = function(name, value) {
value = (typeof value)[0] + value;
localStorage.setItem(name, value);
};
}
function ccreateCheckBox0(container, id, def, text, title, left, villages)
{
left += 2;
var cb = document.createElement("input");
cb.type = "checkbox";
cb.style.verticalAlign = "middle";
cb.id = id;
//cb.value = 1;
//if( def ) cb.checked = true;
cb.checked = def;
cb.addEventListener("change",
// @@@
function() {
for(var i = 0; i < villages.length; i++) {
GM_setValue(HOST+PGNAME+"OPT_CHKBOX_AVC_" + i, document.getElementById('OPT_CHKBOX_AVC_' + i).checked);
}
}, true);
container.appendChild(cb);
return cb;
}
// 2011.06.22
function ccreateCheckBoxKai2(container, id, def, text, title, left )
{
left += 2;
var dv = document.createElement("div");
dv.style.padding = "1px";
dv.style.paddingLeft= left + "px";
dv.title = title;
var cb = document.createElement("input");
cb.type = "checkbox";
cb.style.verticalAlign = "middle";
cb.id = id + def;
cb.value = 1;
var def2 = id + "" + "[" + def + "]";
if( eval(def2) ) cb.checked = true;
var lb = document.createElement("label");
lb.htmlFor = id;
lb.style.verticalAlign = "middle";
var tx = document.createTextNode(text);
tx.fontsize = "10px";
lb.appendChild( tx );
var tb = document.createElement("input");
tb.type = "text";
tb.id = id + "LV" + def;
tb.value = eval(id + "LV" + "[" + def + "]");
tb.style.verticalAlign = "middle";
tb.style.textAlign = "right";
tb.style.paddingRight = "3px";
tb.size = 4;
dv.appendChild(cb);
dv.appendChild(lb);
dv.appendChild(tb);
container.appendChild(dv);
return cb;
}
///////////////////////////////////////////////
// Time 部分の追加
///////////////////////////////////////////////
function sortAction(actions) {
actions.sort(function(val1, val2) {
var diff = (new Date(val1[IDX2_TIME])).getTime()
- (new Date(val2[IDX2_TIME])).getTime();
return diff;
});
return actions;
}
//拠点情報を保存
function saveVillage(newData, type) {
var villages = loadVillages();
//新旧データをマージ
var exists = false;
for(var i = 0; i < villages.length; i++) {
var villageData = villages[i];
//作業リスト更新
if(villageData[IDX_XY] == newData[IDX_XY]) {
exists = true;
villageData[IDX_BASE_NAME] = newData[IDX_BASE_NAME];
var actions = villageData[IDX_ACTIONS];
for(var j = actions.length - 1; j >= 0; j--) {
if(actions[j][IDX2_TYPE] != type) continue;
var endTime = new Date(actions[j][IDX2_TIME]);
var nowTime = new Date();
if(isNaN(endTime.valueOf()) || endTime > nowTime) actions.splice(j, 1);
}
villageData[IDX_ACTIONS] = actions.concat(newData[IDX_ACTIONS]);
}
villages[i] = villageData;
}
if(!exists) villages.push(newData);
saveVillages(villages);
}
function confirmTimer() {
//基準時刻より前の作業情報を削除
var baseTime = new Date();
var villages = loadVillages();
for(var i = 0; i < villages.length; i++) {
var actions = villages[i][IDX_ACTIONS];
for(var j = actions.length - 1; j >=0 ; j--) {
var actionTime = new Date(actions[j][IDX2_TIME]);
if(actionTime <= baseTime) {
actions.splice(j, 1);
}
}
villages[i][IDX_ACTIONS] = actions;
}
//保存
saveVillages(villages);
}
function updateLogVisit(xyVillage) {
// 巡回時刻を更新
var baseTime = new Date();
var strNowTime = generateDateString(baseTime);
var villages = loadVillages();
for(var i = 0; i < villages.length; i++) {
if(xyVillage == villages[i][IDX_XY]) {
villages[i][IDX_VISIT] = strNowTime;
if(!getLogMode()) {
// 過去ログを削除
var actions = villages[i][IDX_ACTIONS];
for(var j = actions.length - 1; j >=0 ; j--) {
var actionTime = new Date(actions[j][IDX2_TIME]);
if(actionTime <= baseTime) {
actions.splice(j, 1);
}
}
villages[i][IDX_ACTIONS] = actions;
}
break;
}
}
//保存
saveVillages(villages);
}
//施設内作業中取得
function getTrainingSoldier(htmldoc) {
var data = getMyVillage();
data[IDX_ACTIONS] = new Array();
var tt={};
//施設名
var facilityName = "";
var h2Elem = document.evaluate('//*[@id="gray02Wrapper"]/h2', htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(h2Elem.getSnapshotLength != 0) {
facilityName = trim(h2Elem.snapshotItem(0).innerHTML);
}
// 作成数の兵数と兵種
var mSolName = document.evaluate('//th[@class="mainTtl"]',htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
// var mSolNum = document.evaluate('//td',htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var mSolNum = document.evaluate('//*[@class="commonTables"]//td',htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
// 作成できる兵種の種類数
var mSolTypeT = document.evaluate('//table[@class="commonTables"]',htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(mSolTypeT.snapshotLength > 2) {
var mSolType = document.evaluate('//*[@class="mainTtl"]',mSolTypeT.snapshotItem(1), null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for(var r=1;r < mSolType.snapshotLength;r++) {
tt[r-1] = new Array()
tt[r-1] = mSolType.snapshotItem(r).innerHTML
var endflg = false;
if(r > 1) {
for(var q=0;q<r-1;q++) {
if(tt[q] == mSolType.snapshotItem(r).innerHTML) {
endflg = true;
break;
}
}
}
if(endflg) {
var mSolTypeNum = r - 1;
break;
}
}
}
// 施設が最大レベルかの判断
var commentNum = document.evaluate('//*[@class="lvupFacility"]/*[@class="main"]', htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(commentNum.snapshotItem(0).innerHTML.match("最大レベル")) {
maxLv = 3;
} else {
maxLv = 0;
}
//作業中情報取得
var idx = 0;
while (1) {
var actionType = TYPE_FACILITY + facilityName;
var clockElem = document.evaluate('//*[@id=' + escapeXPathExpr("area_timer" + idx) + ']', htmldoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0);
if(clockElem == undefined) {
saveVillage(data, actionType); // 技術研究所で未研究の場合過去の研究情報の削除
break;
}
var mainTtls = document.evaluate('../../../tr/th[@class="mainTtl"]', clockElem, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(mainTtls.snapshotLength == 0) break;
var clock = trim(clockElem.innerHTML);
if(clock == "") break;
var mainTtlElem = mainTtls.snapshotItem(idx);
if(mainTtlElem == undefined) break;
var status = trim(mainTtlElem.innerHTML);
if(status == "") break;
var actionType = TYPE_FACILITY + facilityName;
data[IDX_ACTIONS][idx] = new Array();
if(facilityName == "武装研究所" || facilityName == "装甲研究所" || facilityName == "技術研究所") {
data[IDX_ACTIONS][idx][IDX2_STATUS] = facilityName + ":" + status;
} else {
try {
data[IDX_ACTIONS][idx][IDX2_STATUS] = facilityName + ":" + status + "(" + mSolNum.snapshotItem(8 + mSolTypeNum + (mSolTypeNum * 5) + (idx * 4) - (1 * maxLv)).innerHTML + ")";
}catch(e) {
data[IDX_ACTIONS][idx][IDX2_STATUS] = facilityName + ":" + status + " (error)";
}
}
data[IDX_ACTIONS][idx][IDX2_TIME] = generateDateString(computeTime(clock));
data[IDX_ACTIONS][idx][IDX2_TYPE] = actionType;
data[IDX_ACTIONS][idx][IDX2_DELETE] = false;
data[IDX_ACTIONS][idx][IDX2_ROTATION] = 0;
idx++;
}
function escapeXPathExpr(text) {
var matches = text.match(/[^"]+|"/g);
function esc(t) {
return t == '"' ? ('\'' + t + '\'') : ('"' + t + '"');
}
if(matches) {
if(matches.length == 1) {
return esc(matches[0]);
}
else {
var results = [];
for(var i = 0; i < matches.length; i ++) {
results.push(esc(matches[i]));
}
return 'concat(' + results.join(', ') + ')';
}
}
else {
return '""';
}
}
}
//常駐モード取得
function getStayMode() {
var result = GM_getValue(HOST+PGNAME + "_stay_mode", true);
return result;
}
//常駐モード変更
function changeStayMode(value) {
GM_setValue(HOST+PGNAME + "_stay_mode", value);
}
//過去ログ表示モード取得
function getLogMode() {
var result;
var value = GM_getValue(HOST+PGNAME + "_log_mode", 1);
if(value == 1) {
result = true;
} else {
result = false;
}
return result;
}
//過去ログ表示モード変更
function changeLogMode(value) {
if(value) {
GM_setValue(HOST+PGNAME + "_log_mode", 1);
} else {
GM_setValue(HOST+PGNAME + "_log_mode", 0);
}
}
function forInt(num,def){
// console.log(num + " : " + def);
if(def == undefined) { def = 0; }
if(isNaN(parseInt(num))) {
return def;
} else {
return parseInt(num);
}
}
//現在の内政ユニットを内政から外して、デッキからファイルに戻す
function unsetForceDomestic(cardId, VillageId){
debugLog("=== Start unsetForceDomestic cardId:" + cardId + " ===");
setIndicator(1, 7);
//現在都市の内政ユニットIDを取得
if(cardId == 0) {
var tid=unsafeWindow.setTimeout(function(){
setIndicator(2, 7);
j$.get("http://" + HOST + "/card/domestic_setting.php",function(x){
setIndicator(3, 7);
var htmldoc = document.createElement("html");
htmldoc.innerHTML = x.responseText;
var general = $x('//*[@class="commonTables"]//*[@class="general"]', htmldoc);
if(!general) {
setIndicatorError();
return;
}
if(!general.innerHTML.match("内政中")) {
setIndicatorError();
return;
}
var link = $x('//*[@class="illust"]', general);
var strCardId = link.innerHTML.match(/(?:cardWindow_)(\d+)(?:\")/);
cardId = parseInt(strCardId[1]);
debugLog("=== unsetForceDomestic get cardId=" + cardId );
if( cardId != 0 ) {
unsetDirectDomestic(cardId, VillageId);
} else {
setIndicatorError();
}
});
},INTERVAL);
} else {
unsetDirectDomestic(cardId, VillageId);
}
}
//ユニットを内政から外して、デッキからファイルに戻す
function unsetDirectDomestic(cardId, VillageId){
debugLog("=== Start unsetDomestic cardId:" + cardId + " ===");
setIndicator(4, 7);
//内政から外す
j$.get("http://" + HOST + "/card/domestic_setting.php?mode=u_domestic&id=" + cardId, function(x){
setIndicator(5, 7);
var tid=unsafeWindow.setTimeout(function(){
setIndicator(6, 7);
//ファイルに戻す
var c={};
c['mode'] = "unset";
c['target_card'] = cardId
c['wild_card_flg'] = "";
c['inc_point'] = "";
c['btn_change_flg'] = "";
c['l'] = "";
c['ssid'] = j$.cookie('SSID');
j$.post("http://" + HOST + "/card/deck.php" ,c,function(){
setIndicator(7, 7);
var tid=unsafeWindow.setTimeout(function(){location.reload();},INTERVAL);
});
},INTERVAL);
});
}
//ユニットをファイルからデッキにセットして、内政設定する
function setDirectDomestic(cardId, VillageId){
debugLog("=== Start setDirectDomestic cardId:" + cardId + " VillageId:" + VillageId + " ===");
setIndicator(1, 5);
var tid1=unsafeWindow.setTimeout(function(){
setIndicator(2, 5);
//デッキにセット
var c={};
c['mode'] = "set";
c['target_card'] = cardId
c['wild_card_flg'] = "";
c['boost_card_flg'] = "";
c['inc_point'] = "";
c['btn_change_flg'] = "";
c['l'] = "";
c['p'] = 1;
c['ssid'] = j$.cookie('SSID');
c['selected_village[' + cardId +']'] = VillageId;
c['selected_village%5B' + cardId + '%5D'] = VillageId;
j$.post("http://" + HOST + "/card/deck.php" ,c,function(){
setIndicator(3, 5);
var tid2=unsafeWindow.setTimeout(function(){
setIndicator(4, 5);
//内政に設定
j$.get("http://" + HOST + "/card/domestic_setting.php?id=" + cardId + "&mode=domestic", function(x){
setIndicator(5, 5);
//内政スキル使用チェック
var tid3=unsafeWindow.setTimeout(function(){location.reload();},INTERVAL);
});
},INTERVAL);
});
},INTERVAL);
}
function Chek_Sigen(area){
//建設LvUP必要資源
var cost_wood = [
[10,35,40,15],
[25, 88, 100, 38],
[58, 202, 230, 86],
[173, 604, 690, 259],
[431, 1510, 1725, 647],
[1466, 2847, 3019, 1294],
[2493, 4839, 5132, 2200],
[3490, 6775, 7186, 3080],
[4537, 8807, 9341, 4003],
[5898, 11450, 12144, 5204],
[8119, 14434, 15787, 6766],
[11366, 20207, 22101, 9472],
[17050, 30311, 33152, 14208],
[25575, 45467, 49729, 21312],
[38362, 68199, 74593, 31698]
];
var cost_stone= [
[40, 10, 35, 15],
[100, 25, 88, 38],
[230, 58, 202, 86],
[690, 173, 604, 259],
[1725, 431, 1510, 647],
[3019, 1466, 2847, 1294],
[5132, 2493, 4839, 2200],
[7186, 3490, 6775, 3080],
[9341, 4537, 8807, 4003],
[12144, 5898, 11450, 5204],
[15787, 8119, 14434, 6766],
[22101, 11366, 20207, 9472],
[33152, 17050, 30311, 14208],
[49729, 25575, 45467, 21312],
[74593, 38362, 68199, 31968]
];
var cost_iron=[
[35, 40, 10, 15],
[88, 100, 25, 38],
[202, 230, 58, 86],
[604, 690, 173, 259],
[1510, 1725, 431, 647],
[2847, 3019, 1466, 1294],
[4839, 5132, 2493, 2200],
[6775, 7186, 3490, 3080],
[8807, 9341, 4537, 4003],
[11450, 12144, 5898, 5204],
[14434, 15787, 8119, 6766],
[20207, 22101, 11366, 9472],
[30311, 33152, 17050, 14208],
[45467, 49729, 25575, 21312],
[68199, 74593, 38362, 31968]
];
var cost_rice=[
[35, 35, 30, 0],
[88, 88, 75, 0],
[202, 202, 173, 0],
[604, 604, 518, 0],
[1510, 1510, 1294, 0],
[3019, 3019, 2588, 0],
[5132, 5132, 4399, 0],
[7186, 7186, 6159, 0],
[9341, 9341, 8007, 0],
[12144, 12144, 10409, 0],
[15787, 15787, 13532, 0],
[22101, 22101, 18944, 0],
[33152, 33152, 28416, 0],
[49729, 49729, 42625, 0],
[74593, 74593, 63937, 0]
];
var cost_souko=[
[83, 141, 83, 63],
[167, 281, 167, 126],
[300, 506, 300, 226],
[479, 810, 479, 362],
[671, 1134, 671, 507],
[1044, 1253, 1044, 835],
[1462, 1754, 1462, 1169],
[1973, 2368, 1973, 1578],
[2664, 3196, 2664, 2131],
[3596, 4315, 3596, 2877],
[4854, 5825, 4854, 3883],
[6311, 7573, 6311, 5048],
[8204, 9845, 8204, 6563],
[10255, 12306, 10255, 8204],
[12819, 15382, 12819, 10255],
[15382, 18459, 15382, 12306],
[18459, 22151, 18459, 14767],
[21228, 21228, 25473, 16982],
[24412, 29294, 24412, 19529],
[28074, 33688, 28074, 22459]
];
var cost_syukusya=[
[35, 20, 35, 80],
[53, 30, 53, 120],
[89, 51, 89, 204],
[147, 84, 147, 337],
[228, 130, 228, 522],
[336, 192, 336, 767],
[476, 272, 476, 1089],
[653, 373, 653, 1492],
[868, 496, 868, 1984],
[1129, 645, 1129, 2580],
[2032, 1161, 2032, 4644],
[3658, 2090, 3658, 4644],
[6951, 3971, 6950, 15882],
[13205, 7544, 13205, 30177],
[25090, 14334, 25090, 57336]
];
var cost_kojo=[
[780, 1560, 1560, 3900],
[1248, 2496, 2496, 6240],
[1997, 3994, 3994, 9984],
[4193, 6290, 6290, 11182],
[5871, 8806, 8806, 15655],
[10958, 13698, 13698, 16437],
[15342, 19177, 19177, 23013],
[19944, 24930, 24930, 29916],
[25928, 32410, 32410, 38891],
[33706, 42132, 42132, 50559]
];
var cost_suisya=[
[2940, 980, 980, 4900],
[4704, 1568, 1568, 7840],
[7526, 2509, 2509, 12544],
[10537, 5268, 5268, 14049],
[14751, 7376, 7376, 19668],
[20652, 13768, 13768, 20652],
[28913, 19275, 19275, 28913],
[37587, 25058, 25058, 37587],
[48863, 32576, 32576, 48863],
[63523, 42348, 42348, 63523]
];
var cost_ichiba=[
[100, 100, 50, 50],
[334, 334, 191, 191],
[1035, 1035, 592, 592],
[2795, 2795, 1600, 1600],
[6328, 6328, 4218, 4218],
[13288, 13288, 8859, 8859],
[25248, 25248, 16832, 16832],
[42921, 42921, 28614, 28614],
[64381, 64381, 42921, 42921],
[90134, 90134, 60089, 60089]
];
var cost_kenkyu=[
[275, 110, 110, 55],
[413, 165, 165, 83],
[619, 248, 248, 124],
[1486, 836, 836, 557],
[2228, 1253, 1253, 836],
[7521, 6267, 6267, 5015],
[13538, 11282, 11282, 9025],
[21436, 17862, 17862, 14290],
[44675, 37228, 37228, 29784],
[87725, 73104, 73104, 58483]
];
var cost_kunren=[
[1500, 1600, 2500, 3300],
[2100, 2240, 3500, 3300],
[2940, 3136, 4900, 6468],
[6629, 7326, 13955, 6978],
[13257, 14653, 27910, 13955],
[32097, 37679, 55821, 13955],
[64194, 75358, 111642, 27910],
[128388, 150716, 223283, 55821],
[256776, 301432, 446566, 111642],
[513551, 602865, 893133, 223283]
];
var cost_kajiba=[
[150, 200, 340, 170],
[400, 300, 680, 340],
[780, 585, 1326, 663],
[1482, 1112, 2519, 1260],
[2742, 2056, 4661, 2330],
[4935, 3701, 8390, 4195],
[8636, 6477, 14682, 7341],
[17640, 14112, 28223, 10584],
[31566, 25253, 50506, 18940],
[50506, 40404, 80809, 30303]
];
var cost_bougu=[
[150, 200, 340, 170],
[300, 400, 680, 340],
[585, 780, 1326, 663],
[1112, 1482, 2519, 1260],
[2056, 2742, 4661, 2330],
[3701, 4935, 8390, 4195],
[6477, 8636, 14682, 7341],
[14112, 17640, 28223, 10584],
[25253, 31566, 50506, 18940],
[40404, 50506, 80809, 30303]
];
var cost_heiki=[
[216, 216, 216, 72],
[432, 432, 432, 144],
[864, 864, 864, 288],
[1224, 1224, 1224, 648],
[1836, 1836, 1836, 972],
[2662, 2662, 2662, 1409],
[3860, 3860, 3860, 2044],
[7357, 7357, 7357, 2452],
[13242, 13242, 13242, 4414],
[23836, 23836, 23836, 7945],
[42905, 42905, 42905, 14302],
[77229, 77229, 77229, 25743],
[139013, 139013, 139013, 46338],
[278026, 278026, 278026, 92675],
[556051, 556051, 556051, 185350]
];
var cost_doujaku=[
[700, 3500, 2100, 700],
[1120, 5600, 3360, 1120],
[1792, 8960, 5376, 1792],
[3763, 10035, 7526, 3763],
[5263, 14049, 10537, 5268],
[9834, 14752, 14752, 9834],
[13768, 20652, 20652, 13768],
[17899, 26848, 26848, 17899],
[23268, 34902, 34902, 23268],
[30249, 45373, 45373, 30249]
];
var cost_renpei=[
[112, 107, 107, 122],
[224, 214, 214, 244],
[448, 428, 428, 488],
[759, 725, 725, 826],
[1214, 1160, 1160, 1322],
[2209, 2110, 2110, 2406],
[3331, 3182, 3182, 3627],
[4958, 4736, 4736, 5400],
[8091, 7729, 7729, 8813],
[11130, 10632, 10632, 12122]
];
var cost_heisya=[
[72, 360, 72, 216],
[144, 720, 144, 432],
[288, 1440, 288, 864],
[648, 1728, 648, 1296],
[972, 2592, 972, 1944],
[1409, 3758, 1409, 2819],
[2725, 4088, 2725, 4088],
[6744, 9810, 5518, 2453],
[12140, 17658, 9933, 4415],
[21852, 31784, 17879, 7946],
[39333, 57212, 32182, 14303],
[70800, 96545, 64364, 25745],
[127440, 173781, 115854, 46342],
[254879, 324392, 254879, 92683],
[509759, 648784, 509759, 185367]
];
var cost_yumi=[
[360, 72, 72, 216],
[720, 144, 144, 432],
[1440, 288, 288, 864],
[1728, 648, 648, 1296],
[2592, 972, 972, 1944],
[3758, 1409, 1409, 2819],
[5450, 2044, 2044, 4087],
[9810, 6131, 6131, 2453],
[17658, 12140, 9933, 4415],
[31784, 21852, 17879, 7946],
[57212, 39333, 32182, 14303],
[96545, 70800, 64364, 25745],
[173781, 127440, 115854, 46342],
[324392, 254879, 254879, 92683],
[648784, 509759, 509759, 185367]
];
var cost_uma=[
[72, 72, 360, 216],
[144, 144, 720, 432],
[288, 288, 1440, 864],
[648, 648, 1728, 1296],
[972, 972, 2592, 1944],
[1409, 1409, 3758, 2891],
[2044, 2044, 5450, 4087],
[5518, 6744, 9810, 2453],
[9933, 12140, 17658, 4415],
[17879, 21852, 31784, 7946],
[32182, 39333, 57212, 14303],
[64364, 70800, 96545, 25745],
[115854, 127440, 173781, 46342],
[254879, 254879, 324392, 92683],
[509759, 509759, 648784, 185367]
];
var cost_shiro=[
[0, 0, 0, 0],
[1404, 546, 390, 780],
[2570, 1000, 714, 1428],
[4161, 2081, 2081, 2081],
[7102, 3552, 3552, 3552],
[9056, 9056, 6037, 6037],
[14384, 14384, 9589, 9589],
[22773, 22773, 15183, 15183],
[33562, 33562, 22374, 22374],
[44402, 57559, 32890, 29602],
[65122, 84418, 48239, 43415],
[95317, 123558, 70605, 63544],
[113458, 154716, 154716, 92830],
[150418, 150418, 315878, 135375],
[219008, 219008, 492770, 164258],
[294820, 294820, 663345, 221115],
[488220, 488220, 827854, 318406],
[839130, 839130, 915414, 457707],
[1307581, 1307581, 1354280, 700491],
[1901938, 1901938, 1969864, 1018896]
];
var cost_toride=[
[104, 400, 136, 160],
[243, 936, 319, 374],
[438, 1685, 573, 673],
[1110, 2467, 1357, 1233],
[1887, 4194, 2307, 2097],
[3236, 7191, 3954, 3596],
[5177, 11505, 6327, 5753],
[10430, 18776, 13560, 9387],
[18839, 33912, 24492, 16956],
[33914, 61043, 44087, 30523],
[66939, 106495, 85196, 45640],
[119786, 190570, 152456, 81672],
[213820, 340166, 272133, 145786],
[423566, 505021, 456148, 244365],
[708513, 844765, 763014, 408756]
];
var cost_mura=[
[400, 136, 104, 160],
[936, 319, 243, 374],
[1685, 573, 438, 673],
[2467, 1357, 1110, 1233],
[4194, 2307, 1887, 2097],
[7191, 3954, 3236, 3596],
[11505, 6327, 5177, 5753],
[18776, 13560, 10430, 9387],
[33912, 24492, 18839, 16956],
[61043, 44087, 33914, 30523],
[106495, 85196, 66939, 45640],
[190570, 152456, 119786, 81672],
[340166, 272133, 213820, 145786],
[505021, 456148, 423566, 244365],
[844765, 763014, 708513, 408756]
];
var cost_daisyukusya=[
[200, 114, 200, 438],
[320, 183, 320, 701],
[512, 293, 512, 1121],
[768, 439, 768, 1682],
[1152, 658, 1152, 2523],
[1728, 987, 1728, 3784],
[2419, 1382, 2419, 5298],
[3387, 1935, 3387, 7418],
[4741, 2709, 4741, 10385],
[6637, 3793, 6637, 14538],
[8628, 4930, 8628, 18900],
[11217, 6409, 11217, 24570],
[14582, 8332, 14582, 31941],
[18956, 11735, 18956, 40620],
[25817, 16429, 25817, 49286],
[32271, 22003, 32271, 60141],
[42172, 29337, 42172, 69675],
[52715, 38963, 52715, 84803],
[66009, 49506, 66009, 93512],
[79211, 62708, 79211, 108914]
];
var cost_ennseikunren=[
[2884, 4486, 5977, 2723],
[4614, 7177, 9484, 4357],
[7382, 11483, 15174, 6972],
[11811, 18373, 24279, 11155],
[18898, 29397, 38846, 17848],
[28347, 44096, 58269, 26772],
[42521, 66143, 87404, 40158],
[63781, 99215, 131105, 60238],
[89294, 138901, 183548, 84333],
[125011, 194461, 256967, 118066],
[175015, 272246, 359754, 165292],
[227520, 353920, 467680, 214880],
[295776, 460096, 607984, 279344]
];
var cost_miharidai=[
[600, 840, 600, 360 ],
[960, 1344, 960, 576],
[1536, 2150, 1536, 922],
[2458, 3441, 2458, 1475],
[3932, 5505, 3932, 2359],
[6291, 8808, 6291, 3775],
[9437, 13212, 9437, 5662],
[14156, 19818, 14156, 8493],
[21233, 29727, 21233, 12740],
[31850, 44590, 31850, 19110],
[44590, 62426, 44590, 26754],
[62426, 87396, 62426, 37456],
[87397, 122355, 87397, 52438],
[122355, 171297, 122355, 73413],
[159062, 222686, 159062, 95437],
[206780, 289492, 206780, 124068]
];
var cost_syugyouzyo=[
[1600, 1200, 600, 600],
[2240, 1680, 840, 840],
[3136, 2352, 1176, 1176],
[4390, 3293, 1646, 1646],
[6146, 4610, 2305, 2305],
[8605, 6454, 3227, 3227],
[11186, 8390, 4195, 4195],
[14542, 10907, 5453, 5453],
[18905, 14179, 7089, 7089],
[24577, 18433, 9216, 9216],
[31950, 23963, 11981, 11981],
[38340, 28755, 14378, 14378],
[46008, 34506, 17253, 17253],
[55210, 41407, 20704, 20704],
[66252, 49689, 24844, 24844],
[72877, 54658, 27329, 27329],
[80164, 60123, 30062, 30062],
[88181, 66136, 33068, 33068],
[96999, 72749, 36375, 36375],
[106699, 80024, 40012, 40012]
];
var costs_build = new Array();
costs_build["総司令部"] = cost_shiro;
costs_build["製鉄所"] = cost_wood;
costs_build["製油所"] = cost_stone;
costs_build["アルミニウム精錬所"] = cost_iron;
costs_build["食品加工工場"] = cost_rice;
costs_build["備蓄基地"] = cost_souko;
costs_build["銅像"] = cost_doujaku;
costs_build["武装研究所"] = cost_kajiba;
costs_build["装甲研究所"] = cost_bougu;
costs_build["歩兵学校"] = cost_renpei;
costs_build["陸軍士官学校"] = cost_heisya;
costs_build["海軍兵学校"] = cost_yumi;
costs_build["空軍士官学校"] = cost_uma;
costs_build["兵舎"] = cost_syukusya;
costs_build["工兵学校"] = cost_heiki;
costs_build["貿易センター"] = cost_ichiba;
costs_build["飛行場"] = cost_kunren;
costs_build["食品冷凍工場"] = cost_suisya;
costs_build["化学コンビナート"] = cost_kojo;
costs_build["技術研究所"] = cost_kenkyu;
costs_build["駐屯地"] = cost_daisyukusya;
costs_build["航空基地"] = cost_ennseikunren;
costs_build["レーダーサイト"] = cost_miharidai;
costs_build["前線基地"] = cost_toride;
costs_build["補給基地"] = cost_mura;
nResourceIron = parseInt( $("wood").innerHTML, 10 );
nResourceOil = parseInt( $("stone").innerHTML, 10 );
nResourceAlumi = parseInt( $("iron").innerHTML, 10 );
nResourceFood = parseInt( $("rice").innerHTML, 10 );
nStorageMax = parseInt( $("rice_max").innerHTML, 10 );
try {
if( costs_build[area.name].length <= parseInt(area.lv) || // maxinum level reached
nResourceIron < costs_build[area.name][parseInt(area.lv)][0] ||
nResourceOil < costs_build[area.name][parseInt(area.lv)][1] ||
nResourceAlumi < costs_build[area.name][parseInt(area.lv)][2] ||
nResourceFood < costs_build[area.name][parseInt(area.lv)][3] ) {
//建設不可 = 1
return 1;
}
}catch(e) {
}
return 0;
}
function get_costs_bgbk(type, BG_Name, BG_Lv, resource) {
// 武装装甲LvUP資源
// 新兵
var cost_bk_ken=[
[ 165, 135, 0, 0, 6600],
[ 251, 319, 0, 0, 8910],
[ 184, 596, 0,303,11220],
[ 351, 994, 0,604,13200],
[ 431, 828,2054, 0,15180],
[ 159, 848,4294, 0,17820],
[1397, 2301,4519, 0,19140],
[1019, 4458,7260, 0,21120],
[ 0,11558,3572, 0,23100],
[ 0,19648,6073, 0,25080],
[ 0, 0, 0, 0, 0]
];
// 軽戦車
var cost_bk_yari=[
[ 1820, 3575, 0,1105,13500],
[ 3640, 7150, 0,2210,18225],
[ 0, 12870, 6552,3978,22950],
[ 0, 21879,11138,6763,27000],
[10820, 35006,17821, 0,31050],
[16230, 52510,26732, 0,36450],
[22722, 73514,37425, 0,39150],
[30675, 99243,50524, 0,43200],
[39878,129016,65681, 0,47250],
[51841,167721,85385, 0,51300],
[ 0, 0, 0, 0, 0]
];
// 重戦車
var cost_bk_hoko=[
[ 14000, 27500, 0, 8500,18600],
[ 28000, 55000, 0,17000,25380],
[ 0, 104500, 53200,32300,31620],
[ 0, 188100, 95760,58140,37200],
[ 98838, 319770, 162792, 0,42700],
[158141, 511632, 260467, 0,50220],
[237211, 767448, 390701, 0,53940],
[332096,1074427, 546981, 0,59520],
[431724,1396755, 711075, 0,65100],
[647587,2095133,1066613, 0,70680],
[ 0, 0, 0, 0, 0]
];
// 水雷艇
var cost_bk_yumi=[
[ 3795, 0, 1173,1932,13500],
[ 7590, 0, 2346,3864,18225],
[ 13662, 0, 6995,4223,22950],
[ 23225, 0,11824,7179,27000],
[ 37161,11486,18918, 0,31050],
[ 55741,17229,28377, 0,36450],
[ 78038,39728,24121, 0,39150],
[105351,53633,32563, 0,43200],
[122015,49802,77193, 0,47250],
[178043,55031,90640, 0,51300],
[ 0, 0, 0, 0, 0]
];
// 駆逐艦
var cost_bk_dokyu=[
[ 30250, 0, 9350,15400,18600],
[ 60500, 0, 18700,30800,25110],
[ 114950, 0, 58520,35530,31620],
[ 206910, 0, 105336,63954,37200],
[ 351747,108722, 179071, 0,42780],
[ 562795,173955, 286514, 0,50220],
[ 844193,429771, 260932, 0,53940],
[1181870,601679, 365305, 0,59520],
[1368820,558720, 865988, 0,65100],
[2320010,717094,1181096, 0,70680],
[ 0, 0, 0, 0, 0]
];
// 軽戦闘機
var cost_bk_uma=[
[1241,2044,4015,0,13500],
[2482,4088,8030,0,17313],
[4468,0,14454,7358,22950],
[7595,0,24572,12509,27000],
[12152,0,39315,20015,31040],
[0,18228,58973,30022,36450],
[0,42031,82562,25519,39150],
[0,56742,111458,34451,43200],
[0,73765,144895,44786,47250],
[0,95894,188364,58222,51300],
[0,0,0,0,0]
];
// 重戦闘機
var cost_bk_konoe=[
[10200,16800,33000,0,18600],
[20400,33600,66000,0,25110],
[38760,0,125400,63840,31620],
[69768,0,225720,114912,37200],
[76745,0,488376,132559,14400],
[0,189769,613958,312561,50220],
[0,468841,920938,284653,53940],
[0,656377,1289313,398515,59520],
[0,853291,1676107,518069,65100],
[0,1279936,2514161,777104,70680],
[0,0,0,0,0]
];
// 工兵
var cost_bk_kuruma=[
[6600,2040,3360,0,17000],
[13200,4080,6720,0,22950],
[23760,7344,12096,0,28900],
[40392,12485,20536,0,34000],
[64627,19976,32901,0,39100],
[96941,29964,49352,0,45900],
[135717,41949,69092,0,49300],
[183218,56631,93274,0,54400],
[238183,73620,121257,0,59500],
[359657,111167,183098,0,64600],
[0,0,0,0,0]
];
// 自走臼砲
var cost_bk_stone=[
[11050,35750,18200,0,24000],
[22100,71500,36400,0,32400],
[41990,135850,69160,0,40800],
[75582,244530,124488,0,48000],
[128489,415701,211630,0,55200],
[205583,665122,338607,0,64800],
[308375,997682,507911,0,69600],
[431724,1396755,711075,0,76800],
[561242,1815782,924398,0,0], // 時間のみ未確定
[729614,2360517,1201718,0,91200], // 25時間20分 武装研究所Lv10(55%)にて13時間56分
[0,0,0,0,0]
];
// 装甲研究所テーブル ========================================================
// 新兵
var cost_bg_ken=[
[149,122,0,0,6600],
[228,285,0,0,8910],
[168,534,0,273,11220],
[310,900,0,544,13200],
[373,745,1864,0,15180],
[539,1431,2801,0,17820],
[1265,2063,4067,0,19140],
[1949,6304,3209,0,21120],
[0,10288,3253,5371,23100],
[0,17683,5466,9002,25080],
[0,0,0,0,0]
];
// 軽戦車
var cost_bg_yari=[
[1638,3218,0,995,13500],
[3276,6435,0,1989,18225],
[0,11583,5897,3580,22950],
[0,19691,10025,6086,27000],
[9738,31506,16039,0,31050],
[14607,47259,24059,0,36450],
[20450,66162,33683,0,39150],
[27608,89319,45471,0,43200],
[35890,116115,59113,0,0],
[46657,150949,76847,0,51300],
[0,0,0,0,0]
];
// 重戦車
var cost_bg_hoko=[
[12600,24750,0,7650,18600],
[25200,49500,0,15300,25110],
[0,94050,47880,29070,31620],
[0,169290,86184,52326,37200],
[88954,287793,146513,0,42780],
[142327,460469,234420,0,50220],
[213490,690703,351631,0,53940],
[298886,966984,492283,0,59520],
[388552,1257080,639968,0,65100],
[545116,1762197,1121087,70680],
[0,0,0,0,0]
];
// 水雷艇
var cost_bg_yumi=[
[3416,0,1056,1739,13500],
[6831,0,2111,3478,22950],
[12296,0,6260,3801,27000],
[20903,0,10641,6461,31050],
[33445,10337,17026,0,36450],
[50167,15506,25540,0,39150],
[70234,35756,21709,0,43200],
[94816,48270,29307,0,47250],
[108917,44822,70371,0,51300],
[160238,49528,81576,0,55350],
[0,0,0,0,0]
];
// 駆逐艦
var cost_bg_dokyu=[
[27225,0,8415,13860,18600],
[54450,0,16830,27720,25110],
[103455,0,52668,31977,31620],
[186219,0,94802,57559,37200],
[316572,97850,161164,0,42780],
[506516,156559,257863,0,50220],
[759774,386794,234839,0,53940],
[1063683,541511,328775,0,59520],
[1221881,502832,789446,0,65100],
[2088009,645385,1062986,0,70680],
[0,0,0,0,0]
];
// 軽戦闘機
var cost_bg_uma=[
[1117,1840,3614,0,13500],
[2234,3679,7227,0,18225],
[4021,0,13009,6623,22950],
[6835,0,22115,11258,27000],
[10937,0,35384,18013,31050],
[0,16405,53075,27020,36450],
[0,37828,74305,22967,43200],
[0,51068,100312,31006,47250],
[0,66388,130406,40307,51300],
[0,86305,169528,52399,55350],
[0,0,0,0,0]
];
// 重戦闘機
var cost_bg_konoe=[
[9180,15120,29700,0,18600],
[6156,10134,19908,0,25110],
[7830,0,25344,12900,31620],
[8952,0,28962,14742,37200],
[20979,0,67878,34560,42780],
[0,27279,88245,44919,50220],
[0,78324,153852,47556,53940],
[0,590740,1160381,358663,59520],
[0,767962,1508496,466262,65100],
[0,1151943,2262744,699394,70680],
[0,0,0,0,0]
];
// 工作員
var cost_bg_sek=[
[1638,995,0,3218,6600],
[3276,1989,0,6435,8910],
[6224,3779,0,12227,11220],
[0,6802,11204,22008,13200],
[0,11564,19047,37413,15180],
[0,18502,30475,59861,17820],
[27754,0,45712,89791,19140],
[38855,0,63997,125708,21120],
[50512,0,83916,163420,23100],
[65665,0,108154,212446,25080],
[0,0,0,0,0]
];
// 特殊部隊
var cost_bg_sekuma=[
[9180,15120,29700,0,18600],
[6156,10134,19908,0,25110],
[7830,0,25344,12900,31620],
[8952,0,28962,14742,37200],
[20979,0,67878,34560,42780],
[0,27279,88245,44919,50220],
[0,78324,153852,47556,53940],
[0,0,0,0,0], // データなし
[0,0,0,0,0], // データなし
[0,0,0,0,0], // データなし
[0,0,0,0,0]
];
// 工兵
var cost_bg_kuruma=[
[5940,1836,3024,0,17000],
[11880,3672,6048,0,22950],
[21384,6610,10886,0,28900],
[36353,11236,18507,0,34000],
[58164,17978,29611,0,39100],
[87247,26967,44417,0,45900],
[122145,37754,62183,0,49260],
[164896,50968,83947,0,54400],
[214365,66258,109131,0,59500],
[63561,198334,326634,0,64600],
[0,0,0,0,0]
];
// 自走臼砲
var cost_bg_stone=[
[9945,32175,16380,0,24000],
[19890,64350,32760,0,32400],
[37791,122265,62244,0,40800],
[68024,220077,112039,0,48000],
[115640,374131,190467,0,55200],
[185025,598609,304747,0,64800],
[277537,897914,457120,0,69600],
[388552,1257080,639968,0,76800],
[505118,1634204,831958,0,84000],
[656653,2124465,1081546,0,91200],
[0,0,0,0,0]
];
var costs_bgbk = new Array();
costs_bgbk["武装研究所新兵"] = cost_bk_ken;
costs_bgbk["武装研究所軽戦車"] = cost_bk_yari;
costs_bgbk["武装研究所重戦車"] = cost_bk_hoko;
costs_bgbk["武装研究所水雷艇"] = cost_bk_yumi;
costs_bgbk["武装研究所駆逐艦"] = cost_bk_dokyu;
costs_bgbk["武装研究所軽戦闘機"] = cost_bk_uma;
costs_bgbk["武装研究所重戦闘機"] = cost_bk_konoe;
costs_bgbk["武装研究所工兵"] = cost_bk_kuruma;
costs_bgbk["武装研究所自走臼砲"] = cost_bk_stone;
costs_bgbk["装甲研究所新兵"] = cost_bg_ken;
costs_bgbk["装甲研究所軽戦車"] = cost_bg_yari;
costs_bgbk["装甲研究所重戦車"] = cost_bg_hoko;
costs_bgbk["装甲研究所水雷艇"] = cost_bg_yumi;
costs_bgbk["装甲研究所駆逐艦"] = cost_bg_dokyu;
costs_bgbk["装甲研究所軽戦闘機"] = cost_bg_uma;
costs_bgbk["装甲研究所重戦闘機"] = cost_bg_konoe;
costs_bgbk["装甲研究所工作員"] = cost_bg_sek;
costs_bgbk["装甲研究所特殊部隊"] = cost_bg_sekuma;
costs_bgbk["装甲研究所工兵"] = cost_bg_kuruma;
costs_bgbk["装甲研究所自走臼砲"] = cost_bg_stone;
return costs_bgbk[type + BG_Name][BG_Lv][resource];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment