Created
March 5, 2011 09:22
-
-
Save mitsuru/856248 to your computer and use it in GitHub Desktop.
ブラ三beyond 非公式修正版
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name 3gokushi-Beyond | |
// @namespace 3gokushi-hatt | |
// @description ブラウザ三国志用便利機能色々ごった煮 by hatt+ろむ+α | |
// @include http://*.3gokushi.jp/* | |
// @author hatt,romer,etc... | |
// @version 1.27.2.6 | |
// ==/UserScript== | |
// | |
// FireFox / Google Chrome対応です。 | |
// ver1.00 2010.03.19 | |
// ver1.01 2010.03.20 | |
// ver1.02 2010.03.20 | |
// ver1.03 2010.03.21 | |
// ver1.10 2010.03.22 | |
// ver1.11 2010.03.23 | |
// ver1.12 2010.03.25 | |
// ver1.13 2010.03.26 | |
// ver1.14 2010.03.27 | |
// ver1.15 2010.03.28 | |
// ver1.16 2010.03.29 | |
// ver1.17 2010.03.31 | |
// ver1.18 2010.04.02 | |
// ver1.19 2010.04.05 | |
// ver1.20 2010.04.08 | |
// ver1.21 2010.04.09 | |
// ver1.22 2010.04.13 | |
// ver1.23 2010.04.19 | |
// ver1.24 2010.04.28 | |
// ver1.25 2010.05.02 | |
// ver1.26 2010.05.10 | |
// ver1.27 2010.05. | |
// ver1.27.0.1 2010.08.19 | |
// ver1.27.0.2 2010.09.21 | |
// ver1.27.0.4 2010.09.22 | |
// ver1.27.1.0 2010.09.23 | |
// ver1.27.1.2 2010.09.24 | |
// ver1.27.1.4 2010.09.25 | |
// ver1.27.1.7 2010.09.26 | |
// ver1.27.2.2 2010.09.29 | |
// ver1.27.2.3 2010.10.01 | |
// ver1.27.2.4 2010.10.02 | |
// ver1.27.2.5 2010.10.07 | |
// ver1.27.2.6 2010.10.12 | |
( function(){ | |
if(document.getElementById("beyond_basepanel") ) return ; | |
var VERSION_NAME = "ブラウザ三国志Beyond Ver1.27.2.12 by hatt+ろむ+α"; | |
var IMG_DIR = "/20100510-01/img/"; | |
/////////////////////////////////////////////// | |
//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; | |
} | |
console.log(message); | |
}; | |
GM_registerMenuCommand = function(name, funk) { | |
//todo | |
}; | |
GM_setValue = function(name, value) { | |
value = (typeof value)[0] + value; | |
localStorage.setItem(name, value); | |
}; | |
} | |
/////////////////////////////////////////////// | |
/////////////////////////////////////////////// | |
//配列のindexOf対策 | |
if (!Array.prototype.indexOf) | |
{ | |
Array.prototype.indexOf = function(elt /*, from*/) | |
{ | |
var len = this.length; | |
var from = Number(arguments[1]) || 0; | |
from = (from < 0) | |
? Math.ceil(from) | |
: Math.floor(from); | |
if (from < 0) | |
from += len; | |
for (; from < len; from++) | |
{ | |
if (from in this && | |
this[from] === elt) | |
return from; | |
} | |
return -1; | |
}; | |
} | |
var d = document; | |
var $ = function(id) { return d.getElementById(id); }; | |
var $x = function(xp,dc) { return d.evaluate(xp, dc||d, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; }; | |
var $a = function(xp,dc) { var r = d.evaluate(xp, dc||d, 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(dc,e,f) { if (!dc) return; dc.addEventListener(e, f, false); }; | |
var isNarrow = location.host.match(/^[m|y]\d+\./i) ? true : false; | |
var MAP_X_MIN = -600; | |
var MAP_X_MAX = 600; | |
var MAP_Y_MIN = -600; | |
var MAP_Y_MAX = 600; | |
var OPT_VILLAGE = 0; | |
var OPT_BASELINK = 0; | |
var OPT_MAPLINK = 0; | |
var OPT_XYLINK = 0; | |
var OPT_XYLINK_NK = 0; | |
var OPT_LARGEICON = 0; | |
var OPT_TTBL = 0; | |
var OPT_MEMO = 0; | |
var OPT_DETAILS = 1; | |
var OPT_DETAILS_UP = 1; | |
var OPT_DECK = 1; | |
var OPT_DECK_SET = 0; | |
var OPT_CTIME_B = 1; | |
var OPT_CTIME_U = 1; | |
var OPT_ALLY = 1; | |
var OPT_ALLY_IS = 1; | |
var OPT_ALLY_XY = 0; | |
var OPT_ALLY_CSV = 0; | |
var OPT_RES_T = 0; | |
var OPT_RES_TIME = 0; | |
var OPT_REMOVELIST = 1; | |
var OPT_MAPLIST = 1; | |
var OPT_TTDISTANCE = 1; | |
var OPT_TTDISTANCE_ITEMS = new Array(); | |
var OPT_TTALLYPRSN = 1; | |
var OPT_MEMO_FONT_SIZE = "10"; | |
var OPT_MEMO_WIDTH = "20"; | |
var OPT_MEMO_HEIGHT = "5"; | |
var OPT_MEMO_COUNT = "1"; | |
var OPT_MAPLINK_FONT_SIZE = "10"; | |
var OPT_USER_STAR = 1; | |
var OPT_USER_LEVEL = 1; | |
//var OPT_REPORT_NP = 0; | |
var OPT_MAPCENTER = 0; | |
var OPT_TBREST = 0; | |
var OPT_DELMSG = 0; | |
var OPT_TSENDTIME = 0; | |
var OPT_SMALLBTN = 0; | |
var OPT_ATTACKMAP = 0; | |
var OPT_CARD_CMB = 0; | |
var OPT_PIKA_YOROZU = 0; | |
var OPT_PIKA_HPREST = 0; | |
var OPT_PIKA_MAPHELP = 0; | |
var OPT_PIKA_TRDHELP = 0; | |
var OPT_PIKA_BLINKBLD = 0; | |
var OPT_SUZAN_SEISAN = 0; | |
var OPT_CASTLE_AID = 0; | |
var OPT_NEXT_MEISEI = 0; | |
var OPT_TIMER_LINK_DEPOT = 0; | |
if (isNarrow) { | |
var OPT_VILLAGE_LIST_BOX = 0; | |
} | |
var g_MD; | |
var g_MX; | |
var g_MY; | |
var BASE_X = -9999; | |
var BASE_Y = -9999; | |
var USER_ID = ""; | |
var ALLY_ID = ""; | |
var RES_NOW = []; | |
var RES_MAX = []; | |
var RES_GROW = []; | |
var RES_GROW_W = []; | |
var RES_GROW_B = []; | |
var PRE_LOAD_NODES = {}; | |
var URL_PARAM = {}; | |
var Pika_elementQueue = []; | |
var VILLAGES_INFO= {}; | |
var SID = ''; | |
if( !initPanel() ) return; | |
initUrlParams(); | |
initStyle(); | |
initPreLoadNode(); | |
initResources(); | |
getMyInfo(); | |
loadOptions(); | |
initImages(); | |
disp_Options(); | |
initVillages(); | |
initCastleSend(); | |
if (isNarrow) initNarrow(); | |
if ( isNarrow && OPT_VILLAGE_LIST_BOX ) disp_villageListBox(); | |
if( OPT_VILLAGE ) disp_village(); | |
if( OPT_BASELINK ) disp_baseLink(); | |
if( OPT_MAPLINK ) disp_mapLink(); | |
if( OPT_MEMO ) disp_memo(); | |
if( OPT_ALLY ) disp_AllianceInfo();//XYリンク加工前に呼ぶ | |
if( OPT_XYLINK ) disp_XYLink(); | |
if( OPT_TTBL ) disp_TTable(); | |
if( OPT_DETAILS ) disp_Details(); | |
if( OPT_DECK ) disp_Deck(); | |
if( OPT_CTIME_B ) disp_CompleteTimeBuild(); | |
if( OPT_CTIME_U ) disp_CompleteTimeUnit(); | |
if( OPT_RES_T ) disp_ResourcesTotal(); | |
if( OPT_RES_TIME ) disp_ResourcesTime(); | |
if( OPT_REMOVELIST) disp_RemoveList(); | |
if( OPT_MAPLIST) disp_MapList(); | |
if( OPT_USER_STAR) disp_UserStar(); | |
if( OPT_USER_LEVEL) disp_UserLevel(); | |
//if( OPT_REPORT_NP) disp_ReportNextPrior(); | |
if( OPT_MAPCENTER) disp_MapCenter(); | |
if( OPT_TBREST) disp_ToubatsuRestTime(); | |
if( OPT_DELMSG) disp_DeleteMessages(); | |
if( OPT_TSENDTIME) disp_TSendTime(); | |
if( OPT_SMALLBTN) disp_SmallButton(); | |
if( OPT_ATTACKMAP) disp_AttackMap(); | |
if( OPT_CARD_CMB) disp_CardCombine(); | |
if( OPT_PIKA_YOROZU ) disp_PikaYorozu(); | |
if( OPT_PIKA_HPREST ) disp_PikaHPRestTime(); | |
if( OPT_PIKA_MAPHELP ) Pika_installMapXYHelper(); | |
if( OPT_PIKA_TRDHELP ) Pika_installTradeHelper(); | |
if( OPT_SUZAN_SEISAN ) disp_SuzanSeisan(); | |
if ( OPT_CASTLE_AID ) disp_castleAidLink(); | |
if ( OPT_NEXT_MEISEI ) disp_nextFameTimer(); | |
if ( OPT_TIMER_LINK_DEPOT ) disp_timerLinkDepot(); | |
if( OPT_TTALLYPRSN) disp_ToolTipsAllyPerson(); | |
if( OPT_TTDISTANCE) disp_ToolTipsDistance(); | |
csortSideBox(); | |
crenumberSideBox(); | |
Pika_blinkElements(); | |
////////////////////// | |
//イメージ初期化 | |
////////////////////// | |
var img_mura, img_map, img_naisei, img_ken, img_hanma, img_user, img_mail; | |
function initImages() | |
{ | |
if( !OPT_LARGEICON ) { | |
img_mura = 'data:image/gif;base64,'+ | |
'R0lGODlhCgAKAKIAAAAAAP/M/7Jlf2YAAMaAoLpxjceAoQAAACH5BAQUAP8ALAAAAAAKAAoAAAMd'+ | |
'CBDcumE0CeOcI2vJMunYYICgZDalwEFcQSkooyQAOw=='; | |
img_map = 'data:image/gif;base64,'+ | |
'R0lGODlhCgAKAJEAAAAAAP//zAAAmSAgGiH5BAQUAP8ALAAAAAAKAAoAAAIaBIJplz0hRItISojx'+ | |
'tbXuDn3ZFDANMhhnCRQAOw=='; | |
img_naisei = 'data:image/gif;base64,'+ | |
'R0lGODlhCgAKALMAAAAAAMPS5HWOi5kAZktYU7yw0BogILmjyMz//8LP4r641MXb6QAAAAAAAAAA'+ | |
'AAAAACH5BAQUAP8ALAAAAAAKAAoAAAQnEBiEBkUGgGsvqUMockgxKBWnDMewdKA1UkNwJTBMU9vl'+ | |
'CxofDxABADs='; | |
img_ken = 'data:image/gif;base64,'+ | |
'R0lGODlhCgAKALMAAAAAALS0tE48PP///42NjTMzM+Li4nx8fBgAACYPD5mZmQkJCUZGRru7u+jo'+ | |
'6AAAACH5BAQUAP8ALAAAAAAKAAoAAAQkECBAq5C1qrEyIMPQUAMZllRwhtlinB4De+ExBFniFKQ3'+ | |
'+YAIADs='; | |
img_hanma = 'data:image/gif;base64,'+ | |
'R0lGODlhCgAKAOYAAP////7+/v39/fz8/Pv7+/r6+vn5+fj4+Pb29vX19fLy8vHx8fDw8O/v7+/u'+ | |
'7u3t7ezs7Obm5uLi4tra2tbW1tTU1NPT09LR0cjIyLq6ura0tLKysrCwsKmoqI+JiWxsbGdmZlVV'+ | |
'VUpKSkhFRUFBQUJBQT8/Py4uLiwsLCgoKCQkJCMjIyIhISoaGhsbGxkZGRkYGBYWFhoWFhkVFRMT'+ | |
'EyQODhQSEiILCw4ODgsLCwoKCgkJCQcGBgkGBgYGBhgAABYAAAQEBAMDAwEBAQAAAAEAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5'+ | |
'BAQUAP8ALAAAAAAKAAoAAAdcgEQ3HiAoDwILJjRAMh0XDAgBCRkqRTYpAwCaBxE+REGZmgAFQUND'+ | |
'oqI7OEM+C5oEsAsnLzkWChAYHxINFCQ8LBUcISIlGxMPNT46LisxMSMaDkQ/RERC1zMtPYEAOw=='; | |
img_mail = 'data:image/gif;base64,'+ | |
'R0lGODlhCgAKAMQAAP///5mZmSoaGhoWFhkVFRMTEyQODiILCwsLCwYGBgcGBgkGBhgAABYAAAMD'+ | |
'AwEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAQU'+ | |
'AP8ALAAAAAAKAAoAAAUvIHREZBkVzWCuQQC8QEsGkRvXz3PL7pO8tNorgoAZARHFERYxLIcRBmTq'+ | |
'iBAEixAAOw=='; | |
img_user = 'data:image/gif;base64,'+ | |
'R0lGODlhCgAKANUAADMAAPr3s+vhKdKwHr6DEal3EPPvPYJCA+XUI/HsLPbwUcejG9m+Mvn3M9m8'+ | |
'IP//tfj4NvXxMe/oK///M969IfLuMbR4EdzFL86wHv//O+XXKf//u//3tY5JBPj0Ue3iLvTwQu3l'+ | |
'L9fCIda3IKp4ENnDL+DHIv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUACcALAAAAAAKAAoAAAZTwNMp'+ | |
'oEgkFAHhEASpVCCgZMAgEFVCDomBCBkBNBqACFJsaAqfD0nTSAhMkYaz7RAoLJhMJJIZEBQbJQcL'+ | |
'EhIjHRcbJw8XFgQEFgwPShseCAiAQkEAOw=='; | |
}else{ | |
img_mura = 'data:image/gif;base64,'+ | |
'R0lGODlhDgAOAOYAAAAAAP///+Hz/gid8Ame8gmg8gmb7wmc7wqe8gqg8gqb7wqc7wug8gud7wyh'+ | |
'8gyd7w2i8w2g8g2d7w2d7g6e8A6d7w6e7w6c7g6d7hCg8g+d7w+e7w+d7hWg7hag7huP0RyQ0h2Q'+ | |
'0h+V1iWq8yaq8yiq9Cis9AorPSms9QoqPCqs9Syu9QsrPS6v9S6t9C+t9DGv9TGw9TOw9Taw9EW3'+ | |
'9ke39ki49mbE+IXQ+YbQ+aLb+qPb+6Pc+8Ln/MTo/ODz/uL0/guh8g+j8xGj8iCa1yit9Cmt9Cuu'+ | |
'9C6v9DOx9TSz9Ue59ki59km69sLo/MTp/ODz/f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5'+ | |
'BAEAAFEALAAAAAAOAA4AAAeXgCkfHBZDK0IQLQ4LFx8pIB4WQUw4Kig5NggKHSAcGBVHPDcoKDc7'+ | |
'JQYTHBwXD0hAP7GxJQcYGBwNCU0/Ab0BPzUIEhwPCUtOvr49NQQVB0Y8yck6JBUVDEy80sARGxgD'+ | |
'RdrJUCMUhAVL4r4/NBkbFSbI0r09LxoWJurJAi4bIElPgAgcKNDHjBAsiCiJwZAhjIcyRJwIBAA7'; | |
img_map = 'data:image/gif;base64,'+ | |
'R0lGODlhDgAOAMQAAKmLAeHXp76oQP38+My7arSaIe/pz9jKi8SvUeffuK6SEdTFf7mhMci0XPTw'+ | |
'39zPl+Tbr8OuTcq4ZN7SnOniv72mPf///8++ccm3YdTFgP///wAAAAAAAAAAAAAAAAAAACH5BAEA'+ | |
'ABoALAAAAAAOAA4AAAVCoAaMZDmKZqqu5EIRVUUqWEkJl6XvkL2POkCmNPkBgpdS8gi0AA6lnfOX'+ | |
'qDWlOoegN0IMKCRBgRGxsgwPAyuFWmtCADs='; | |
img_naisei = 'data:image/gif;base64,'+ | |
'R0lGODlhDgAOAOYAAAAAAP///zEwMTAvMC8uLy4tLiwrLCsqKzw7PH9+fysrLImKiSkpKCgoJyYm'+ | |
'JTk5OE5OTdvb2dfX1Xp6eXd3dnV1dGZmZWJiYebm5eLi4d7e3dra2dfX1tTU09PT0tHR0M/Pzs7O'+ | |
'zc3NzMTEw8PDwsDAv7e3tqOjopKSkff29eLh4NnY19PS0dHQz83My8rJyMfGxcPCwcLBwMC/vr++'+ | |
'vSkoKCYlJSUkJCsqKjQzM0xLS9DOzsnHx3t6enV0dHRzc1taWuTj4+Hg4N/e3t3c3Nva2tbV1dXU'+ | |
'1NTT09LR0dHQ0NDPz8/OzsvKysnIyMjHx8HAwMC/v6Cfn9zc3MnJycXFxb+/v729vZ+fn5aWloWF'+ | |
'hXNzc3FxcWpqalxcXFpaWlZWVlBQUE5OTkdHR0BAQDo6Ojg4ODc3NzExMTAwMC8vLy4uLi0tLSws'+ | |
'LCsrKygoKCcnJyYmJiUlJSQkJCMjIyIiIiAgIB8fHx4eHv///wAAAAAAAAAAAAAAAAAAAAAAACH5'+ | |
'BAEAAHkALAAAAAAOAA4AAAewgAKCA4SFhGkDggJuYAkUFT9cPhByBYpzCykYGRpFQhN4bIptZEVE'+ | |
'RkkfPA9yBopqa1hEK0cfKDUNboppcBcvJCUzX3UMB4psZh8RIU1LVmhxxoJtZR4bHS0gUDkOOKNn'+ | |
'IFMsTEpXaTYKrzdeIUQcJF93b66CdBYnWls9WFJidziJCAApEkTEmC5JXEDRYSfRABMqkLCAUeVJ'+ | |
'DCdZ7BAYgGCIBBY7QlAZIYNGlDBsAgEAOw=='; | |
img_ken = 'data:image/gif;base64,'+ | |
'R0lGODlhDgAOAMQAAP9MH/9lP/9AEP9ZMP9/X/+Zf/+yn/+lj//Zz//y7/9zUP+AYP+/r/+Lbv/P'+ | |
'w//q5f+fh//s5/9jPP+NcP/l3//Mv/////8zAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEA'+ | |
'ABgALAAAAAAOAA4AAAVCIHaNZDmKZqkYqVlZQEsORCBX1YLIhWVRstHB9wheDC8LApiC+HwES+og'+ | |
'uAAsCcNAcUMIfJVUVEoKpyjMUZWEMmJCADs='; | |
img_hanma = 'data:image/gif;base64,'+ | |
'R0lGODlhDgAOALMAAAAAAP///8zMzL+/v5mZmWZmZjIyMiYmJgwMDP///wAAAAAAAAAAAAAAAAAA'+ | |
'AAAAACH5BAEAAAkALAAAAAAOAA4AAARF0Eg5yLxTEFE1lkIYCEGBEUMoBqyQqSQ7WlQ4mLFnDKPO'+ | |
'tyYeifYLEUc3AylkkrR6I+Qr2krRJISWqnlBFQId7kdgEhsiADs='; | |
img_mail = 'data:image/gif;base64,'+ | |
'R0lGODlhDgAOANUAAP////n6+u3t7ezs7Ojo6Kurq6ampqWkpKCgoJ6enpaWloeHh4SEhHV1dWhn'+ | |
'Z2dmZioqKiodHR8eHh0cHBsaGiEUFBYTExMTExMSEh4NDRwKChsJCRoICAoKCgcHBwkGBhIDAwUF'+ | |
'BQUGBhMAAAYEBBIAAAMDAxEAAAICAgQCAgEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAQUAP8ALAAAAAAOAA4AAAZxwNVm'+ | |
's1qxjkiW53I6FZ/Qoud0GACu2OvgUOQmrNhBYnU4Ah4URVZBcQBUKsBhglkIBAvM5PCOAwwTEwwM'+ | |
'EhIGVyohVwQIEEUQCARXLB1YAQUNDQUBWJRZn50ioKAsGaOfKxqnWSkpIyNQJiskFhEVH0EAOw=='; | |
img_user = 'data:image/gif;base64,'+ | |
'R0lGODlhDgAOAPcAAP7+v/3+vf39vf3+ofz6vvz9ofz5u/v8ofn2nv//O/3/Ofn3av76Nfn2af36'+ | |
'Nf75Nfj6Nvj5Nvj4N/n1U/fzaff4N/f4NPf4Lvfzavf1TPj0Tff3Lvb1NPX0NPb1LfXzNPXwTvXw'+ | |
'VPXwTfXyNPXyM/XuUPTyNPTyM/TxNPTwPPTwMvTwMfTvPfTvPPPxM/PwMPPwLvPvPfPvMvPwM/Pu'+ | |
'MvPuMPPuLfLtPfLuNfLuM/LuMvLuLvPtMfLtNfLtM/LtMfLtMPHtMvHsM/HsMfLsLfLsMPLsMfHp'+ | |
'LPDqKvHqLPDoLu7oLu/nLO3jK/HgNergK+rgKevfK+reKereKuvaM+bWJ+TRJOfOJOTOI+TJLN/K'+ | |
'IuHCIN3AK9/BH+G/IN6/K+C+H92+IN++INq9Ida1H9W0J9ayHNWxHM+xH8uqHc2kGs2jGs+iF8ug'+ | |
'GNGeGNCeGMmdF8WRE8SPFcSOFL+FFLt9ELp9EL59EKt0DKRyDKFwC6NpC4hdC4pVCoZQCpNFAJVE'+ | |
'AHtGCIVBB4A5AHk3BnozADQbAjQOADQOASkQAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAIoALAAAAAAOAA4A'+ | |
'AAjGABUJJEABBxEiPSgQEMgQQYgUOiLqaBECQcMbMC5wGDLEgoUdNywaAAEDChgsLlyECbPEhggD'+ | |
'GFhsEJOIDwMGgQxd8RADAw4cEbYg8uPAQZ9DXSCgQHHwwxM3Z0iQMPNmygggQJJYiaKiq9euVbQc'+ | |
'EdKmjZIKJowYMSGhSRw4PhZ8GYQmQQcZeBWQAcRlgQANegilkVKjBpMxgvBkCKDogJM8he6sWTPn'+ | |
'zx4qBRgemJBFTp06dMqUGMBQIIAFOZAgCdIAAMOAADs='; | |
} | |
} | |
////////////////////// | |
//スタイル初期化 | |
////////////////////// | |
function initStyle() | |
{ | |
GM_addStyle("span.beyond_panel_ctlbox {width:35px; height:14px; display:block; position:absolute; right:-5px; top:-4px; }" + | |
"span.beyond_panel_ctlbox img {width:8px;height:9px; float:right; }" + | |
"div#beyond_basepanel img{vertical-align:middle; margin:1px 1px 1px 0px; padding-left:2px}" + | |
"#beyond_basepanel fieldset{border:groove 1px black; margin:1px; padding:1px;}" | |
); | |
} | |
////////////////////// | |
//リソース変数初期化 | |
////////////////////// | |
function initResources() | |
{ | |
var nowNodes = PRE_LOAD_NODES['nowResources']; | |
var names = ['wood','stone','iron','rice']; | |
for (var i=0; i <names.length;i++) { | |
var name = names[i]; | |
RES_NOW[name] = parseInt( nowNodes[name].innerHTML, 10 ); | |
RES_MAX[name] = parseInt( $(name+'_max').innerHTML, 10 ); | |
RES_GROW[name] = parseInt( $('output_'+name).innerHTML, 10 ); | |
} | |
var spns = $a('(id("sidebar") | id("status_left")//p[@class="status_bottom"])//span[@class="increase" or @class="resource"]'); | |
for(var i=0 ; i<spns.length ; i++) { | |
var str = spns[i].previousSibling.nodeValue.match(/(木|石|鉄|糧)\s+(-?\d+)/); | |
if( str ) { | |
var name = ""; | |
switch( str[1] ) { | |
case "木": | |
name = 'wood'; | |
break; | |
case "石": | |
name = 'stone'; | |
break; | |
case "鉄": | |
name = 'iron'; | |
break; | |
case "糧": | |
name = 'rice'; | |
break; | |
} | |
RES_GROW_W[name] = parseInt(str[2], 10); | |
RES_GROW_B[name] = parseInt(spns[i].innerHTML, 10); | |
} | |
} | |
//名声 | |
RES_NOW["fame"] = 0; | |
RES_MAX["fame"] = 0; | |
var fameText = $x('id("status_left")/img[contains(@src,"ico_fame.gif")]').nextSibling; | |
if( fameText ) { | |
var tmp = fameText.nodeValue.match(/\s*(\d+)\s*\/\s*(\d+)/); | |
RES_NOW["fame"] = parseInt(tmp[1],10); | |
RES_MAX["fame"] = parseInt(tmp[2],10); | |
} | |
} | |
////////////////////// | |
//ベースパネル初期化 | |
////////////////////// | |
function initPanel() | |
{ | |
var panelBox = $("sidebar"); | |
if (isNarrow) { | |
var panelBoxWrapper = $x('id("wrapper")'); | |
if (!panelBoxWrapper) return false; | |
panelBox = d.createElement("div"); | |
panelBox.id = "sidebar"; | |
panelBox.style.width = "auto"; | |
panelBox.style.cssFloat = "left"; | |
panelBox.style.marginTop = "10px"; | |
panelBoxWrapper.appendChild(panelBox); | |
} | |
if( !panelBox ) return false; | |
var basepanel = d.createElement("div"); | |
basepanel.id = "beyond_basepanel"; | |
var fixpanel = d.createElement("div"); | |
fixpanel.id = "beyond_fixpanel"; | |
var floatpanel = d.createElement("div"); | |
floatpanel.id = "beyond_floatpanel"; | |
var tmppanel = d.createElement("div"); | |
tmppanel.id = "beyond_tmp"; | |
tmppanel.style.display = "none"; | |
basepanel.appendChild(fixpanel); | |
basepanel.appendChild(floatpanel); | |
basepanel.appendChild(tmppanel); | |
panelBox.appendChild(basepanel); | |
return true; | |
} | |
////////////////////// | |
//オプション処理 | |
////////////////////// | |
function disp_Options() | |
{ | |
if( !location.pathname.match(/^(\/user\/|\/bbs\/personal_)/) ) return; | |
if( location.pathname.match(/ranking\.php/) ) return; | |
var ul = $("statMenu"); | |
if( !ul ) return; | |
var cl = d.createElement("a"); | |
cl.href = "javascript:void(0);"; | |
cl.innerHTML = "三国志Beyond"; | |
$e(cl, "click", function() {openOptions();}); | |
var li = d.createElement("li"); | |
li.appendChild(cl); | |
li.className = "last"; | |
ul.appendChild(li); | |
var lst = $x("//li[@class=\"last\"]"); | |
if( lst ) { | |
lst.className = ""; | |
} | |
} | |
function loadOptions() | |
{ | |
OPT_VILLAGE = cloadData( "OPT_VILLAGE", 1 ); | |
OPT_BASELINK = cloadData( "OPT_BASELINK", 0 ); | |
OPT_MAPLINK = cloadData( "OPT_MAPLINK", 1 ); | |
OPT_XYLINK = cloadData( "OPT_XYLINK", 1 ); | |
OPT_XYLINK_NK = cloadData( "OPT_XYLINK_NK", 0 ); | |
OPT_LARGEICON = cloadData( "OPT_LARGEICON", 0 ); | |
OPT_TTBL = cloadData( "OPT_TTBL", 1 ); | |
OPT_MEMO = cloadData( "OPT_MEMO", 1 ); | |
OPT_MEMO_FONT_SIZE = cloadData( "OPT_MEMO_FONT_SIZE", "10" ); | |
OPT_MEMO_WIDTH = cloadData( "OPT_MEMO_WIDTH", "20" ); | |
OPT_MEMO_HEIGHT = cloadData( "OPT_MEMO_HEIGHT", "5" ); | |
OPT_MEMO_COUNT = cloadData( "OPT_MEMO_COUNT", "1" ); | |
OPT_MAPLINK_FONT_SIZE = cloadData( "OPT_MAPLINK_FONT_SIZE", "10" ); | |
OPT_DETAILS = cloadData( "OPT_DETAILS", 1 ); | |
OPT_DETAILS_UP = cloadData( "OPT_DETAILS_UP", 0 ); | |
// OPT_DECK = cloadData( "OPT_DECK", 1 ); | |
OPT_DECK_SET = cloadData( "OPT_DECK_SET", 1 ); | |
OPT_CTIME_B = cloadData( "OPT_CTIME_B", 1 ); | |
OPT_CTIME_U = cloadData( "OPT_CTIME_U", 1 ); | |
OPT_ALLY = cloadData( "OPT_ALLY", 1 ); | |
OPT_ALLY_IS = cloadData( "OPT_ALLY_IS", 1 ); | |
OPT_ALLY_XY = cloadData( "OPT_ALLY_XY", 0 ); | |
OPT_ALLY_CSV = cloadData( "OPT_ALLY_CSV", 0 ); | |
OPT_RES_T = cloadData( "OPT_RES_T", 0 ); | |
OPT_RES_TIME = cloadData( "OPT_RES_TIME", 1 ); | |
OPT_REMOVELIST = cloadData( "OPT_REMOVELIST", 1 ); | |
OPT_MAPLIST = cloadData( "OPT_MAPLIST", 1 ); | |
OPT_TTDISTANCE = cloadData( "OPT_DISTANCE", 1 ); | |
OPT_TTDISTANCE_ITEMS = cloadData("OPT_DISTANCE_ITEMS", "[\"剣兵(6)\", \"槍兵(7)\", \"弓兵(5)\", \"騎兵(12)\", \"衝車(3)\"]", true, true); | |
OPT_TTALLYPRSN = cloadData( "OPT_TTALLYPRSN", 1 ); | |
OPT_USER_STAR = cloadData( "OPT_USER_STAR", 1 ); | |
OPT_USER_LEVEL = cloadData( "OPT_USER_LEVEL", 1 ); | |
// OPT_REPORT_NP = cloadData( "OPT_REPORT_NP", 1 ); | |
OPT_MAPCENTER = cloadData( "OPT_MAPCENTER", 1 ); | |
OPT_TBREST = cloadData( "OPT_TBREST", 1 ); | |
OPT_DELMSG = cloadData( "OPT_DELMSG", 1 ); | |
OPT_TSENDTIME = cloadData( "OPT_TSENDTIME", 1 ); | |
OPT_SMALLBTN = cloadData( "OPT_SMALLBTN", 0 ); | |
OPT_ATTACKMAP = cloadData( "OPT_ATTACKMAP", 1 ); | |
OPT_CARD_CMB = cloadData( "OPT_CARD_CMB", 1 ); | |
OPT_PIKA_YOROZU = cloadData( "OPT_PIKA_YOROZU", 0 ); | |
OPT_PIKA_HPREST = cloadData( "OPT_PIKA_HPREST", 0 ); | |
OPT_PIKA_MAPHELP = cloadData( "OPT_PIKA_MAPHELP", 0 ); | |
OPT_PIKA_TRDHELP = cloadData( "OPT_PIKA_TRDHELP", 0 ); | |
OPT_PIKA_BLINKBLD = cloadData( "OPT_PIKA_BLINKBLD", 0 ); | |
OPT_SUZAN_SEISAN = cloadData( "OPT_SUZAN_SEISAN", 0 ); | |
OPT_CASTLE_AID = cloadData( "OPT_CASTLE_AID", 0 ); | |
OPT_NEXT_MEISEI = cloadData( "OPT_NEXT_MEISEI", 0 ); | |
OPT_TIMER_LINK_DEPOT = cloadData( "OPT_TIMER_LINK_DEPOT", 0 ); | |
if (isNarrow) { | |
OPT_VILLAGE_LIST_BOX = cloadData( "OPT_VILLAGE_LIST_BOX", 0 ); | |
} | |
} | |
function saveOptions() | |
{ | |
OPT_VILLAGE = cgetCheckBoxValue("OPT_VILLAGE"); | |
OPT_BASELINK = cgetCheckBoxValue("OPT_BASELINK"); | |
OPT_MAPLINK = cgetCheckBoxValue("OPT_MAPLINK"); | |
OPT_XYLINK = cgetCheckBoxValue("OPT_XYLINK"); | |
OPT_XYLINK_NK = cgetCheckBoxValue("OPT_XYLINK_NK"); | |
OPT_LARGEICON = cgetCheckBoxValue("OPT_LARGEICON"); | |
OPT_TTBL = cgetCheckBoxValue("OPT_TTBL"); | |
OPT_MEMO = cgetCheckBoxValue("OPT_MEMO"); | |
OPT_MEMO_FONT_SIZE = cgetTextBoxValue("OPT_MEMO_FONT_SIZE"); | |
OPT_MEMO_WIDTH = cgetTextBoxValue("OPT_MEMO_WIDTH"); | |
OPT_MEMO_HEIGHT = cgetTextBoxValue("OPT_MEMO_HEIGHT"); | |
OPT_MEMO_COUNT = cgetTextBoxValue("OPT_MEMO_COUNT"); | |
OPT_MAPLINK_FONT_SIZE = cgetTextBoxValue("OPT_MAPLINK_FONT_SIZE"); | |
OPT_DETAILS = cgetCheckBoxValue("OPT_DETAILS"); | |
OPT_DETAILS_UP = cgetCheckBoxValue("OPT_DETAILS_UP"); | |
// OPT_DECK = cgetCheckBoxValue("OPT_DECK"); | |
OPT_DECK_SET = cgetCheckBoxValue("OPT_DECK_SET"); | |
OPT_CTIME_B = cgetCheckBoxValue("OPT_CTIME_B"); | |
OPT_CTIME_U = cgetCheckBoxValue("OPT_CTIME_U"); | |
OPT_ALLY = cgetCheckBoxValue("OPT_ALLY"); | |
OPT_ALLY_IS = cgetCheckBoxValue("OPT_ALLY_IS"); | |
OPT_ALLY_XY = cgetCheckBoxValue("OPT_ALLY_XY"); | |
OPT_ALLY_CSV = cgetCheckBoxValue("OPT_ALLY_CSV"); | |
OPT_RES_T = cgetCheckBoxValue("OPT_RES_T"); | |
OPT_RES_TIME = cgetCheckBoxValue("OPT_RES_TIME"); | |
OPT_REMOVELIST = cgetCheckBoxValue("OPT_REMOVELIST"); | |
OPT_MAPLIST = cgetCheckBoxValue("OPT_MAPLIST"); | |
OPT_TTDISTANCE = cgetCheckBoxValue("OPT_DISTANCE"); | |
OPT_TTDISTANCE_ITEMS = getDistanceBox(5); | |
OPT_TTALLYPRSN = cgetCheckBoxValue("OPT_TTALLYPRSN"); | |
OPT_USER_STAR = cgetCheckBoxValue("OPT_USER_STAR"); | |
OPT_USER_LEVEL = cgetCheckBoxValue("OPT_USER_LEVEL"); | |
// OPT_REPORT_NP = cgetCheckBoxValue("OPT_REPORT_NP"); | |
OPT_MAPCENTER = cgetCheckBoxValue("OPT_MAPCENTER"); | |
OPT_TBREST = cgetCheckBoxValue("OPT_TBREST"); | |
OPT_DELMSG = cgetCheckBoxValue("OPT_DELMSG"); | |
OPT_TSENDTIME = cgetCheckBoxValue("OPT_TSENDTIME"); | |
OPT_SMALLBTN = cgetCheckBoxValue("OPT_SMALLBTN"); | |
OPT_ATTACKMAP = cgetCheckBoxValue("OPT_ATTACKMAP"); | |
OPT_CARD_CMB = cgetCheckBoxValue("OPT_CARD_CMB"); | |
OPT_PIKA_YOROZU = cgetCheckBoxValue("OPT_PIKA_YOROZU"); | |
OPT_PIKA_HPREST = cgetCheckBoxValue("OPT_PIKA_HPREST"); | |
OPT_PIKA_MAPHELP = cgetCheckBoxValue("OPT_PIKA_MAPHELP"); | |
OPT_PIKA_TRDHELP = cgetCheckBoxValue("OPT_PIKA_TRDHELP"); | |
OPT_PIKA_BLINKBLD = cgetCheckBoxValue("OPT_PIKA_BLINKBLD"); | |
OPT_SUZAN_SEISAN = cgetCheckBoxValue("OPT_SUZAN_SEISAN"); | |
OPT_CASTLE_AID = cgetCheckBoxValue("OPT_CASTLE_AID"); | |
OPT_NEXT_MEISEI = cgetCheckBoxValue("OPT_NEXT_MEISEI"); | |
OPT_TIMER_LINK_DEPOT = cgetCheckBoxValue("OPT_TIMER_LINK_DEPOT"); | |
if (isNarrow) { | |
OPT_VILLAGE_LIST_BOX = cgetCheckBoxValue( "OPT_VILLAGE_LIST_BOX"); | |
} | |
csaveData( "OPT_VILLAGE", OPT_VILLAGE ); | |
csaveData( "OPT_BASELINK", OPT_BASELINK ); | |
csaveData( "OPT_MAPLINK", OPT_MAPLINK ); | |
csaveData( "OPT_XYLINK", OPT_XYLINK ); | |
csaveData( "OPT_XYLINK_NK", OPT_XYLINK_NK ); | |
csaveData( "OPT_LARGEICON", OPT_LARGEICON ); | |
csaveData( "OPT_TTBL", OPT_TTBL ); | |
csaveData( "OPT_MEMO", OPT_MEMO ); | |
csaveData( "OPT_MEMO_FONT_SIZE", OPT_MEMO_FONT_SIZE ); | |
csaveData( "OPT_MEMO_WIDTH", OPT_MEMO_WIDTH ); | |
csaveData( "OPT_MEMO_HEIGHT", OPT_MEMO_HEIGHT ); | |
csaveData( "OPT_MEMO_COUNT", OPT_MEMO_COUNT ); | |
csaveData( "OPT_MAPLINK_FONT_SIZE", OPT_MAPLINK_FONT_SIZE ); | |
csaveData( "OPT_DETAILS", OPT_DETAILS ); | |
csaveData( "OPT_DETAILS_UP", OPT_DETAILS_UP ); | |
// csaveData( "OPT_DECK", OPT_DECK ); | |
csaveData( "OPT_DECK_SET", OPT_DECK_SET ); | |
csaveData( "OPT_CTIME_B", OPT_CTIME_B ); | |
csaveData( "OPT_CTIME_U", OPT_CTIME_U ); | |
csaveData( "OPT_ALLY", OPT_ALLY ); | |
csaveData( "OPT_ALLY_IS", OPT_ALLY_IS ); | |
csaveData( "OPT_ALLY_XY", OPT_ALLY_XY ); | |
csaveData( "OPT_ALLY_CSV", OPT_ALLY_CSV ); | |
csaveData( "OPT_RES_T", OPT_RES_T ); | |
csaveData( "OPT_RES_TIME", OPT_RES_TIME ); | |
csaveData( "OPT_REMOVELIST", OPT_REMOVELIST ); | |
csaveData( "OPT_MAPLIST", OPT_MAPLIST ); | |
csaveData( "OPT_DISTANCE", OPT_TTDISTANCE ); | |
csaveData( "OPT_DISTANCE_ITEMS", OPT_TTDISTANCE_ITEMS, true, true ); | |
csaveData( "OPT_TTALLYPRSN", OPT_TTALLYPRSN ); | |
csaveData( "OPT_USER_STAR", OPT_USER_STAR ); | |
csaveData( "OPT_USER_LEVEL", OPT_USER_LEVEL ); | |
// csaveData( "OPT_REPORT_NP", OPT_REPORT_NP ); | |
csaveData( "OPT_MAPCENTER", OPT_MAPCENTER ); | |
csaveData( "OPT_TBREST", OPT_TBREST ); | |
csaveData( "OPT_DELMSG", OPT_DELMSG ); | |
csaveData( "OPT_TSENDTIME", OPT_TSENDTIME ); | |
csaveData( "OPT_SMALLBTN", OPT_SMALLBTN ); | |
csaveData( "OPT_ATTACKMAP", OPT_ATTACKMAP ); | |
csaveData( "OPT_CARD_CMB", OPT_CARD_CMB ); | |
csaveData( "OPT_PIKA_YOROZU", OPT_PIKA_YOROZU ); | |
csaveData( "OPT_PIKA_HPREST", OPT_PIKA_HPREST ); | |
csaveData( "OPT_PIKA_MAPHELP", OPT_PIKA_MAPHELP ); | |
csaveData( "OPT_PIKA_TRDHELP", OPT_PIKA_TRDHELP ); | |
csaveData( "OPT_PIKA_BLINKBLD", OPT_PIKA_BLINKBLD ); | |
csaveData( "OPT_SUZAN_SEISAN", OPT_SUZAN_SEISAN ); | |
csaveData( "OPT_CASTLE_AID", OPT_CASTLE_AID ); | |
csaveData( "OPT_NEXT_MEISEI", OPT_NEXT_MEISEI ); | |
csaveData( "OPT_TIMER_LINK_DEPOT", OPT_TIMER_LINK_DEPOT ); | |
if (isNarrow) { | |
csaveData( "OPT_VILLAGE_LIST_BOX", OPT_VILLAGE_LIST_BOX ); | |
} | |
alert("設定を保存しました"); | |
deleteOptionsHtml(); | |
} | |
function getMyInfo() | |
{ | |
if( (location.pathname == "/user/index.php" || location.pathname == "/user/" ) && !URL_PARAM.user_id ) { | |
var uid=0, aid=0; | |
var uidtd = $x("//table[@class=\"commonTables\"]//tr[2]//td[3]"); | |
if( uidtd ) { | |
uid = uidtd.innerHTML.match(/\/bbs\/personal_topic_view\.php\?user_id\=(\d+)/); | |
} | |
var aidtd = $x("//table[@class=\"commonTables\"]//tr[3]//td[4]"); | |
if( aidtd ) { | |
aid = d.body.innerHTML.match(/\/alliance\/info\.php\?id\=(\d+)/); | |
} | |
if( uid && aid ) { | |
csaveData( "user_id", uid[1], true ); | |
csaveData( "ally_id", aid[1], true ); | |
} | |
} | |
USER_ID = cloadData( "user_id", "", true ); | |
ALLY_ID = cloadData( "ally_id", "", true ); | |
} | |
function resetMapLink() { | |
if( !confirm("登録済みリンクを全て削除します。\nよろしいですか?") ) return; | |
var maplinks = cloadData( "links", 0, true ); | |
for(i=0 ; i<maplinks ; i++) { | |
cdelData( "link" + i, true ); | |
} | |
cdelData( "links", true); | |
resetMapLinks(); | |
} | |
function resetUserXY() { | |
if( !confirm("同盟員一覧の座標情報を全て削除します。\nよろしいですか?") ) return; | |
cresetUserXY(); | |
} | |
function resetUserStar() { | |
if( !confirm("君主の★情報と自領地のLevel情報を全て削除します。\nよろしいですか?") ) return; | |
cresetUserStar(); | |
cdelData("MyLevelList",true); | |
} | |
function openOptions() { | |
deleteOptionsHtml(); | |
addOptionsHtml(); | |
} | |
function deleteOptionsHtml() { | |
var elem = $("beyond_OptionsWindow"); | |
if (!elem ) return; | |
$("beyond_floatpanel").removeChild(elem); | |
} | |
function addOptionsHtml() { | |
var oc = d.createElement("div"); | |
oc.id = "beyond_OptionsWindow"; | |
oc.style.position = "absolute"; | |
oc.style.backgroundColor = "lightblue"; | |
oc.style.border = "outset 2px lightblue"; | |
oc.style.fontSize = "12px"; | |
oc.style.padding = "15px"; | |
oc.style.zIndex = 1000; | |
var x = cloadData("config_window_x", 20); | |
var y = cloadData("config_window_y", 20); | |
if(x < 0) x = 0; | |
if(y < 0) y = 0; | |
oc.style.left = x + "px"; | |
oc.style.top = y + "px"; | |
$e(oc, "mousedown", function(event){ | |
if( event.target != $("beyond_OptionsWindow")) {return false;} | |
g_MD="beyond_OptionsWindow"; | |
g_MX=event.pageX-parseInt(this.style.left,10); | |
g_MY=event.pageY-parseInt(this.style.top,10); | |
event.preventDefault();}); | |
$e(d, "mousemove", function(event){ | |
if(g_MD != "beyond_OptionsWindow") return true; | |
var oc = $("beyond_OptionsWindow"); | |
if( !oc ) return true; | |
var x = event.pageX - g_MX; | |
var y = event.pageY - g_MY; | |
oc.style.left = x + "px"; | |
oc.style.top = y + "px"; | |
csaveData("config_window_x", x); | |
csaveData("config_window_y", y); | |
}); | |
$e(d, "mouseup", function(event){g_MD="";}); | |
var tx = d.createElement("div"); | |
var ah = d.createElement("a"); | |
ah.href = "http://www1.ocn.ne.jp/~hatt/3gkb/"; | |
tx.title = ah.href; | |
ah.target = "_blank"; | |
ah.appendChild(d.createTextNode(VERSION_NAME)); | |
tx.appendChild(ah); | |
tx.style.padding = "4px"; | |
tx.style.fontSize = "10px"; | |
tx.style.color = "steelblue"; | |
oc.appendChild(tx); | |
$("beyond_floatpanel").appendChild(oc); | |
var tbl = d.createElement("table"); | |
tbl.style.border ="0px"; | |
var tr = d.createElement("tr"); | |
var td1 = d.createElement("td"); | |
td1.style.padding = "15px"; | |
td1.style.verticalAlign = "top"; | |
var td2 = d.createElement("td"); | |
td2.style.padding = "15px"; | |
td2.style.verticalAlign = "top"; | |
var td3 = d.createElement("td"); | |
td3.style.padding = "15px"; | |
td3.style.verticalAlign = "top"; | |
var td4 = d.createElement("td"); | |
td4.style.padding = "15px"; | |
td4.style.verticalAlign = "top"; | |
tr.appendChild(td1); | |
tr.appendChild(td2); | |
tr.appendChild(td3); | |
tr.appendChild(td4); | |
tbl.appendChild(tr); | |
oc.appendChild(tbl); | |
//設定項目 | |
ccreateCheckBox(td1, "OPT_VILLAGE", OPT_VILLAGE, "建築表示機能","村の表示で資源不足で建築不可能な場合、LV表示を黄色にします",0); | |
ccreateCheckBox(td1, "OPT_BASELINK", OPT_BASELINK, "拠点リンク機能","城や村のリンクにマップ・内政などのリンクを追加します",0); | |
ccreateCheckBox(td1, "OPT_MAPLINK", OPT_MAPLINK, "領地リンク機能","領地や敵地・NPC砦等へのリンク",0); | |
ccreateTextBox(td1, "OPT_MAPLINK_FONT_SIZE", OPT_MAPLINK_FONT_SIZE, "フォントサイズ","領地リンクのフォントサイズを指定します。デフォルト=10", 5, 20); | |
ccreateCheckBox(td1, "OPT_LARGEICON", OPT_LARGEICON, "大きめアイコン","拠点リンク・領地リンクなどのアイコンを14x14サイズにします(アイコン提供:ゆう@てらおとめん様)",0); | |
ccreateCheckBox(td1, "OPT_XYLINK", OPT_XYLINK, "座標リンク機能","掲示板などの(xx,yy)にリンク機能を追加します",0); | |
ccreateCheckBox(td1, "OPT_XYLINK_NK", OPT_XYLINK_NK, "両端のカッコ無視","xx,yyだけでもリンクします。1,000などの数字もリンクになってしまいます",20); | |
ccreateCheckBox(td1, "OPT_TTBL", OPT_TTBL, "兵力整形機能","掲示板に貼り付けた兵力一覧を整形します",0); | |
ccreateCheckBox(td1, "OPT_MEMO", OPT_MEMO, "メモ機能","メモ機能",0); | |
ccreateTextBox(td1, "OPT_MEMO_FONT_SIZE", OPT_MEMO_FONT_SIZE, "フォントサイズ","メモのフォントサイズを指定します。デフォルト=10",5,20); | |
ccreateTextBox(td1, "OPT_MEMO_WIDTH", OPT_MEMO_WIDTH, "メモ幅","メモの幅を指定します。デフォルト=20",5,20); | |
ccreateTextBox(td1, "OPT_MEMO_HEIGHT", OPT_MEMO_HEIGHT, "メモ高","メモの高さを指定します。デフォルト=5",5,20); | |
ccreateTextBox(td1, "OPT_MEMO_COUNT", OPT_MEMO_COUNT, "メモ数(1~5)","メモ欄の数を指定します。デフォルト=1",5,20); | |
ccreateCheckBox(td1, "OPT_DETAILS", OPT_DETAILS, "ログ合計表示機能","同盟ログの兵力+援軍の合計を表示します",0); | |
ccreateCheckBox(td1, "OPT_DETAILS_UP", OPT_DETAILS_UP, "合計を上に出す","合計表示を、下じゃなくて上に出します",20); | |
// ccreateCheckBox(td1, "OPT_DECK", OPT_DECK, "デッキ画面改善","デッキ画面の改善を行います",0); | |
ccreateCheckBox(td1, "OPT_DECK_SET", OPT_DECK_SET, "デッキセット先自動選択","初期表示のセット先拠点を現在選択中の拠点にします",0); | |
ccreateCheckBox(td2, "OPT_CTIME_B", OPT_CTIME_B, "完了時刻の表示(建物)","建築作成時に完了予定日時を表示します。",0); | |
ccreateCheckBox(td2, "OPT_CTIME_U", OPT_CTIME_U, "完了時刻の表示(ユニット)","ユニット作成時に完了予定日時を表示します。",0); | |
ccreateCheckBox(td2, "OPT_ALLY", OPT_ALLY, "同盟表示改善","同盟員一覧の表示改善",0); | |
ccreateCheckBox(td2, "OPT_ALLY_IS", OPT_ALLY_IS, "同盟表示のソート","同盟員一覧の並べ替えを追加します",20); | |
ccreateCheckBox(td2, "OPT_ALLY_XY", OPT_ALLY_XY, "同盟員座標表示","同盟員一覧に本居城の座標を追加します",20); | |
ccreateCheckBox(td2, "OPT_ALLY_CSV", OPT_ALLY_CSV, "同盟員情報CSV","同盟員一覧の詳細をCSV表示します。",20); | |
ccreateCheckBox(td2, "OPT_RES_T", OPT_RES_T, "資源生産合計表示","資源生産量の合計を表示します",0); | |
ccreateCheckBox(td2, "OPT_RES_TIME", OPT_RES_TIME, "資源時間の表示","資源の残り時間を表示します",0); | |
ccreateCheckBox(td2, "OPT_REMOVELIST", OPT_REMOVELIST, "破棄中の領地表示","破棄中の領地一覧を表示し、マップにマークを付けます",0); | |
ccreateCheckBox(td2, "OPT_MAPLIST", OPT_MAPLIST, "マップの地形一覧","マップ上の拠点・領地リストを表示します",0); | |
ccreateCheckBox(td2, "OPT_DISTANCE", OPT_TTDISTANCE, "移動時間表示","全ての[兵を送る]リンクのToolTipsを移動時間の目安表示に変更します",0); | |
createDistanceBox(td2, OPT_TTDISTANCE_ITEMS, 5); | |
ccreateCheckBox(td2, "OPT_TTALLYPRSN", OPT_TTALLYPRSN, "同盟/君主表示","全ての[拠点/領地]リンクのToolTipsを同盟/君主表示に変更します",0); | |
ccreateCheckBox(td3, "OPT_USER_STAR", OPT_USER_STAR, "君主★情報表示","プロフィール画面に領地の★表示を追加します",0); | |
ccreateCheckBox(td3, "OPT_USER_LEVEL", OPT_USER_LEVEL, "領地レベル表示","プロフィール画面に領地のレベル表示を追加します",0); | |
// ccreateCheckBox(td3, "OPT_REPORT_NP", OPT_REPORT_NP, "同盟ログ前後表示","同盟ログの詳細に、[前のログ]・[次のログ]を追加します(限定的)",0); | |
ccreateCheckBox(td2, "OPT_MAPCENTER", OPT_MAPCENTER, "マップ中央表示","マップ中央に目印を表示し、中央座標を表示します",0); | |
ccreateCheckBox(td3, "OPT_TBREST", OPT_TBREST, "討伐ゲージ回復時間予測機能","武将の討伐ゲージが300 or 500になる時間を表示します",0); | |
ccreateCheckBox(td3, "OPT_DELMSG", OPT_DELMSG, "書簡/報告書削除機能","書簡や報告書の内容ページに、削除ボタンを付けます",0); | |
ccreateCheckBox(td3, "OPT_TSENDTIME", OPT_TSENDTIME, "出発時刻計算","出兵画面で、到着希望時間から出発時刻を計算します",0); | |
ccreateCheckBox(td3, "OPT_SMALLBTN", OPT_SMALLBTN, "小さいボタン","右上の4つのボタンを小さくします。状況も1行にします。",0); | |
ccreateCheckBox(td3, "OPT_ATTACKMAP", OPT_ATTACKMAP, "出兵表示機能","マップ上に、現在出兵中の目印を付けます",0); | |
ccreateCheckBox(td3, "OPT_CARD_CMB", OPT_CARD_CMB, "同一カード合成ボタン","カード合成後に、同一カードで合成を続けるボタンを追加します",0); | |
td3.appendChild(d.createElement("br")); | |
var fs = d.createElement("fieldset"); | |
var lg = d.createElement("legend"); | |
lg.appendChild(d.createTextNode(" プレゼンツ by ピカチュウ ") ); | |
fs.appendChild(lg); | |
td3.appendChild(fs); | |
ccreateCheckBox(fs, "OPT_PIKA_YOROZU", OPT_PIKA_YOROZU, "ヨロズダス引き忘れ防止機能","ヨロズダスがリセットされたら通知してくれます",0); | |
ccreateCheckBox(fs, "OPT_PIKA_HPREST", OPT_PIKA_HPREST, "武将の回復時間予測機能","武将のHPが100になる時間を表示します",0); | |
ccreateCheckBox(fs, "OPT_PIKA_MAPHELP", OPT_PIKA_MAPHELP, "マップ画面検索改善","X座標のところに999,999等を入れてもジャンプしてくれます",0); | |
ccreateCheckBox(fs, "OPT_PIKA_TRDHELP", OPT_PIKA_TRDHELP, "トレード画面入力改善","4桁数字を入力するとカードNoとして検索します",0); | |
ccreateCheckBox(fs, "OPT_PIKA_BLINKBLD", OPT_PIKA_BLINKBLD, "都市画面改善","建設中を点滅させます",0); | |
td3.appendChild(d.createElement("br")); | |
var fs = d.createElement("fieldset"); | |
var lg = d.createElement("legend"); | |
lg.appendChild(d.createTextNode(" プレゼンツ by su-zan ") ); | |
fs.appendChild(lg); | |
td3.appendChild(fs); | |
ccreateCheckBox(fs, "OPT_SUZAN_SEISAN", OPT_SUZAN_SEISAN, "拠点生産量表示","拠点の生産量を表示します",0); | |
var fs = d.createElement("fieldset"); | |
var lg = d.createElement("legend"); | |
lg.appendChild(d.createTextNode(" プレゼンツ by ろむ ") ); | |
fs.appendChild(lg); | |
td4.appendChild(fs); | |
ccreateCheckBox(fs, "OPT_CASTLE_AID", OPT_CASTLE_AID, "拠点援軍ボタン機能","城や村のリンクの横に援軍ボタンを表示します",0); | |
ccreateCheckBox(fs, "OPT_NEXT_MEISEI", OPT_NEXT_MEISEI, "名声獲得タイマー機能","次の名声値獲得までの時間を表示します",0); | |
ccreateCheckBox(fs, "OPT_TIMER_LINK_DEPOT", OPT_TIMER_LINK_DEPOT, "ブラ三タイマー格納機能","浮浪プログラマさん作成のブラウザ三国志タイマーをサイドボックスに格納します",0); | |
if (isNarrow) { | |
ccreateCheckBox(fs, "OPT_VILLAGE_LIST_BOX", OPT_VILLAGE_LIST_BOX, "都市リスト表示機能","都市のタブ以外でも都市のリストを表示できるようにします",0); | |
} | |
ccreateButton(oc, "保存", "設定内容を保存します", function() {saveOptions();}); | |
ccreateButton(oc, "閉じる", "設定内容を保存せず閉じます", function() {deleteOptionsHtml();}); | |
ccreateButton(oc, "領地リンクのクリア", "領地・君主リンクの内容を初期化します", function() {resetMapLink();}); | |
ccreateButton(oc, "同盟員座標のクリア", "同盟員座標を全て初期化します", function() {resetUserXY();}); | |
ccreateButton(oc, "★/Level情報のクリア", "君主の★情報と自領地のLevel情報を全て初期化します", function() {resetUserStar();}); | |
ccreateButton(oc, "領地リンクの直接編集", "領地リンクをテキストで自由に変更できます", function(event) {mapLinkList(event);}); | |
} | |
function createDistanceBox(container, items, num) | |
{ | |
var sels = ["その他", "無し", "剣兵(6)", | |
"槍兵(7)", "弓兵(5)", "騎兵(12)", "斥候(9)", "衝車(3)", | |
"矛槍兵(10)", "弩兵(8)", "近衛騎兵(15)", "斥候騎兵(20)", "投石機(6)"]; | |
for(var i=0 ; i<num ; i++ ) { | |
var src = ""; | |
if( sels.indexOf(items[i]) != -1 ) src = items[i]; | |
var cb = ccreateComboBox(container, "OPT_DISTANCE_CB" + i , sels, src, "表示" + (i+1), (i+1) + "行目の表示", 20 ); | |
var tb = d.createElement("input"); | |
tb.type = "text"; | |
tb.id = "OPT_DISTANCE_TX" + i; | |
tb.title = "例) 「超早い馬(50)」など、半角カッコの中に速度を入れて下さい"; | |
if( src == "" ) { | |
tb.value = items[i]; | |
}else{ | |
tb.disabled ="disabled"; | |
} | |
tb.size = 12; | |
cb.parentNode.appendChild(d.createTextNode(" ")); | |
cb.parentNode.appendChild(tb); | |
(function(no) { | |
$e(cb, "change", function() { | |
var cb = $("OPT_DISTANCE_CB" + no); | |
var tb = $("OPT_DISTANCE_TX" + no); | |
if( !cb || !tb ) return; | |
if( cb.value == sels[0] ) { | |
tb.disabled =""; | |
}else{ | |
tb.disabled ="disabled"; | |
} | |
}); | |
})(i); | |
} | |
} | |
function getDistanceBox(num) | |
{ | |
var ret = new Array(); | |
for(var i=0 ; i<num ; i++ ) { | |
var cb = $("OPT_DISTANCE_CB" + i); | |
var tb = $("OPT_DISTANCE_TX" + i); | |
if( !cb || !tb ) return null; | |
if( cb.value == "その他" ) { | |
ret.push( tb.value ); | |
}else if( cb.value == "無し" ) { | |
ret.push(""); | |
}else { | |
ret.push( cb.value ); | |
} | |
} | |
return ret; | |
} | |
////////////////////// | |
//建築表示処理 | |
////////////////////// | |
function disp_village() { | |
if( location.pathname != "/village.php" ) { | |
return ; | |
} | |
//costs | |
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_mihari = [ | |
[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], | |
[,,,], | |
[349458,489242,349458,209675], | |
[419350,587090,419350,251610], | |
[503220,704508,503220,301932] | |
]; | |
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_enseikunren = [ | |
[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], | |
[384509,598125,790379,363147], | |
[512678,692116,897187,461410], | |
[645974,830539,1045863,553692], | |
[,,,], | |
[,,,], | |
[,,,], | |
[,,,] | |
]; | |
var cost_syuugyousyo = [ | |
[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 = []; | |
costs["伐採所"] = cost_wood; | |
costs["石切り場"] = cost_stone; | |
costs["製鉄所"] = cost_iron; | |
costs["畑"] = cost_rice; | |
costs["倉庫"] = cost_souko; | |
costs["宿舎"] = cost_syukusya; | |
costs["工場"] = cost_kojo; | |
costs["水車"] = cost_suisya; | |
costs["市場"] = cost_ichiba; | |
costs["研究所"] = cost_kenkyu; | |
costs["訓練所"] = cost_kunren; | |
costs["鍛冶場"] = cost_kajiba; | |
costs["防具工場"] = cost_bougu; | |
costs["兵器工房"] = cost_heiki; | |
costs["銅雀台"] = cost_doujaku; | |
costs["練兵所"] = cost_renpei; | |
costs["兵舎"] = cost_heisya; | |
costs["弓兵舎"] = cost_yumi; | |
costs["厩舎"] = cost_uma; | |
costs["城"] = cost_shiro; | |
costs["砦"] = cost_toride; | |
costs["村"] = cost_mura; | |
costs["見張り台"] = cost_mihari; | |
costs["大宿舎"] = cost_daisyukusya; | |
costs["遠征訓練所"] = cost_enseikunren; | |
costs["修行所"] = cost_syuugyousyo; | |
var img_lv = new Array(); | |
img_lv[0] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWAMQAAKiTADs9BK+dAN7aALGjAMO2QernwPT038CzLOvmANfQgfn577OjDeLbnsjE'+ | |
'AOXkrrCtALurPsS7FvDtztXOau/qANXRAMf/If/6CLy4ACAgIL+sAGFyB7WdAP///////yH5BAEA'+ | |
'AB8ALAAAAAAXABYAAAW24PdxZGmepShyWOu+sMutcV3PXKXvSTL8v8Rux9FwLMikxSGhGAwUhxJZ'+ | |
'5GSu2Azk4el6FJBspropmwmIxUFS6DLMZTJ8Q5gcBPiGpzCXwxFfAhsCCh4IfUZzG20NAI4GBwSI'+ | |
'HIoMXRQRXAWScH5whV0LBYKTHaanHQARChQMAKinVbCnjo6zpkUjt7uxGhorKBy3Jb4qH77IvrDJ'+ | |
'xcbOIqgBAc/UxqfS1dkfptja1R3d3tXT2iEAOw=='; | |
img_lv[1] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWAMQAAEBCAP//IbKcAP7+6mZ5AMjEAPnnRKiTANXRAO3YALy4AP/6CP/zgb+sAO/q'+ | |
'ACAgIP/6Et7aAP7xV9C2AP///7WdANXRAPLVB6+sALqhAP/7JevmAK2YAP/mAd7aAP///yH5BAEA'+ | |
'AB8ALAAAAAAXABYAAAWh4PcRZGmepSgSQeu+sEusS23fOD4TTu/7keDm5yM8CJakMlnwaCCFpdJI'+ | |
'UFivCgxiQJFgsFdqY0xuCBKMrqBMFrPHgo763XC/OXIJh25n47t7b31lHAaAfEd0DRwSh4JHFZGS'+ | |
'kRwTFxkck5JUmpMHnwKdFUYjoqabDw8rKASiJakqH6mzqZq0sLG5IpMAALq/sZK9wMQfkcPFwBXI'+ | |
'ycC+xSEAOw=='; | |
img_lv[2] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAPz4Lr+vALKcAGZ5AP/5wP//Ie/qAKeSAP/zlenkAP////7xa7y4AP/n'+ | |
'F//6CP7+6t7aACAgIL+sAPXTBf/zgf/8TdXRAP7zq7WdAKyaAP381v3rQ+XHAMjEAOvmAMKtAPrn'+ | |
'Bf36VuzXAP/n5//8c/7yl////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACcALAAAAAAXABYAAAbDwNOJ'+ | |
'QCwaj0WhkGBoOp9QJ2H5qFqvWOyUcOh6u5Fw+PPtEiSEi3p98ShKGIzFw1afCY28viFa+P0BGnsN'+ | |
'dxOGhwMVDCMaDgscA4eGhZKGAxqYCRsgkZKUlRkaAhUQjBmVn5IaIQUFIwgIp55olRMaDAsQFXEY'+ | |
'Gqi0lRoFubwmnYd3GcrLGhQdsNADy8rJ08qY0tbTZ0Pa3tZnEktIBN5FEuJK6Ovo1uzoSvHy0wAA'+ | |
'8vf3y/X4/ErK+/36ZQAYsJ+9gEEAADs='; | |
img_lv[3] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAPXZMcjEAKyaAP7+6mZ5AP//If32lu/qANfBAKeSALy4AP/5wP/8Tfnh'+ | |
'BP/6CLWdACAgIN7aAL+sAP/5rP3rQ/TXHP/////8Yf381uzXANXRALGjAL2rAPflWuvmAPzpLunk'+ | |
'AP7xa//WQvzkAv36Vv/0l//nF////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACgALAAAAAAXABYAAAbEQBSq'+ | |
'QCwaj0WhsGBoOp9QZ2H5qFqvWOy0gOh6u5Jw+PPtFiKFjXq9EYQaJgpGwFafC4u8nlO6+P0gHHp5'+ | |
'dxOGhxwmIhoDJxcVHIeGhZKGHBwJFRkUAwOVlJWdFH8MHZ9olRMcIA4dChp+DqcFlRwkFweuFRcE'+ | |
'ppJ3EMHCEAx/FxmMwxDAyhAKAR4eFgoKzczNnZ3NwWdD29/CZxFLSAXbRRHjSuns6crt6Ury88MA'+ | |
'APP4+ML2+f1Kwfz8+YMQUKC/ewKDAAA7'; | |
img_lv[4] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAP/8TbWdALqhAKiTAP381mZ5AP//If32gurlAO/qAL+vAP/6CLy4AP/5'+ | |
'wP///7+sAOHdANTBAP/7JSAgINXRAP74q7CtAP7xa/LVB7GjAP756sjEAP7xV6yaAOvmAMKtAP//'+ | |
'/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACEALAAAAAAXABYAAAa/wFDI'+ | |
'QCwaj0Wh0HBoOp9Qp2HJqFqvWOzUoOh6v4pI5ANWGCiGinq95nACEw5bfTY07vj7JVF4dC55d3UQ'+ | |
'hIUQGgkbGH4ahoSDjhogDg4ejI4QkIYeGBsSBH4eHgKGmoSIDxsOD6yXhaaHCw4WGAgPFh0Lja9o'+ | |
'Ar6/AqIeGX4EBMACdcjABAMZA8fIysu/xtHSFEPU279n2UNIBtRFFN9C5ejlyOnlSu7vwAAA7/T0'+ | |
'v/L1+Uq++Pr6Av386ZvnLwgAOw=='; | |
img_lv[5] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAPXZMbWdAL+pAKeSAP/5wGZ5AP//If/zgb+vAPz3AP/6CP///+/qAPfl'+ | |
'WrKcAP/5rL+sAN7aACAgIPXTBdXRALy4AKyaAP/7OP/8YdXRAP381v/6EMjEAP/sLOvmANK/APnn'+ | |
'RP7xa/vuWcKtAP/mAf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACYALAAAAAAXABYAAAbGQJPJ'+ | |
'QCwaj0Wh0HBoOp9Qp2G5qFqvWOzU0Oh6u5Kw+PNtGCaGinpd6Sg4HExG0WFXzgaLfm/RMP4MEBoX'+ | |
'fBZ4EYiJDx4MJRePFwKJiIeTEQ8iDB4IEAgkD5aVkxcQDAUjpRAXoWiWERcJHgSzf6uToomkGyAE'+ | |
'IYG2iXgCw8QCBYCmAw/FAsLMAgQBDg4Us8vFzs+QF9fMZ0PP4d4TE0tIBuFF5Eom5O7kzO/r7PRC'+ | |
'xQAA9frsxPj7/yaG+QO4T8BAgvvyAQwCADs='; | |
img_lv[6] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAPzlQsjEAKypAP7+6mZ5AP//If/6CP/9iNfTAKeSANfBALy4AP/5rP7x'+ | |
'a/nhBLWdAL+sAP///yAgIP/5wN7aAO/qAOXHANK/APflWv/zgbKcANXRAP381r+vAPTXHPz3AP37'+ | |
'luvmAP/mA66eAP/n572fAP/WQv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACgALAAAAAAXABYAAAa/QBSq'+ | |
'QCwaj0WhsGBoOp9QZ2F5qFqvWOy0YOl6vZWw6OstTAqctDotACESgrXaXGDY7wyShxAa4PF0EYKD'+ | |
'ESQhBAskioSCgYwbIxIaDg0aCxuMjoSGEhIUHRINJJlnjIWeDwoenaOEmoMkBAQYCgESIa2DdBC8'+ | |
'vRC2nZ4eJL4Qu8UQChcZGR8KChvFx8jPz9HIZkPI29ITE0tIBdtF3koo3ujexenl5u5CvgAA7/Tm'+ | |
'vfL1+Si8+Pr1EP381ZunLwgAOw=='; | |
img_lv[7] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAPvkLb2rALGjAP/+wGZ5AP//Ie/qAP/8daiTANC2AP///7y4AP7xV/LV'+ | |
'B+HdAP/5rP/6CL+sACAgINXRAP756vz3ALWdAK+sAP/6Ev3xlvrtRcjEAPrpbOvmAL2fAKyaAP/s'+ | |
'LP/mAf/dvda4AMKtAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACYALAAAAAAXABYAAAbAQJOp'+ | |
'QCwaj0WhsGBoOp9QZ2EZqVqvWOy0cOh6D4+HxxP2fLuFSYHCbnMsCA4nk+G02+kCY8/HQBYEC4IQ'+ | |
'GHx7eRKJigN/DSIhCw0DiomIlBKMCyAgEBUlk5SWlAMhGwkikSAXl6KjAwMaCwqgoWqXiiACgKq3'+ | |
'rZQgAQsdILcSeRfIycgJCg4CCcrJx9HJCdbUyGlD2NzSExNLSAXYRd9KJt/p39Hq5ufvQsoAAPD1'+ | |
'58nz9vomyPn79hf8/bNHb18QADs='; | |
img_lv[8] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAPXZMbWdANbSAKiTAP381mZ5AP32lv//IeznAL+vAPv4bf/////+wN7a'+ | |
'AP/6CLy4APflWtXRAL+sACAgIPnhBP/5rP3xgv/8Ta+dAP7+6u/qAPTXHLGjAP/7OsjEAL2fAOvm'+ | |
'AP/uV//dvcGuAP/n5//mAf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACcALAAAAAAXABYAAAbNwNPJ'+ | |
'QCwaj0Wh0IBoOp9Qp2H5qFqvWOzUsOl6u46wOPTdGCgGiXot+XgOlgNm8GFLzgaIft+5MBYRDQwa'+ | |
'CR17EHgTiosZDAwJJg0FIhmLiomWExkLjgwWJBmVlpiWGQkaGo4WCh2ZpIodChoNChUFDBeii6+a'+ | |
'FX8EBJwHupdoAsfIGYINggUJGcjHeNHIBAERERwKBNQC090CwOLgZ0Pg58hnFEtIBuREFOtK8fTx'+ | |
'1PXxSvr70QAA+wABIvMXsKCSYwQNGhSQUKHBfwqDAAA7'; | |
img_lv[9] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAPXZRbWdANXRAKiTAP7+6mZ5AP//If/5rNC2AL2oAP/6CP3xgv381vTX'+ | |
'HLy4AN7aAL+sAO/qAP///yAgINXRAK+sAPvuWezXALGjAP/8Tf3xlsjEAOvmAKyaAP/n597aAMGu'+ | |
'ANa4AP/8Yf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACQALAAAAAAXABYAAAbAQBLJ'+ | |
'QCwaj0Wh0HBoOp9Qp2G5qFqvWOzUIOl6u5CwuPOVGCiGinpd4YA0CMQIxGFXzoaHfm8ZNBoIBRMI'+ | |
'Fnt6eBGJihkIDR4eGBMTGYqJiJURGRMNIY+blJWXlYybgRMMoIqiiwoXCBuCA6mWaJiJjx4Opx62'+ | |
'eAK/wL8eCgUFCRnBv77JvwQJAQ4EzALL0wTX09QUQ9nd2ttDSAbTRRTgQubp5snq5krv8MEAAPD1'+ | |
'9cDz9vpKv/n7+wL8/dtH718QADs='; | |
img_lv[10] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAP/7OsjEALCtAP7+6mZ5AO3YAP37lv//If/6CKiTAP77a7WdAN7aAP/5'+ | |
'wPLVB/flWr+sAO/qALGjANXRAP/6EiAgIP////z2rsKtANXRAP/8Tf/zgby4AL+vAP381vnnROvm'+ | |
'AK+dAP/mAfvjGd7aAPXZRdC2AP7xV//n572fANfBAP/7Jf///wAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAC0ALAAAAAAXABYAAAbhwFar'+ | |
'QCwaj0WhsIBoOp9QZ2GZqFqvWOy0IOlKGuCQOAQuh7wFS0HDFpRYFUG7tMFgAnJ2utDpDCgEFygD'+ | |
'fQMHF4gXC4QdexEREwYcghOQBgQfKyOIGY+OjxObKJUTDh8iqJMjnmqPkKKVBoIiESIoFwasBa6h'+ | |
'lBGbHArCGB+VEZ+1IL4eiCAPhyPGewzUtrOot4gEJCLUDNPUCicPHgrhDxAm5d7fauzC5t7w8d5p'+ | |
'Q+z4+fUWFktIBfqK8FPSgp9BfvgODiTIUAg7AAAaSiToDeLEiy2oWcQ4kcFGjhMjYgwCADs='; | |
img_lv[11] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWAMQAAEBCAP/7JdXRALKcAP7+6mZ5AP//IdC2AKiTAO/qAP7xV7y4APLVB7qhAP/z'+ | |
'gf/6CCAgIPnnRL+sAP///97aANXRAO3YAK+sAP/6ErWdAMjEAOvmAK2YAP/mAd7aAP///yH5BAEA'+ | |
'AB8ALAAAAAAXABYAAAW54PcVZGmepSgWRuu+sFusT23fOD4XSd9TwI0vAaQIewVIQcAUaDwBjKb5'+ | |
'jE6ZycJie6kQJooL1wsWb7OS9MDiAA/UbHdagp4POnI1XvFO19McexxzgWCDfkpzEoUKh4uCc3+L'+ | |
'EYaElI2RiYQKlYCcmIgFGaMZHAcMDRykpqiqo1mkowizA7GzCLWvECOxvb6kSbsjKKK+JRDCIsjL'+ | |
'yL3MyCrR0rEAANLX16TV2Nwqo9vd3Rng4d3W4SEAOw=='; | |
img_lv[12] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAPz4Lr+vAK+sAP/5wGZ5AP//Ie/qAP/zgenkAKeSAP///7WdAP/nF/7z'+ | |
'q97aAP7xV7y4AP7+6vLVB9XRAP/6CCAgIL+sAP7xa7KcAP3rQ//zldXRAPrnBf381sjEAOvmAOXH'+ | |
'AN7aAPnnRL2fAP/n5//8TdC2AKyaAO3YAP/mAf/8c//7Jf7yl//6EsKtAP///wAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADAALAAAAAAXABYAAAbfQBis'+ | |
'QCwaj0WhsGBoOp9QZ2FZqVqvWOy0cOgeHmCQGAQug7wFS4HC/ohYrk87sXI4THJ2uhCJDDgSCxAD'+ | |
'fhALh4cBhBF7FxcZKQiCGY8IGCkoDQsajheNjhkqk6AopRseL52fFygdgiiODCgCCBKYqmqdra+O'+ | |
'rQQEKQoKuAW6I7woGAsSCHYOxAzRKIYQKLIEy84tGdx70bInEwLWKBMhwujcGd7fpSjq6t/yaUPy'+ | |
'9vffaRZLSAX4RRb2KQlIMKC9ggGVKFwoDwCAhRAhfnMYsaKSaBQtWmSQUaPFhxqDAAA7'; | |
img_lv[13] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAPzpLsjEAK+sAP7+6mZ5AO3YAP7xa///If/6CKeSAP/5rN7aALWdAP/6'+ | |
'EvflWr+sANXRAP/5wO/qACAgILGjAP32lv////LVB/3rQ/XZMdXRANC2AP381r2rALy4AP/zgfTX'+ | |
'HP7xV//8TenkAOvmAP/7Jf/mAdfBAP/WQqyaAP/8Yb2fAP/0l97aAP/nF////wAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADAALAAAAAAXABYAAAblQBis'+ | |
'QCwaj0WhsIBoOp9QZ2GZqFqvWOy0MOlOGOCSuAQul7wFSmHDFrhMDkGbNGotVnJ2uvD5DCIEFyID'+ | |
'fiIXh4cBhB97EBAVBiCCFY8tBwYqLxcZlBCNjhUnk6AVKBkdCyoqjp+PoiKdqguIEh6sao6ugqsV'+ | |
'ASceCgaHJ7cFuSoZuxCiFsDJBLaeag3UKoYiKtQSiBcdBtQNe+AqHBge2Q0KGg8PIQoK4OLjquAN'+ | |
'qvT1aUP1/P3xFBSWICngrwhAJTAAKgTIb+FBhBCF1AMAIKJFhOAoXtwIg5pGjhcbfAR5sSLHIAA7'; | |
img_lv[14] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAPnnRL+vALCtAP381mZ5AP//Ie/qAP7xa9C2AKiTAP74q7WdAN7aAP/7'+ | |
'JfLVB////7y4ANXRAP/6CCAgIL+sAOrlAP/zgf7xV7GjAP/5wNXRAP7+6v/6EsjEAKyaAOvmAL2f'+ | |
'AN7aAP/8Tf/mAf/n58KtAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACcALAAAAAAXABYAAAbZwNOp'+ | |
'QCwaj0WhsGBoOp9QZ2E5qVqvWOy0cOgeGmCQ1xv2FigFidojcnQ86rVn5ICrz4VIZLDhQDADensW'+ | |
'BH+BengVFRkWF38ZiowcCI+KFYmRJJUZJhoaH5WKmIuaGB8VHwgcCQp/H6eXaJYZpacWEBwaELt/'+ | |
'orKKHwF/ChUCGgsIjgsYAr4FDNAfGK7Rrw/DCtB40AwKCQ8C2dwKAuDiDNvjCufq7GdD3PHy82cU'+ | |
'S0jP9EQU9kr8//zkAeSnpKDBeAAAGFy4kFtChhCVQHsYMSIDihUjKqwYBAA7'; | |
img_lv[15] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAPXZMb+vAK+sAP/5wGZ5AP//If7xa+vmANC2AKeSAP/6Ev///7WdAPfl'+ | |
'Wv/5rL2fAP/6CPLVB7y4AP/7JSAgIL+sAN7aAO3YAP381tXRANXRAPnnRLKcAPfyAP/zgcjEAP7x'+ | |
'V//sLP7+6v/mAayaAP/8Yd7aAP/7OPz3AMKtAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACsALAAAAAAXABYAAAbowNWq'+ | |
'QCwaj0WhsGBoOp9QZ2EZqVqvWOy0gOgiLmDvF0z2FiqFjRp0oixA69RigTKl4JtzYTIZaEYMIQN9'+ | |
'GgyGDA8agxN6FhYdGB+BHY8iDCQlmSUNjo2OHSSTjwcMIh8PHyqUFp4WJaEhJa4PDAQhtA+yrGiO'+ | |
'rrCyJQIiCsSGuq0lHIHADxkJCsq5nWgN1SUhy9UEh7UCHd961Q0lCRICmw0KAQ4OEsTfHeHimvDf'+ | |
'xAod4g1nQ/r+/+LOVFiCpADAIhUGKknIMKG/hgmVSJyoDwCAiRgxirOYsaOSahw9emwQUqTHiyKD'+ | |
'AAA7'; | |
img_lv[16] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAPzlQsjEAKypAP7+6mZ5AP//IdfBAP/zgf/6CKeSAP/5rLWdAO/qAP/m'+ | |
'A7+sAN7aAP////LVB/flWrKcACAgINXRAP/5wNC2AOXHALy4AP37lr+vANXRAPTXHP7xa/381uvm'+ | |
'APz3AP/7Ja6eAP7xV72fAP/mAf/n5//9jN7aAP/WQv/6Eu3YAP///wAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAC4ALAAAAAAXABYAAAblQJer'+ | |
'QCwaj0WhsGBoOp9QZ2GZqFqvWOy00Og2IOCQ9xseFyoFi1qgGrEEaotAlFLB4+eCRkPqECIlA3sk'+ | |
'HAQbgnt7eQ8PFC0IgBSMJBsEBySYjA+LkyeRjQ4RCB8LCAeSm2iaJJ4lJA+UEREXIBELr6kFq62v'+ | |
'JLMnChyyuJywAYC9BAQYCscbxGgM0iQlyNLHsrMcJNJ50gwKGBIcCtIKGRMTHgoKFO7e3+zt7hTy'+ | |
'7d8MZ0P4/P3fZxWWICngr0iFgEoOKjzIb+FBJRAj4gMAIKJFi98oXtyoRJpGjhwZfATJsSLIIAA7'; | |
img_lv[17] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAPvkLb2rAK+sAP/+wP//IWZ5ANC2AP/zge/qAKiTALy4AP////7xV/LV'+ | |
'B97aALWdAP/7JdXRAP7+6v/5rP/6CCAgIL+sAPrpbO3YAP/6ErGjAPrtRdXRAMjEAOvmAKyaAN7a'+ | |
'AMKtAP3xlv/8df/mAb2fAP/sLNa4AP/dvf/n5/z3AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACwALAAAAAAXABYAAAbeQBbL'+ | |
'QCwaj0Wh0FBoOp9Qp2FZqVqvWOzUkOgmHuCPOPwJew0Wg2TtCUU0HolnRfJ4NPC1BG1YLAYdEwwN'+ | |
'A38UDAQMihSFC3wXFxsZCIMbkYcNJSeVkI+QGyWcG4cgIBQTIpYXnpGhDZYbJxwKriCQq2m3oJyR'+ | |
'GxsjDB2quAa3IByDtpAgAojKnWkQ0iANydIQIAEMGCDXEHzXCgcOAgrh4+Xe4OEK5t7t7tdoQ971'+ | |
'9vIWFktIBvdF+UpY5BuYrx5BgAETCvEGAIDChwGvNYRIkYW0iRUhQsCYEaLDikEAADs='; | |
img_lv[18] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAPnnRMjEAK+sAP381mZ5AOznAP32lv//If/6CKiTAPTXHLWdAN7aAPv4'+ | |
'bf/////+wL+sAO/qAPLVByAgILGjANXRAP/zgf/5rPXZMfflWv7+6tC2AL+vALy4ANXRAP/mAevm'+ | |
'AP/7Ov/7Jf7xV//8Tf/6Er2fAP/n58GuAK+dAP/dvd7aAP///wAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAC0ALAAAAAAXABYAAAbowFar'+ | |
'QCwaj0WhsIBoOp9QZ2GZqFqvWOy0IOlKGuCQOAQuN8YFSsHCFrBGJkFbdMAcSiy5JV3weAYfGw8k'+ | |
'A38XDw4kEA8bBoV8EREVBockFZIPDwYgEASWkZCRFSCDlxUOmQ8YKSqREaGSpJ+TG4KqHZevaq6j'+ | |
'pREdGxAdIAQPF7mwKgG+EYgKCqgHrboFDNYqJIMq24sQiwQGFdZ81gwKHBMdCtYKGRoaC+rl5OXP'+ | |
'6/X29+MUQ+X+/wDT8BuCpFpAIhQGCknIMOG/hgmVSJzoDwCAiRgxlrOYsaMSaxw9emQQUqTHiyKD'+ | |
'AAA7'; | |
img_lv[19] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAPnnRLqhAK+sAP381v//IWZ5AOvmAP/zgdXRAKiTAPTXHP///7WdAP/6'+ | |
'CO3YAP/5rPfyAN7aALy4AP/6EtXRAL+sACAgIP/8Tf7+6rGjANC2APLVB8jEAP7xV//7Jf3xlqya'+ | |
'AMGuAP/n597aAPXZRf/8Yda4AP/mAb2fAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACoALAAAAAAXABYAAAbeQJXK'+ | |
'QCwaj0Wh0FBoOp9Qp2HpqFqvWOzUcOgeJGDvF0z2Gi6GirpD+lA6axIGAjGR4JWzYTIZJDIMHgN9'+ | |
'CQQEEIAQgxN6FhYaDwiBGo8QBCEhDwwMlBaNjhook48MBCKYpZ2fj6IelBoQpYgMCKpojqyjGiIe'+ | |
'ECCACbYGDcQhAYEhxZgLtMnEesQNIR7I0SECGRkbGtHQxAobHAIK0eAlC+TdaNENCu7s7e/sZ0Pw'+ | |
'9vdnF0tIw/ZFF/qUABwIEB5BgEoSKmQHAIDChw+jNYRIUQmxiRUrNsCYsaLDjEEAADs='; | |
img_lv[20] = 'data:image/gif;base64,'+ | |
'R0lGODlhFwAWANUAAEBCAPXZRcjEAKypAP381mZ5AOXHAP37lv//If/6CKShAP/nF/77a////97a'+ | |
'ALWdAP/5wNXRAPXTBfz2ru/qACAgIP/zgb+sAPz4LrGjAP7+6vflWt7aALy4AL2rAP/8Tf/mAevm'+ | |
'AMGuANfBAP3rQ6yaAOnkAKeSAOzXAP/n5/vuWc/LAP7yl//8c/v2C72fAP/WQv/7OsaqAP///wAA'+ | |
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADMALAAAAAAXABYAAAb0wNms'+ | |
'QCwaj0WhsIBoOp9QZ2GZqFqvWOy0QOlSHGBwaBwWjwuVQmQtMLUmk49gJeB84DHBGl3odDIqDYKC'+ | |
'GAMDB4MNDAMdfBcXGRYMKCULDSQlKBoEIyCCIheOjxklpSwEIiUQBKUlFg0goWmPFw8lHhYaKCco'+ | |
'DSolFyWBKLIFtBkgEBC7J54WrROsxaMMDRoWcBMeggESiLHFD7YQ1tkswoMaCxkZD3ziJRIGJ/T0'+ | |
'7BIbAR4n4u5p/aX6CWxVQiCaIQITKuyHpsISJAUWFqngUAnFixQTYqSopKNHgQAAeBw5sl9IkiiV'+ | |
'iDuZMuUDli1TimwZBAA7'; | |
Pika_prepareForDisplayBuildStatus();//Lv0表示 | |
var xybld_a = new Array(); | |
var allbld = $a("//li/span[@class=\"buildStatus\" and contains(text(),\"建設\")]/a"); | |
for(var idx=0 ; idx<allbld.length ; idx++) { | |
var tmp = allbld[idx].href.match(/x=([\-0-9]+).*y=([\-0-9]+)/); | |
if( tmp != null ) { | |
xybld_a.push(tmp); | |
} | |
} | |
allbld = $a("//li[contains(text(), \"削除中\")]/span[@class=\"buildStatus\"]/a"); | |
var xybld_d = new Array(); | |
for(var idx=0 ; idx<allbld.length ; idx++) { | |
var tmp = allbld[idx].href.match(/x=([\-0-9]+).*y=([\-0-9]+)/); | |
if( tmp != null ) { | |
xybld_d.push(tmp); | |
} | |
} | |
var allarea = $a("//area"); | |
for(var idx=0 ; idx < allarea.length ; idx++) { | |
var title = allarea[idx].getAttribute("title").match(/^(.*) LV\.([0-9]+)$/); | |
if( !title ) { | |
title = [allarea[idx].getAttribute("title"), allarea[idx].getAttribute("title"), 0]; | |
} | |
if( costs[title[1]] ) { | |
if(costs[title[1]][title[2]]) { | |
var xy = allarea[idx].getAttribute("href").match(/^.*(?:\?|&)x=([\-0-9]+)&y=([\-0-9]+)+(?:&[^=]+=[^&]+)*$/); | |
var level = parseInt(title[2],10); | |
var blding = 0; | |
var dlting = 0; | |
for ( var xxx=0 ; xxx < xybld_a.length ; xxx++){ | |
if( xy[1] == xybld_a[xxx][1] && xy[2] == xybld_a[xxx][2] ) { | |
level ++ ; | |
blding += 2; | |
} | |
} | |
for ( var xxx=0 ; xxx < xybld_d.length ; xxx++){ | |
if( xy[1] == xybld_d[xxx][1] && xy[2] == xybld_d[xxx][2] ) { | |
dlting ++; | |
} | |
} | |
try { | |
if( costs[title[1]].length <= level || // maxinum level reached | |
RES_NOW.wood < costs[title[1]][level][0] || | |
RES_NOW.stone< costs[title[1]][level][1] || | |
RES_NOW.iron < costs[title[1]][level][2] || | |
RES_NOW.rice < costs[title[1]][level][3] ) { | |
//lvを黄色に | |
var thisimg = getLevelImageHTML(xy[1], xy[2], "mapicon"); | |
if( thisimg ) { | |
thisimg.src = img_lv[parseInt(title[2],10)]; | |
} | |
} | |
}catch(e) { | |
GM_log("catched"); | |
} | |
if( (blding || dlting) && !OPT_PIKA_BLINKBLD ) { | |
//建築中 | |
var thisimg = getLevelImageHTML(xy[1], xy[2], "mapicon"); | |
if( thisimg ) { | |
thisimg.style.outlineColor = (blding) ? "red" : "blue"; | |
thisimg.style.outlineStyle = "dotted"; | |
thisimg.style.outlineWidth = "2px"; | |
} | |
} | |
} | |
} | |
} | |
if( OPT_PIKA_BLINKBLD) Pika_displayBuildStatus(); | |
function getLevelImageHTML(x, y, cls) { | |
var xdom = ""; | |
var no = (101 + parseInt(x,10) * 7 + parseInt(y,10)).toString().substr(-2); | |
xdom = "//img[@class=\"" + cls + no + "\"]"; | |
// var maps = document.getElementById("maps"); | |
return $x(xdom, $("maps") ); | |
} | |
} | |
////////////////////// | |
//メモ処理 | |
////////////////////// | |
function disp_memo() | |
{ | |
var icon_memo = 'data:image/gif;base64,'+ | |
'R0lGODlhEQAPAKIAAP///+np6dXV1VpaWlhYWEVFRURERDMzMyH5BAQUAP8ALAAAAAARAA8AAAM7'+ | |
'eLrcXGTIOYo7RITNAyEWMwRAaQIj0YynOaAr2aKwKLfvEM+0bvO53Sz4G9YWEMrEcCziLknlwHCp'+ | |
'NhIAOw=='; | |
var cnt = parseInt(OPT_MEMO_COUNT, 10); | |
if( isNaN(""+cnt) || cnt < 1 ) cnt = 1; | |
if( cnt > 5 ) cnt = 5; | |
for(var i=0 ; i<cnt ; i++){ | |
createMemoTab(i); | |
} | |
function createMemoTab(no) | |
{ | |
if( !no ) no = ""; | |
var title = "メモ"; | |
if( no ) title += (no +1 ); | |
var elms = ccreateSideBox("beyond_sidebox_memo" + no, icon_memo, title); | |
var ta = d.createElement("textarea"); | |
ta.id = "beyond_memobox" + no; | |
ta.rows = OPT_MEMO_HEIGHT; | |
ta.cols = OPT_MEMO_WIDTH; | |
if (isNarrow) { | |
ta.rows = OPT_MEMO_HEIGHT - 1; | |
ta.cols = OPT_MEMO_WIDTH - 4; | |
} | |
ta.style.fontSize= OPT_MEMO_FONT_SIZE + "px"; | |
ta.value= cloadData( "memo" + no, "", true ); | |
elms.sideBoxInner.appendChild(ta); | |
var sv = d.createElement("a"); | |
sv.href = "javascript:void(0);"; | |
sv.innerHTML = "保存"; | |
$e(sv, "click", function() { | |
var memoBox = $("beyond_memobox" + no); | |
if( memoBox ) { | |
csaveData( "memo" + no, memoBox.value, true ); | |
alert("保存しました"); | |
} | |
}); | |
var dv = d.createElement("div"); | |
dv.appendChild(sv); | |
elms.sideBoxInner.appendChild(dv); | |
} | |
} | |
////////////////////// | |
//拠点リンク機能 | |
////////////////////// | |
function disp_baseLink() | |
{ | |
var elm = $x('id("lodgment")/div[@class="floatInner"] | //div[@class="sideBoxInner basename"]'); | |
if( !elm ) return; | |
var bases = $a("//li/child::*", elm); | |
for( var idx=0 ; idx < bases.length ; idx++) { | |
addBaseLink(bases[idx]); | |
} | |
function addBaseLink(elem) { | |
var thistitle = elem.title; | |
if( !thistitle ) return; | |
var xy = thistitle.match(/^.*\(([\-0-9]+)\,([\-0-9]+)+\)$/); | |
if( !xy ) return; | |
var a_m, a_v, a_n; | |
var a_m_img = d.createElement("img"); | |
a_m_img.style.paddingLeft = "3px"; | |
a_m_img.src = img_map; | |
var a_v_img = d.createElement("img"); | |
a_v_img.style.paddingLeft = "3px"; | |
a_v_img.src = img_mura; | |
var a_n_img = d.createElement("img"); | |
a_n_img.style.paddingLeft = "3px"; | |
a_n_img.src = img_naisei; | |
a_m = d.createElement("a"); | |
a_m.href = caddSessionId("/map.php?x=" + xy[1] + "&y=" + xy[2]); | |
a_m.title = "マップ(" + xy[1] + "," + xy[2] + ")" ; | |
a_m.appendChild(a_m_img); | |
a_v = d.createElement("a"); | |
a_v.title = "表示"; | |
a_v.appendChild(a_v_img); | |
a_n = d.createElement("a"); | |
a_n.title = "内政"; | |
a_n.appendChild(a_n_img); | |
if( elem.href ) { | |
var id = elem.href.match(/^.*\?village_id=([0-9]+).*$/); | |
if( id ) { | |
a_v.href = caddSessionId("/village_change.php?village_id=" + id[1] + "&from=menu&page=/village.php#ptop"); | |
a_n.href = caddSessionId("/village_change.php?village_id=" + id[1] + "&from=menu&page=/card/domestic_setting.php#ptop"); | |
} | |
} else { | |
a_v.href = caddSessionId("/village.php#ptop"); | |
a_n.href = caddSessionId("/card/domestic_setting.php#ptop"); | |
} | |
var spn = d.createElement("span"); | |
spn.appendChild(a_v); | |
spn.appendChild(a_m); | |
spn.appendChild(a_n); | |
elem.parentNode.insertBefore(spn, elem.nextSibling); | |
} | |
} | |
////////////////////// | |
//領地リンク機能 | |
////////////////////// | |
function disp_mapLink() | |
{ | |
//暫定的にsplit("\n")で3なら領地リンク、4なら君主リンクに | |
if( location.pathname == "/land.php" ) { | |
var div = $("tMenu"); | |
if( div ) { | |
var lnk = d.createElement("a"); | |
lnk.href = "javascript:void(0);"; | |
lnk.innerHTML = "領地リンクの追加"; | |
div.appendChild(lnk); | |
$e(lnk, "click", function() {saveMapLink();}); | |
} | |
}else if( location.pathname == "/user/index.php" || location.pathname == "/user/" ) { | |
var table = $x("//table[@class=\"commonTables\"]"); | |
if( table ) { | |
var lnk = d.createElement("a"); | |
lnk.href = "javascript:void(0);"; | |
lnk.innerHTML = "君主リンクの追加"; | |
$e(lnk, "click", function() {saveMapLink();}); | |
table.parentNode.insertBefore(lnk, table.nextSibling); | |
} | |
} | |
var icon_map = 'data:image/gif;base64,'+ | |
'R0lGODlhEQAPALMAANO3SayTQ3drPFxQsFNTUUA3uTMzMxoamBgYnxsNxg0G8ggC9AAA/wAAAAAA'+ | |
'AAAAACH5BAQUAP8ALAAAAAARAA8AAARL0MhJq50InVsT+wknIctnIhZZmmZYIWy8CAFATLGpADwQ'+ | |
'TCuGYljo9W4Gz2dnNP4MMNOgaQRKqT3BJJFACLC9C1bLqfWeIpqATIkAADs='; | |
var elms = ccreateSideBox("beyond_sidebox_xylink", icon_map, "領地/君主リンク"); | |
elms.sideBoxInner.id = "beyond_sidebox_xylink_inner"; | |
resetMapLinks(); | |
} | |
function saveMapLink( ) | |
{ | |
if( location.pathname == "/land.php" ) { | |
var allDivs, thisDiv; | |
var v_name = ""; | |
var basename = $x("//span[@class=\"basename\"]"); | |
var xy = location.search.match(/^\?x=([\-0-9]+)\&y=([\-0-9]+)+$/); | |
if( basename ) { | |
v_name = basename.innerHTML; | |
if( v_name =="空き地" ) { | |
v_name += xy[1] + "," + xy[2]; | |
} | |
} | |
v_name = prompt("名前を入力してください", v_name); | |
if( !v_name ) return; | |
var maplinks = cloadData( "links", 0, true ); | |
var value = v_name + "\n" + xy[1] + "\n" + xy[2]; | |
csaveData( "link" + maplinks , value, true ); | |
maplinks++; | |
csaveData( "links" , maplinks, true ); | |
resetMapLinks(); | |
}else if( location.pathname == "/user/index.php" || location.pathname == "/user/" ) { | |
var user_id = URL_PARAM.user_id; | |
var tmp = d.body.innerHTML.match(/<td>君主<\/td>[^<]*?<td>(.+)<\/td>/); | |
if( !tmp ) return; | |
var user_name = tmp[1]; | |
var comment = ""; | |
disp_name = prompt("名前を入力してください", user_name); | |
if( !disp_name ) return; | |
comment = prompt("コメントを入力してください", comment); | |
var maplinks = cloadData( "links", 0, true ); | |
var value = user_id + "\n" + user_name + "\n" + disp_name + "\n" + comment; | |
csaveData( "link" + maplinks , value, true ); | |
maplinks++; | |
csaveData( "links" , maplinks, true ); | |
resetMapLinks(); | |
} | |
} | |
function configMapLinkClose() | |
{ | |
var elem = $("beyond_mapLinkWindow"); | |
if( !elem ) return; | |
$("beyond_floatpanel").removeChild(elem); | |
} | |
function configMapLink(n, evt) | |
{ | |
var tmp = cloadData( "link" + n , "", true ); | |
if( !tmp ) return ; | |
configMapLinkClose(); | |
data = tmp.split("\n"); | |
var lw = d.createElement("div"); | |
lw.id = "beyond_mapLinkWindow"; | |
lw.style.position = "absolute"; | |
if( data.length == 3 ) { | |
lw.style.backgroundColor = "thistle"; | |
lw.style.border = "outset 2px thistle"; | |
}else if( data.length == 4 ) { | |
lw.style.backgroundColor = "lightgreen"; | |
lw.style.border = "outset 2px lightgreen"; | |
} | |
lw.style.fontSize = "10px"; | |
lw.style.padding = "10px"; | |
lw.style.zIndex = 1000; | |
lw.style.left = evt.pageX - 176 + "px"; | |
lw.style.top = evt.pageY - 111 + "px"; | |
if( data.length == 3 ) { | |
ccreateTextBox(lw, "LINK_TITLE", data[0], "名称","名称",20, 0); | |
ccreateTextBox(lw, "LINK_X", data[1], "X座標","X座標",10, 0); | |
ccreateTextBox(lw, "LINK_Y", data[2], "Y座標","Y座標",10, 0); | |
}else if( data.length == 4 ) { | |
var dv = d.createElement("div"); | |
dv.innerHTML = "id=" + data[0] + " " + data[1] + "<br>"; | |
lw.appendChild(dv); | |
ccreateTextBox(lw, "LINK_TITLE", data[2], "表示名","表示名",20, 0); | |
ccreateTextBox(lw, "LINK_COMMENT", data[3], "コメント","コメント",20, 0); | |
} | |
//設定ボタン | |
ccreateButton(lw, "保存", "内容を保存します", function() { | |
var v = ""; | |
if( data.length == 3 ) { | |
v = cgetTextBoxValue("LINK_TITLE") + "\n" | |
+ cgetTextBoxValue("LINK_X") + "\n" | |
+ cgetTextBoxValue("LINK_Y"); | |
}else if( data.length == 4 ) { | |
v = data[0] + "\n" + data[1] + "\n" | |
+ cgetTextBoxValue("LINK_TITLE") + "\n" | |
+ cgetTextBoxValue("LINK_COMMENT"); | |
} | |
csaveData( "link" + n , v, true ); | |
configMapLinkClose(); | |
resetMapLinks(); | |
}); | |
//削除 | |
ccreateButton(lw, "削除", "削除", function() { | |
if(!confirm("削除してよろしいですか?") ) return false; | |
var maplinks = cloadData( "links", 0, true ); | |
for(var i = n+1 ; i < maplinks ; i++) { | |
var tmp = cloadData( "link" + i, "", true ); | |
csaveData( "link" + (i-1), tmp, true ); | |
} | |
csaveData( 'links' , maplinks-1, true ); | |
configMapLinkClose(); | |
resetMapLinks(); | |
}); | |
//上に移動 | |
if( n != 0 ) { | |
ccreateButton(lw, "▲", "上に移動", function() { | |
var tmp = cloadData( "link" + (n-1), "", true ); | |
csaveData( "link" + (n-1), cloadData( "link" + n, "", true ), true ); | |
csaveData( "link" + n, tmp, true ); | |
configMapLinkClose(); | |
resetMapLinks(); | |
}); | |
} | |
//下に移動 | |
var maplinks = cloadData( "links", 0, true ); | |
if( n + 1 < maplinks ) { | |
ccreateButton(lw, "▼", "下に移動", function() { | |
var tmp = cloadData( "link" + (n+1), "", true ); | |
csaveData( "link" + (n+1), cloadData( "link" + n, "", true ), true ); | |
csaveData( "link" + n, tmp, true ); | |
configMapLinkClose(); | |
resetMapLinks(); | |
}); | |
} | |
//閉じる | |
ccreateButton(lw, "閉じる", "閉じる", function() {configMapLinkClose();}); | |
$("beyond_floatpanel").appendChild(lw); | |
} | |
function resetMapLinks() | |
{ | |
var ul = $("beyond_sidebox_xylink_ul"); | |
if( ul ) { | |
ul.parentNode.removeChild(ul); | |
} | |
ul = d.createElement("ul"); | |
ul.id = "beyond_sidebox_xylink_ul"; | |
var maplinks = cloadData( "links", 0, true ); | |
for(var i=0 ; i<maplinks ; i++) { | |
var tmp = cloadData( "link" + i , "", true ); | |
if( tmp != "" ) { | |
var li = d.createElement("li"); | |
var data = tmp.split("\n"); | |
if( data.length == 3 ) { | |
//領地リンク | |
var link1 = d.createElement("a"); | |
link1.href = caddSessionId("/land.php?x=" + data[1] + "&y=" + data[2] + "#ptop"); | |
link1.title = "表示(" + data[1] + "," + data[2] + ")"; | |
link1.innerHTML = data[0]; | |
link1.style.fontSize = OPT_MAPLINK_FONT_SIZE + "px"; | |
var link2 = d.createElement("a"); | |
link2.href = caddSessionId("/map.php?x=" + data[1] + "&y=" + data[2] + "#ptop"); | |
link2.title="マップ(" + data[1] + "," + data[2] + ")"; | |
var a_m_img = d.createElement("img"); | |
a_m_img.src = img_map; | |
link2.appendChild(a_m_img); | |
var m = ""; | |
var dist = cgetDistanceFromBase(data[1], data[2]); | |
if( dist != -1 ) { | |
m =" 距離[" + dist.toFixed(2) + "]"; | |
} | |
var link3 = d.createElement("a"); | |
link3.href = caddSessionId("/facility/castle_send_troop.php?x=" + data[1] + "&y=" + data[2] + "#ptop"); | |
link3.title = "兵を送る(" + data[1] + "," + data[2] + ")" + m; | |
var a_s_img = d.createElement("img"); | |
a_s_img.src = img_ken; | |
link3.appendChild(a_s_img); | |
var link4 = d.createElement("a"); | |
link4.href="javascript:void(0)"; | |
link4.title="設定"; | |
var a_d_img = d.createElement("img"); | |
a_d_img.src = img_hanma; | |
link4.appendChild(a_d_img); | |
(function(n){ | |
$e(link4, "click", function(event){configMapLink(n,event);}); | |
})(i); | |
li.appendChild(link1); | |
li.appendChild(link2); | |
li.appendChild(link3); | |
li.appendChild(link4); | |
ul.appendChild(li); | |
}else if( data.length == 4 ) { | |
//君主リンク | |
var img = d.createElement("img"); | |
img.src = img_user; | |
li.appendChild(img); | |
var link1 = d.createElement("a"); | |
link1.href = caddSessionId("/user/index.php?user_id=" + data[0] + "#ptop"); | |
link1.title = data[3]; | |
link1.innerHTML = data[2]; | |
link1.style.fontSize = OPT_MAPLINK_FONT_SIZE + "px"; | |
var link2 = d.createElement("a"); | |
link2.href=caddSessionId("/message/new.php?user_id=" + data[0] + "#ptop"); | |
link2.title="[" + data[1] + "]宛に書簡を送る"; | |
var a_m_img = d.createElement("img"); | |
a_m_img.src = img_mail; | |
link2.appendChild(a_m_img); | |
var link3 = d.createElement("a"); | |
link3.href="javascript:void(0)"; | |
link3.title="設定"; | |
var a_d_img = d.createElement("img"); | |
a_d_img.src = img_hanma; | |
link3.appendChild(a_d_img); | |
(function(n){ | |
$e(link3, "click", function(event){configMapLink(n,event);}); | |
})(i); | |
li.appendChild(link1); | |
li.appendChild(link2); | |
li.appendChild(link3); | |
ul.appendChild(li); | |
} | |
} | |
} | |
$("beyond_sidebox_xylink_inner").appendChild(ul); | |
} | |
////////////////////// | |
//領地リンクの読み込み・保存機能 | |
////////////////////// | |
function mapLinkList(evt) | |
{ | |
if( $("beyond_SaveMapLinkWindow") ) return; | |
var mc = d.createElement("div"); | |
mc.id = "beyond_SaveMapLinkWindow"; | |
mc.style.position = "absolute"; | |
mc.style.backgroundColor = "blueviolet"; | |
mc.style.border = "outset 2px blueviolet"; | |
mc.style.fontSize = "12px"; | |
mc.style.padding = "15px"; | |
mc.style.zIndex = 1000+1; | |
mc.style.left = evt.pageX - 250 + "px"; | |
mc.style.top = evt.pageY - 220 + "px"; | |
var ta = d.createElement("textarea"); | |
ta.id = "beyond_SaveMapLinkWindow_text"; | |
ta.rows = 10; | |
ta.cols = 40; | |
var txt = ""; | |
var maplinks = cloadData( "links", 0, true ); | |
for(var i=0 ; i<maplinks ; i++) { | |
var tmp = cloadData( "link" + i , "", true ); | |
if( tmp ) { | |
txt += tmp.replace(/\n/g, "\t" ) + "\n"; | |
} | |
} | |
ta.value = txt; | |
mc.appendChild(ta); | |
$e(ta, "keydown", function(event) { | |
//TAB入力 | |
var kC = event.keyCode ? event.keyCode : event.charCode ? event.charCode : event.which; | |
if (kC == 9 && !event.shiftKey && !event.ctrlKey && !event.altKey) | |
{ | |
var oS = this.scrollTop; | |
var sS = this.selectionStart; | |
var sE = this.selectionEnd; | |
this.value = this.value.substring(0, sS) + "\t" + this.value.substr(sE); | |
this.setSelectionRange(sS + 1, sS + 1); | |
this.focus(); | |
this.scrollTop = oS; | |
if (event.preventDefault) | |
{ | |
event.preventDefault(); | |
} | |
return false; | |
} | |
return true; | |
} ); | |
var sv = d.createElement("a"); | |
sv.href = "javascript:void(0);"; | |
sv.innerHTML = "保存"; | |
$e(sv, "click", function() { | |
if( confirm("上書き保存します。よろしいですか?") == false) return; | |
var ta = $("beyond_SaveMapLinkWindow_text"); | |
if( ta ) { | |
var lines = ta.value.split("\n"); | |
var saveLines = new Array(); | |
for( var i=0 ; i<lines.length ; i++) { | |
if( lines[i] == "" ) continue; | |
var dat = lines[i].split("\t"); | |
if( dat.length != 3 && dat.length != 4 ) { | |
alert("解析エラーです。処理を中断します。\n( " + lines[i] + " )" ); | |
return; | |
} | |
//チェック | |
if( dat.length == 3 ) { | |
if( !dat[1].match(/[\-0-9]+/g) || !dat[2].match(/[\-0-9]+/g) ) { | |
alert("解析エラーです。処理を中断します。\n( " + lines[i] + " )" ); | |
return; | |
} | |
}else if ( dat.length == 4 ) { | |
if( dat[3] == "" && dat[1].match(/[\-0-9]+/g) && dat[2].match(/[\-0-9]+/g) ) { | |
dat.pop(); | |
}else if( !dat[0].match(/[\-0-9]+/g) ) { | |
alert("解析エラーです。処理を中断します。\n( " + lines[i] + " )" ); | |
return; | |
} | |
}else{ | |
alert("解析エラーです。処理を中断します。\n( " + lines[i] + " )" ); | |
return; | |
} | |
var linedata = ""; | |
for( var j=0 ; j<dat.length ; j++ ){ | |
dat[j] = dat[j].replace(/(^\s+)|(\s+$)/g, ""); | |
if( linedata != "" ) { | |
linedata += "\n"; | |
} | |
linedata += dat[j]; | |
} | |
saveLines.push(linedata); | |
} | |
//削除 | |
var maplinks = cloadData( "links", 0, true ); | |
for(i=0 ; i<maplinks ; i++) { | |
cdelData( "link" + i, true ); | |
} | |
//追加 | |
for(var i=0 ; i<saveLines.length ; i++ ) { | |
csaveData( "link" + i , saveLines[i], true ); | |
} | |
csaveData( "links" , saveLines.length, true ); | |
alert("上書き保存しました"); | |
resetMapLinks(); | |
} | |
}); | |
var cl = d.createElement("a"); | |
cl.href = "javascript:void(0);"; | |
cl.innerHTML = "閉じる"; | |
$e(cl, "click", function() { | |
var mc = $("beyond_SaveMapLinkWindow"); | |
if( mc ) { | |
mc.parentNode.removeChild(mc); | |
} | |
}); | |
var dv = d.createElement("div"); | |
dv.appendChild(sv); | |
dv.appendChild(d.createTextNode(" ") ); | |
dv.appendChild(cl); | |
mc.appendChild(dv); | |
$("beyond_floatpanel").appendChild(mc); | |
} | |
////////////////////// | |
//座標リンク処理 | |
////////////////////// | |
function disp_XYLink() | |
{ | |
var flg_profile_xy = false; | |
var flg_include_a = false; | |
//1行コメント | |
var comment = $a("//*[@id=\"commentList\"]//tr/td[2]"); | |
for(var i=0 ; i< comment.length ; i++) { | |
setXYLink( comment[i] ); | |
} | |
//各エレメント | |
var targetPath = new Array(); | |
if( location.pathname == "/alliance/chat_view.php" ) { | |
targetPath.push( "//div[@class=\"hitokotoList\"]/p[2]" ); | |
} | |
if( location.pathname == "/alliance/info.php" ) { | |
targetPath.push( "//tr[th[contains(text(),\"コメント\")]]/td" ); | |
} | |
if( location.pathname == "/message/detail.php" ) { | |
targetPath.push( "//tr[th[contains(text(),\"件名\")]]/td" ); | |
targetPath.push( "//tr[th[contains(text(),\"本文\")]]/td" ); | |
} | |
if( location.pathname == "/bbs/res_view.php" || | |
location.pathname == "/bbs/personal_res_view.php" ) { | |
targetPath.push( "//th[@class=\"mainTtl\"]/div[@class=\"threadTtl\"]" ); | |
targetPath.push( "//td[@class=\"contents\"]" ); | |
targetPath.push( "//table[@class=\"commonTables\"]//tr[2]/td[1]" ); | |
} | |
if( location.pathname == "/user/index.php" || location.pathname == "/user/" ) { | |
if( URL_PARAM.user_id && USER_ID != URL_PARAM.user_id ) { | |
targetPath.push( "//table[@class=\"commonTables\"]//tr[position()>12]/td[2]" ); | |
flg_profile_xy = true; | |
} | |
} | |
for(var i=0 ; i< targetPath.length ; i++) { | |
var elms = $a(targetPath[i]); | |
for(var j=0 ; j<elms.length ; j++) { | |
setXYLink(elms[j]); | |
} | |
} | |
function setXYLink(elm) { | |
var tmpHTML = elm.innerHTML; | |
var reg = /[\(|(|【]([\-0-90-9]+)( *[,&、・,] *)([\-0-90-9]+)[\)|)|】]/g; | |
if(OPT_XYLINK_NK || flg_profile_xy ) { | |
reg = /([\-0-90-9]+)( *[\,&、・,] *)([\-0-90-9]+)/g; | |
} | |
var elm_child_a = null; | |
if( flg_include_a ) { | |
elm_child_a = $x("descendant::a", elm); | |
} | |
tmpHTML = tmpHTML.replace(reg, XYLinkReg ); | |
elm.innerHTML = tmpHTML; | |
function XYLinkReg() { | |
var img_send = IMG_DIR + "report/icon_go.gif"; | |
var img_mp = IMG_DIR + "report/icon_scout.gif"; | |
var m = ""; | |
var dist = cgetDistanceFromBase(arguments[2], arguments[4]); | |
if( dist != -1 ) { | |
m = " 距離[" + dist.toFixed(2) + "]"; | |
} | |
var x = toHankaku(arguments[1]); | |
var y = toHankaku(arguments[3]); | |
var disp = x + arguments[2] + y; | |
if( !OPT_XYLINK_NK && !flg_profile_xy) disp = "(" + disp + ")"; | |
var txt = '<a href="'+caddSessionId('/land.php?x=' + x + '&y=' + y + '#ptop')+'" title="表示" style="display:inline;">' + disp + '</a>'; | |
txt += '<a href="'+caddSessionId('/map.php?x=' + x + '&y=' + y + '#ptop')+'" title="マップ' + x + ',' + y + '" style="display:inline;"><img src="' + img_mp + '" style="width:14px; height:14px; vertical-align:middle;"></a>'; | |
txt += '<a href="'+caddSessionId('/facility/castle_send_troop.php?x=' + x + '&y=' + y + '#ptop')+'" title="兵を送る' + x + ',' + y + m + '" style="display:inline;"><img src="' + img_send + '" style="width:14px; height:14px; vertical-align:middle;"></a>'; | |
//Aの入れ子は連結し直してみる | |
if( elm_child_a ) { | |
txt = '</a>' + txt + '<a href="' + elm_child_a.href + '">'; | |
// GM_log(txt); | |
} | |
return txt; | |
function toHankaku(str) { | |
return str.replace(/[0-9]/g, function(str){return String.fromCharCode(str.charCodeAt(0)-65248);}); | |
} | |
} | |
} | |
} | |
////////////////////// | |
//兵力整形 | |
////////////////////// | |
function disp_TTable() | |
{ | |
if( location.pathname == "/message/inbox.php" || | |
location.pathname == "/message/outbox.php" || | |
location.pathname == "/message/new.php" || | |
location.pathname == "/bbs/topic_view.php" || | |
location.pathname == "/facility/unit_status.php" || | |
location.pathname == "/facility/castle_send_troop.php") { | |
return ; | |
} | |
//■仮対処 | |
var ta = $a("//textarea"); | |
for(var i=0 ; i<ta.length ; i++) { | |
if( ta[i].innerHTML != "" ) return; | |
} | |
var targetPath = [ | |
"//div[@id='commentList']", | |
// "//td[@class='contents']", | |
"//table[@class='commonTables']", | |
"//p[@class='hitokoto']", | |
// "//span[@class='xy']" | |
]; | |
for(var i=0 ; i<targetPath.length ; i++) { | |
var elms = $a(targetPath[i]); | |
for(var j=0 ; j<elms.length ; j++) { | |
setTTable(elms[j]); | |
} | |
} | |
function setTTable(elm) { | |
var tmpHTML = elm.innerHTML; | |
// tmpHTML = tmpHTML.replace(/[\n\r]/g,""); | |
var reg = /剣兵\s+槍兵\s+弓兵\s+騎兵\s+矛槍兵\s+弩兵\s+近衛騎兵\s+斥候\s+斥候騎兵\s+衝車\s+投石機\s+武将.*(\n兵士\s+|\n)(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\S+).*(\n死傷\s+|\n)(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\S+)/g; | |
tmpHTML = tmpHTML.replace(reg, | |
function() { | |
var txt = "<table class='tables'><tr><th class='solClass'> </th>" + | |
"<th class='solClass'>剣兵</th><th class='solClass'>槍兵</th><th class='solClass'>弓兵</th><th class='solClass'>騎兵</th>" + | |
"<th class='solClass'>矛槍兵</th><th class='solClass'>弩兵</th><th class='solClass'>近衛騎兵</th><th class='solClass'>斥候</th>" + | |
"<th class='solClass'>斥候騎兵</th><th class='solClass'>衝車</th><th class='solClass'>投石機</th><th class='solClass'>武将</th>" + | |
"</tr><tr><th class='solClass'>兵士</th>"; | |
for(var i = 2 ; i<= 13 ; i++) { | |
txt += "<td>" + arguments[i] + "</td>"; | |
} | |
txt += "</tr><tr><th class='solClass'>死傷</th>"; | |
for(var i = 15 ; i<= 26 ; i++) { | |
txt += "<td>" + arguments[i] + "</td>"; | |
} | |
txt += "</tr></table>"; | |
return txt; | |
} ); | |
reg = /剣兵\s+槍兵\s+弓兵\s+騎兵\s+矛槍兵\s+弩兵\s+近衛騎兵\s+斥候\s+斥候騎兵\s+衝車\s+投石機\s+武将.*(\n兵士\s+|\n)(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\S+)/g; | |
tmpHTML = tmpHTML.replace(reg , | |
function() { | |
var txt = "<table class='tables'><tr><th class='solClass'> </th>" + | |
"<th class='solClass'>剣兵</th><th class='solClass'>槍兵</th><th class='solClass'>弓兵</th><th class='solClass'>騎兵</th>" + | |
"<th class='solClass'>矛槍兵</th><th class='solClass'>弩兵</th><th class='solClass'>近衛騎兵</th><th class='solClass'>斥候</th>" + | |
"<th class='solClass'>斥候騎兵</th><th class='solClass'>衝車</th><th class='solClass'>投石機</th><th class='solClass'>武将</th>" + | |
"</tr><tr><th class='solClass'>兵士</th>"; | |
for(var i = 2 ; i<= 13 ; i++) { | |
txt += "<td>" + arguments[i] + "</td>"; | |
} | |
txt += "</tr></table>"; | |
return txt; | |
} ); | |
elm.innerHTML = tmpHTML; | |
} | |
} | |
////////////////////// | |
//兵力合計 | |
////////////////////// | |
function disp_Details() | |
{ | |
if( location.pathname != "/alliance/detail.php" && | |
location.pathname != "/report/detail.php") return ; | |
var troops = [[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 tbls = $a("//table[@class=\"tables\"][@summary=\"防御者\"]"); | |
if(tbls.length <2 ) return; | |
for(var i=0 ; i<tbls.length ; i++) { | |
var trs = $a("descendant::tr", tbls[i]); | |
if( trs.length >=4 ) { | |
for(var j=0; j < 2 ; j++) { | |
var tds = $a("descendant::td", trs[j+2]); | |
if(tds.length != 12) continue; | |
for(var k=0 ; k<tds.length ; k++) { | |
troops[j][k] += parseInt(tds[k].innerHTML,10); | |
} | |
} | |
} | |
} | |
var tbl = d.createElement("table"); | |
tbl.className = "tables"; | |
var tr = d.createElement("tr"); | |
var th = d.createElement("th"); | |
th.className = "attacker"; | |
th.appendChild(d.createTextNode("防御合計")); | |
tr.appendChild(th); | |
th = d.createElement("th"); | |
th.className = "attackerBase"; | |
th.setAttribute("colspan","12"); | |
tr.appendChild(th); | |
tbl.appendChild(tr); | |
var tr = d.createElement("tr"); | |
var thtxt = ["剣兵","槍兵","弓兵","騎兵","矛槍兵","弩兵","近衛騎兵","斥候","斥候騎兵","衝車","投石機","武将" ]; | |
var th = d.createElement("th"); | |
th.className = "blank"; | |
tr.appendChild(th); | |
for(var i=0; i<12 ; i++){ | |
th = d.createElement("th"); | |
th.className = "solClass"; | |
th.appendChild(d.createTextNode(thtxt[i])); | |
tr.appendChild(th); | |
} | |
tbl.appendChild(tr); | |
var hd =["兵士","死傷"]; | |
for(var i=0 ; i<2 ; i++) { | |
var tr = d.createElement("tr"); | |
var th = d.createElement("th"); | |
th.className = "blank"; | |
th.appendChild(d.createTextNode(hd[i])); | |
tr.appendChild(th); | |
for(var j=0; j<12 ; j++){ | |
var td = d.createElement("td"); | |
td.appendChild(d.createTextNode(troops[i][j])); | |
tr.appendChild(td); | |
} | |
tbl.appendChild(tr); | |
} | |
if( OPT_DETAILS_UP == 0 ) { | |
tbls[tbls.length-1].parentNode.insertBefore(tbl, tbls[tbls.length-1].nextSibling); | |
} else { | |
tbls[0].parentNode.insertBefore(tbl, tbls[0]); | |
} | |
} | |
////////////////////// | |
//デッキ | |
////////////////////// | |
function disp_Deck() | |
{ | |
if( location.pathname != "/card/deck.php" ) return ; | |
if( OPT_DECK_SET ) dispDeckSet(); | |
function dispDeckSet() { | |
var nam = cgetCurrentBaseName(); | |
var sels = $a("//select",d); | |
for(var i=0 ; i<sels.length ; i++) { | |
if( !sels[i].id.match(/selected_village_/) ) continue; | |
var opts = $a("descendant::option",sels[i]); | |
for(var j=0 ; j<opts.length ; j++) { | |
if(opts[j].innerHTML == nam ) { | |
opts[j].selected = true; | |
} | |
} | |
} | |
} | |
} | |
////////////////////// | |
//完了時刻の表示(建物) | |
////////////////////// | |
function disp_CompleteTimeBuild() | |
{ | |
var lastTime = cgetNow(); | |
var villageId = cgetCurrentVillageId(); | |
if( location.pathname == "/village.php" ) { | |
//最終建築時間の保存 | |
var spans = $a('id("actionLog")//li//span[@class="buildStatus" and (contains(text(),"建設中") or contains(text(),"建設準備中"))]/../span[@class="buildClock"]'); | |
if (!spans || spans.length == 0) { | |
cdelData("lastBuildTime"+villageId,true); | |
return; | |
} | |
var saveDate = new Date(caddDate(lastTime, spans[spans.length - 1].innerHTML.replace(/^[\s| ]*|[\s| ]*$/,"")).replace(/-/g,"/")); | |
saveDate.setMinutes(saveDate.getMinutes() + 1); | |
csaveData( "lastBuildTime"+villageId, saveDate.toString(), true); | |
return; | |
} | |
var reg = /\/facility\/facility.php|\/facility\/select_facility.php|\/facility\/castle.php/; | |
if(!location.pathname.match(reg) || d.referrer.match(reg)) { | |
return; | |
} | |
var spans = new Array(); | |
var tds = $a('id("gray02Wrapper")//th[contains(text(),"所要時間")]//..//td[@class="contents"]'); | |
for(var i=0 ; i<tds.length ; i++){ | |
var td = tds[i]; | |
var th = $x('.//th[contains(text(),"建設に必要な食糧消費量") or contains(text(),"建設に必要な資材")]', td.parentNode.parentNode); | |
if (th) { | |
var span = d.createElement("span"); | |
td.appendChild(span); | |
spans.push(span); | |
} | |
} | |
if (!spans.length) return; | |
lastTime = new Date(cloadData( "lastBuildTime"+villageId, lastTime.toString(), true)); | |
timerfunc(); | |
function timerfunc() { | |
var now = cgetNow(); | |
if (lastTime < now) { | |
lastTime = now; | |
} | |
for(var i = 0 ; i<spans.length ; i++){ | |
var span = spans[i]; | |
var ctime = caddDate(lastTime, span.parentNode.firstChild.nodeValue); | |
if( ctime ) { | |
span.innerHTML = " (" + ctime + "完了)"; | |
} | |
} | |
setTimeout(timerfunc,1000); | |
} | |
} | |
////////////////////// | |
//完了時刻の表示(ユニット) | |
////////////////////// | |
function disp_CompleteTimeUnit() | |
{ | |
if( location.pathname == "/facility/facility.php" ) { | |
//ユニット作成の最終時刻の保存 | |
var lastTd = $x('id("gray02Wrapper")/table[@class="commonTables"][2]//tr[last()]/td'); | |
if( !lastTd ) { | |
cdelData("lastUnitTime",true); | |
return; | |
} | |
csaveData( "lastUnitTime", new Date(lastTd.innerHTML.replace(/^[\s|\n|\r|\t]*|[\s|\n|\r|\t]*$/,"").replace(/-/g,"/")).toString(), true); | |
return; | |
} | |
if( location.pathname != "/facility/unit_confirm.php" ) { | |
return; | |
} | |
var td = $x('//table[@class="commonTables" and @summary="object"]//th[contains(text(),"作成するまでに必要な時間")]/../td'); | |
if (!td) return; | |
var span = d.createElement("span"); | |
td.appendChild(span); | |
var lastTime = new Date(cloadData( "lastUnitTime", null, true )); | |
timerfunc(); | |
function timerfunc() { | |
var now = cgetNow(); | |
if (lastTime < now) { | |
lastTime = now; | |
} | |
var ctime = caddDate(lastTime, span.parentNode.firstChild.nodeValue); | |
if( ctime ) { | |
span.innerHTML = " (" + ctime + "完了)"; | |
} | |
setTimeout( timerfunc, 1000); | |
} | |
} | |
////////////////////// | |
//同盟表示の改善 | |
////////////////////// | |
function disp_AllianceInfo() | |
{ | |
if( OPT_ALLY_XY ) allianceXY(); | |
if( OPT_ALLY_IS ) allianceSort(); | |
if( OPT_ALLY_CSV ) allianceCSV(); | |
//同盟表示のソート | |
function allianceSort() | |
{ | |
if( location.pathname != "/alliance/info.php" ) return; | |
var sort_kind, sort_order; | |
var sort_list = ["num", "str", "num", "num", "num", "str", "str"]; | |
for(var i=0 ; i<8 ; i++) { | |
var th = $x("//table[@summary=\"ランキング\"]//tr[2]//th[" + (i+1) + "]"); | |
if( th ) { | |
sort_kind = sort_list[i]; | |
if( th.id == "beyond_ally_xy" ) sort_kind = "xy"; | |
th.appendChild(d.createElement("br")); | |
var a = d.createElement("a"); | |
a.href = "javascript:void(0)"; | |
(function(n, k){ | |
$e(a, "click", function(){row_sort(n, k, "asc"); } ); | |
})(i+1, sort_kind); | |
var img = d.createElement("img"); | |
img.src= IMG_DIR + "trade/icon_up.gif"; | |
img.alt = "昇順に並べ替え"; | |
img.title = img.alt; | |
a.appendChild(img); | |
th.appendChild(a); | |
th.appendChild(d.createTextNode(" ")); | |
a = d.createElement("a"); | |
a.href = "javascript:void(0)"; | |
(function(n, k){ | |
$e(a, "click", function(){row_sort(n, k, "dsc"); } ); | |
})(i+1, sort_kind); | |
img = d.createElement("img"); | |
img.src= IMG_DIR + "trade/icon_down.gif"; | |
img.alt = "降順に並べ替え"; | |
img.title = img.alt; | |
a.appendChild(img); | |
th.appendChild(a); | |
} | |
} | |
function row_sort(col, kind, order) { | |
var tbl = $x("//table[@summary=\"ランキング\"]"); | |
var trs = $a("descendant::tr[position()>2]", tbl); | |
sort_kind = kind; | |
sort_order = order; | |
var strs = new Array(); | |
if( col == 2 || kind == "xy" ) { | |
//名前 or座標はaの下 | |
for(var i=0; i<trs.length ; i++) { | |
var td = $x("descendant::td[" + col + "]", trs[i]); | |
var a = $x("descendant::a", td); | |
if( a ) strs.push({"node":trs[i], "value":a.innerHTML}); | |
else strs.push({"node":trs[i], "value":""}); | |
} | |
} else { | |
for(var i=0; i<trs.length ; i++) { | |
var td = $x("descendant::td[" + col + "]", trs[i]); | |
strs.push({"node":trs[i], "value":td.innerHTML}); | |
} | |
} | |
strs.sort(row_cmp); | |
for(var i=0 ; i<trs.length ; i++) { | |
strs[i].node.parentNode.removeChild(strs[i].node); | |
tbl.appendChild(strs[i].node); | |
} | |
} | |
function row_cmp(a, b) | |
{ | |
var ret = 0; | |
if( sort_kind == "num" ){ | |
ret = parseInt(a.value, 10) - parseInt(b.value, 10); | |
}else if (sort_kind == "xy") { | |
//座標 | |
if( !a.value && !b.value ) ret = 0; | |
else if( !a.value ) ret = 1; | |
else if( !b.value ) ret = -1; | |
else { | |
var a_xy = a.value.split(","); | |
var b_xy = b.value.split(","); | |
ret = ( Math.pow(parseInt(a_xy[0], 10), 2) + Math.pow(parseInt(a_xy[1], 10), 2) ) - | |
( Math.pow(parseInt(b_xy[0], 10), 2) + Math.pow(parseInt(b_xy[1], 10), 2) ); | |
} | |
}else { | |
if( a.value == b.value ) { | |
ret = 0; | |
} else if( a.value > b.value ) { | |
ret = 1; | |
}else { | |
ret = -1; | |
} | |
} | |
if( sort_order == "dsc") { | |
ret = 0 - ret; | |
} | |
return ret; | |
} | |
} | |
//同盟員座標表示 | |
function allianceXY() | |
{ | |
//座標の収集 | |
if( location.pathname =="/user/" || location.pathname == "/user/index.php" ) { | |
if( USER_ID || URLPARAM.user_id ) { | |
var uid, aid; | |
if( URL_PARAM.user_id ) uid = URL_PARAM.user_id; | |
else uid = USER_ID; | |
var allytd = $x("//table[@class=\"commonTables\"]//tr[3]//td[4]"); | |
if( !allytd ) return; | |
var aids = allytd.innerHTML.match(/\/alliance\/info\.php\?id\=(\d+)/); | |
if( !aids ) return; | |
aid = aids[1]; | |
var table = $x("//table[@class=\"commonTables\"]"); | |
if( table ) { | |
var xy = getXYfromUserHTML(table.innerHTML); | |
if( xy ) { | |
csetUserXY(aid, uid, xy.x, xy.y); | |
} | |
} | |
} | |
} | |
//表示 | |
if( location.pathname == "/alliance/info.php" ) { | |
if( ALLY_ID || URL_PARAM.id ) { | |
var aid; | |
if( URL_PARAM.id ) aid = URL_PARAM.id; | |
else aid = ALLY_ID; | |
var head1 = $x("//table[@summary=\"ランキング\"]//tr[1]//th[@class=\"ttl\"]"); | |
if( head1 ) { | |
head1.setAttribute("colspan", parseInt(head1.getAttribute("colspan"),10) + 1 + ""); | |
} | |
var head2 = $x("//table[@summary=\"ランキング\"]//tr[2]"); | |
if( head2 ) { | |
var th = d.createElement("th"); | |
th.className = "all"; | |
th.style.width = "110px"; | |
th.id = "beyond_ally_xy"; | |
th.innerHTML = "座標"; | |
var lnk = d.createElement("a"); | |
lnk.href = "javascript:void(0)"; | |
lnk.innerHTML ="(GET)"; | |
lnk.style.fontSize = "9px"; | |
var running = false; | |
$e(lnk, "click", function() { | |
if( running ) return ; | |
if( confirm("同盟員の情報を一気に取得するためサーバに負荷をかけます。\n何度も実行するとDOS攻撃と同じなので、実行には注意して下さい") == false ) return; | |
running = true; | |
// cdeleteUserXY(aid); | |
var trs = $a("//table[@summary=\"ランキング\"]//tr[position()>2]"); | |
var now_num = 0; | |
var all_num = trs.length; | |
window.setTimeout(timerFunc, 0); | |
function timerFunc() | |
{ | |
var idtd = $x("descendant::td[2]",trs[now_num]); | |
if( !idtd ) { | |
alert("ページフォーマットが変わったみたい"); | |
return ; | |
} | |
var ids = idtd.innerHTML.match(/\/user\/\?user_id\=(\d+)/); | |
if( !ids ) { | |
alert("ページフォーマットが変わったみたい"); | |
return ; | |
} | |
var tmp = $("beyond_xylink_" + ids[1] ); | |
if( tmp.innerHTML != " " ) { | |
now_num ++; | |
if( now_num < all_num ) { | |
window.setTimeout(timerFunc, 0); | |
}else{ | |
running = false; | |
alert("全ての座標を取得しました"); | |
} | |
return ; | |
} | |
cajaxRequest("/user/?user_id=" + ids[1], "GET", "", function(req) { | |
var xytd = $("beyond_xylink_" + ids[1] ); | |
if(xytd) { | |
var xy = getXYfromUserHTML(req.responseText); | |
if( xy ) { | |
csetUserXY(aid, ids[1], xy.x, xy.y); | |
xytd.innerHTML = cgetXYHtml(xy.x, xy.y ); | |
} | |
} | |
now_num ++; | |
if( now_num < all_num ) { | |
window.setTimeout(timerFunc, 0); | |
}else{ | |
running = false; | |
alert("全ての座標を取得しました"); | |
} | |
}); | |
} | |
}); | |
th.appendChild(lnk); | |
head2.appendChild(th); | |
} | |
var trs = $a("//table[@summary=\"ランキング\"]//tr[position()>2]"); | |
var xylists = cloadData( "allyXYList" + aid, "[]", true, true ); | |
//ハッシュに書き換え | |
var xylist = new Array(); | |
for(var i=0 ; i<xylists.length ; i++) { | |
xylist["id" + xylists[i].id ] = {"x":xylists[i].x, "y":xylists[i].y}; | |
if( xylist["id" + xylists[i].id].x == null ) xylist["id" + xylists[i].id].x = 0; | |
if( xylist["id" + xylists[i].id].y == null ) xylist["id" + xylists[i].id].y = 0; | |
} | |
for(var i=0; i<trs.length ; i++) { | |
var idtd = $x("descendant::td[2]",trs[i]); | |
if( !idtd ) continue; | |
var ids = idtd.innerHTML.match(/\/user\/\?user_id\=(\d+)/); | |
if( !ids ) continue; | |
var td = d.createElement("td"); | |
td.id = "beyond_xylink_" + ids[1]; | |
if( xylist["id" + ids[1] ] ) { | |
td.innerHTML = cgetXYHtml(xylist["id" + ids[1] ].x, xylist["id" + ids[1] ].y); | |
}else{ | |
td.innerHTML =" "; | |
} | |
trs[i].appendChild(td); | |
var yaku = $x("descendant::td[7]",trs[i]); | |
if( yaku.innerHTML.match(/盟主補佐/) ) { | |
//盟主補佐がぎりぎり2行になるので後ろの空白カット | |
yaku.innerHTML = yaku.innerHTML.replace(/[ \t\r\n]+$/g, ""); | |
} | |
} | |
} | |
} | |
} | |
function getXYfromUserHTML(html) | |
{ | |
var xy = html.match(/<\/a>\(本拠地\)<\/td>[^<]*<td[^>]*>([\-0-9]+),([\-0-9]+)<\/td>/); | |
if( xy ) { | |
return {"x":parseInt(xy[1],10),"y":parseInt(xy[2],10)}; | |
} | |
return null; | |
} | |
function getDatafromUserHTML(html) | |
{ | |
var ret = []; | |
var tmp = html.match(/<td[^>]*>ランク<\/td>[^<]*<td[^>]*>([0-9]+)<\/td>/); | |
if( !tmp ) return null; | |
ret["all_rank"] = parseInt(tmp[1] ,10); | |
tmp = html.match(/<td[^>]*>総合<\/td>[^<]*<td[^>]*>([0-9]+)<\/td>/); | |
if( !tmp ) return null; | |
ret["all_point"] = parseInt(tmp[1] ,10); | |
tmp = html.match(/<td[^>]*>総人口<\/td>[^<]*<td[^>]*>([0-9]+)<\/td>/); | |
if( !tmp ) return null; | |
ret["jinko"] = parseInt(tmp[1] ,10); | |
tmp = html.match(/<td[^>]*>攻撃<\/td>[^<]*<td[^>]*>([0-9]+)<\/td>/); | |
if( !tmp ) return null; | |
ret["attack"] = parseInt(tmp[1] ,10); | |
tmp = html.match(/<td[^>]*>防御<\/td>[^<]*<td[^>]*>([0-9]+)<\/td>/); | |
if( !tmp ) return null; | |
ret["defence"] = parseInt(tmp[1] ,10); | |
tmp = html.match(/<td[^>]*>撃破スコア<\/td>[^<]*<td[^>]*>([0-9]+)<\/td>/); | |
if( !tmp ) return null; | |
ret["attack_score"] = parseInt(tmp[1] ,10); | |
tmp = html.match(/<td[^>]*>防衛スコア<\/td>[^<]*<td[^>]*>([0-9]+)<\/td>/); | |
if( !tmp ) return null; | |
ret["defence_score"] = parseInt(tmp[1] ,10); | |
tmp = html.match(/<\/a>\(本拠地\)<\/td>[^<]*<td[^>]*>([\-0-9]+),([\-0-9]+)<\/td>/); | |
if ( !tmp ) return null; | |
ret["x"] = parseInt(tmp[1],10); | |
ret["y"] = parseInt(tmp[2],10); | |
return ret; | |
} | |
function getXYListfromUserHTML(html) | |
{ | |
var ret = new Array(); | |
var tmp = html.match(/<td[^>]*>君主<\/td>[^<]*<td[^>]*>([^<\s]+)/); | |
if( !tmp ) return null; | |
var user_name = tmp[1]; | |
tmp = html.match(/<td[^>]*>同盟<\/td>[^<]*<td[^>]*><a href="[^"]*">([^<]+)<\/a><\/td>/); | |
if( !tmp ) return; | |
var ally_name = tmp[1]; | |
var pos; | |
//var reg = /<a href=\"(?:\.\.\/land\.php|\.\.\/village_change\.php).*\">([\s\S]+?)<\/a>[\s\S]+?<td>([\-0-9]+),([\-0-9]+)<\/td>[\s\S]+?<td>([0-9]+|\ \;)<\/td>/; | |
var reg = /<a href="\.\.\/(?:land|village_change)\.php[^"]*">\s*([^<\s]+)\s*<\/a>[^<]*<\/td>[^<]*<td[^>]*>([\-0-9]+),([\-0-9]+)<\/td>[^<]*<td[^>]*>([0-9]+| )<\/td>/; | |
var honkyo = 1; | |
while((pos = html.search(reg) ) != -1 ) { | |
html = html.substr(pos); | |
var dat = html.match(reg); | |
if( !dat ) break; | |
if( dat[4] == " " ) dat[4] = ""; | |
ret.push({"user_name":user_name, "ally_name":ally_name, "area_name":dat[1].replace(/(^\s+|\s+$)/g, ""), "x":dat[2], "y":dat[3], "jinko":dat[4], "honkyo":honkyo}); | |
honkyo=""; | |
html = html.substr(dat[0].length); | |
} | |
return ret; | |
} | |
function allianceCSV() | |
{ | |
if( location.pathname != "/alliance/info.php" ) return; | |
/* | |
if( URL_PARAM.id ) { | |
if( ALLY_ID != URL_PARAM.id ) { | |
return; | |
} | |
} | |
*/ | |
var aid; | |
if( URL_PARAM.id ) aid = URL_PARAM.id; | |
else aid = ALLY_ID; | |
//CSV出力用 | |
var tbl = $x("//table[@summary=\"ランキング\"]"); | |
if( !tbl ) return; | |
var lnk = d.createElement("a"); | |
lnk.href = "javascript:void(0)"; | |
lnk.innerHTML ="同盟員詳細情報csv"; | |
tbl.parentNode.insertBefore(lnk, tbl.nextSibling); | |
$e(lnk, "click", function() { | |
if( $("beyond_csvWindow") ) return; | |
if( confirm("同盟員の情報を一気に取得するためサーバに負荷をかけます。\n何度も実行するとDOS攻撃と同じなので、実行には注意して下さい") == false ) return; | |
//窓作成 | |
var elm_xy = cgetElementXY( this ); | |
var yy = elm_xy.y - 420; | |
if( yy < 0 ) yy = 0; | |
createCSVWindow(10, yy); | |
var trs = $a("//table[@summary=\"ランキング\"]//tr[position()>2]"); | |
var elm_msg = $("beyond_csvWindow_message"); | |
if( !elm_msg ) return; | |
var elm_csv = $("beyond_csvWindow_csv"); | |
if( !elm_csv ) return; | |
var now_num = 0; | |
var all_num = trs.length; | |
if( all_num == 0 ) return; | |
var csv_txt = "同盟内ランク\tuser_id\t名前\t同盟内point\t寄付\t拠点\t全体ランク\t全体point\t人口\t攻撃\t防御\t撃破スコア\t防御スコア\t本拠X座標\t本拠Y座標\n"; | |
window.setTimeout(timerFunc ,0 ); | |
function timerFunc() | |
{ | |
if( !$("beyond_csvWindow") ) return; | |
var tds = $a("descendant::td",trs[now_num]); | |
if( tds.length < 5 ) { | |
alert("ページフォーマットが変わったみたい"); | |
return ; | |
} | |
var ids = tds[1].innerHTML.match(/\/user\/\?user_id\=(\d+).*\">(.+)<\/a>/); | |
if( !ids ) { | |
alert("ページフォーマットが変わったみたい"); | |
return ; | |
} | |
var uid = parseInt(ids[1], 10); | |
cajaxRequest("/user/?user_id=" + uid, "GET", "", function(req) { | |
var dt = getDatafromUserHTML(req.responseText); | |
if( dt ) { | |
csv_txt += parseInt(tds[0].innerHTML, 10) + "\t"; | |
csv_txt += uid + "\t"; | |
csv_txt += ids[2] + "\t"; | |
csv_txt += parseInt(tds[2].innerHTML, 10) + "\t"; | |
csv_txt += parseInt(tds[3].innerHTML, 10) + "\t"; | |
csv_txt += parseInt(tds[4].innerHTML, 10) + "\t"; | |
csv_txt += dt.all_rank + "\t"; | |
csv_txt += dt.all_point + "\t"; | |
csv_txt += dt.jinko + "\t"; | |
csv_txt += dt.attack + "\t"; | |
csv_txt += dt.defence + "\t"; | |
csv_txt += dt.attack_score + "\t"; | |
csv_txt += dt.defence_score + "\t"; | |
csv_txt += dt.x + "\t"; | |
csv_txt += dt.y + "\n"; | |
var xytd = $("beyond_xylink_" + uid ); | |
if(xytd) { | |
csetUserXY(aid, uid, dt.x, dt.y); | |
xytd.innerHTML = cgetXYHtml(dt.x, dt.y ); | |
} | |
now_num ++; | |
elm_msg.innerHTML = "取得中... ( " + now_num + " / " + all_num + " )"; | |
if( now_num < all_num ) { | |
window.setTimeout(timerFunc, 0); | |
}else{ | |
elm_msg.innerHTML += ".. 完了しました。CTRL + A → CTRL + Cでコピーし、Excelなどに貼りつけてください"; | |
elm_csv.value = csv_txt; | |
elm_csv.focus(); | |
} | |
} else { | |
alert("取得に失敗しました" ); | |
} | |
}, function(req){ | |
alert("サーバからエラーが返りましたよ" ); | |
}); | |
} | |
}); | |
var lnk2 = d.createElement("a"); | |
lnk2.href = "javascript:void(0)"; | |
lnk2.innerHTML ="同盟員全領地座標csv"; | |
tbl.parentNode.insertBefore(lnk2, lnk.nextSibling); | |
tbl.parentNode.insertBefore(d.createTextNode(" "), lnk2); | |
$e(lnk2, "click", function() { | |
if( $("beyond_csvWindow") ) return; | |
if( confirm("同盟員の情報を一気に取得するためサーバに負荷をかけます。\n何度も実行するとDOS攻撃と同じなので、実行には注意して下さい") == false ) return; | |
if( navigator.userAgent.toLowerCase().indexOf('chrome') == -1 ) { | |
if( confirm("終盤の巨大同盟だと、CTRL+AやCTRL+Cの操作で10分くらい掛かります。\nChromeだとそんなに時間掛からないみたいです。続けますか?") == false ) return; | |
} | |
//窓作成 | |
var elm_xy = cgetElementXY( this ); | |
var yy = elm_xy.y - 420; | |
if( yy < 0 ) yy = 0; | |
createCSVWindow(10, yy); | |
var trs = $a("//table[@summary=\"ランキング\"]//tr[position()>2]"); | |
var elm_msg = $("beyond_csvWindow_message"); | |
if( !elm_msg ) return; | |
var elm_csv = $("beyond_csvWindow_csv"); | |
if( !elm_csv ) return; | |
var now_num = 0; | |
var all_num = trs.length; | |
if( all_num == 0 ) return; | |
var csv_txt = "同盟\t君主\t領地名\tX\tY\t人口\t本拠\n"; | |
window.setTimeout(timerFunc ,0 ); | |
function timerFunc() | |
{ | |
if( !$("beyond_csvWindow") ) return; | |
var tds = $a("descendant::td",trs[now_num]); | |
if( tds.length < 5 ) { | |
alert("ページフォーマットが変わったみたい"); | |
return ; | |
} | |
var ids = tds[1].innerHTML.match(/\/user\/\?user_id\=(\d+).*\">(.+)<\/a>/); | |
if( !ids ) { | |
alert("ページフォーマットが変わったみたい"); | |
return ; | |
} | |
var uid = parseInt(ids[1], 10); | |
cajaxRequest("/user/?user_id=" + uid, "GET", "", function(req) { | |
var dt = getXYListfromUserHTML(req.responseText); | |
if( dt ) { | |
for(var i=0 ; i<dt.length ; i++) { | |
csv_txt += dt[i].ally_name + "\t"; | |
csv_txt += dt[i].user_name + "\t"; | |
csv_txt += dt[i].area_name + "\t"; | |
csv_txt += dt[i].x + "\t"; | |
csv_txt += dt[i].y + "\t"; | |
csv_txt += dt[i].jinko + "\t"; | |
csv_txt += dt[i].honkyo + "\n"; | |
} | |
now_num ++; | |
elm_msg.innerHTML = "取得中... ( " + now_num + " / " + all_num + " )"; | |
if( now_num < all_num ) { | |
window.setTimeout(timerFunc, 0); | |
}else{ | |
elm_msg.innerHTML += ".. 完了しました。CTRL + A → CTRL + Cでコピーし、Excelなどに貼りつけてください"; | |
elm_csv.value = csv_txt; | |
elm_csv.focus(); | |
} | |
} else { | |
alert("取得に失敗しました" ); | |
} | |
}, function(req){ | |
alert("サーバからエラーが返りましたよ" ); | |
}); | |
} | |
}); | |
function createCSVWindow(x, y) | |
{ | |
var cc = $("beyond_csvWindow"); | |
if( cc ) cc.parentNode.removeChild(cc); | |
cc = d.createElement("div"); | |
cc.id = "beyond_csvWindow"; | |
cc.style.left = x + "px"; | |
cc.style.top = y + "px"; | |
cc.style.position = "absolute"; | |
cc.style.backgroundColor = "lightgray"; | |
cc.style.border = "outset 2px lightgray"; | |
cc.style.fontSize = "12px"; | |
cc.style.padding = "15px"; | |
cc.style.zIndex = 1000; | |
cc.style.padding = "10px"; | |
var dv = d.createElement("div"); | |
dv.id = "beyond_csvWindow_message"; | |
cc.appendChild(dv); | |
var tx = d.createElement("textarea"); | |
tx.id = "beyond_csvWindow_csv"; | |
tx.rows = 25; | |
tx.cols = 140; | |
tx.style.overflow = "scroll"; | |
cc.appendChild(tx); | |
cc.appendChild(d.createElement("br") ); | |
ccreateButton(cc, "閉じる", "", function(){ | |
var cc = $("beyond_csvWindow"); | |
if( cc ) cc.parentNode.removeChild(cc); | |
}); | |
$("beyond_floatpanel").appendChild(cc); | |
} | |
} | |
} | |
////////////////////// | |
//資源の合計 | |
////////////////////// | |
function disp_ResourcesTotal() | |
{ | |
var white_all = RES_GROW_W.wood + RES_GROW_W.stone + RES_GROW_W.iron + RES_GROW_W.rice; | |
var blue_all = RES_GROW_B.wood + RES_GROW_B.stone + RES_GROW_B.iron + RES_GROW_B.rice; | |
var all_all = RES_GROW.wood + RES_GROW.stone + RES_GROW.iron + RES_GROW.rice; | |
var box = $x('id("sidebar")//span[@class="increase" or @class="resource"]/../.. | id("status_left")//p[@class="status_bottom"]'); | |
if( !box ) return; | |
var txt = d.createTextNode("合計 " + white_all); | |
var sp = d.createElement("span"); | |
sp.className = "increase"; | |
sp.appendChild(d.createTextNode(" +" + blue_all) ); | |
var item = txt; | |
var addSpDoc = box; | |
if (!isNarrow) { | |
item = d.createElement("li"); | |
item.appendChild(txt); | |
item.title = "総合計 " + all_all; | |
addSpDoc = item; | |
} | |
box.appendChild(item); | |
addSpDoc.appendChild(sp); | |
} | |
////////////////////// | |
//建設/破棄一覧 | |
////////////////////// | |
function disp_RemoveList() | |
{ | |
var img_x = 'data:image/gif;base64,'+ | |
'R0lGODlhPAA8AIAAAP/MM////yH5BAUUAAEALAAAAAA8ADwAAAJ4jI+py+0Po5y02ouz3rz7D4bi'+ | |
'SJbmiabqyrbuC8fyTNf2jef6zvf+DQgGJwCV8PgQro7IRXPJLCqerGjCCmMaotIsVzv7KmtiHNd8'+ | |
'tpVp4nEsDX6lt+7W/EBNfRl1PZY/ZPTXEOjXR1iIcuiQ+OP4CBkpOUlZWVMAADs='; | |
var img_m = 'data:image/gif;base64,'+ | |
'R0lGODlhPAA8AIAAAP/MM////yH5BAUUAAEALAAAAAA8ADwAAAKpjI+py+0Po5y02ouz3rz7D4bi'+ | |
'SJbmiabqyrbuC8fyTNf2jef6zvc5AAwKacJiMTZcJFnLRvP0dAZT0wOQcQ1UTVkrAPs1dElbcVjR'+ | |
'LYuuxmGbfV7D31q6+jM2582JvSdvhBZXRxYHR4gAOIh3luWIqFj4lWYYNnbHKJhoWckVqdToB/Kp'+ | |
'yQd1uVjHmSrnmNq24saqOlsSpVd7+nbbspvrAxwsPExcbBxQAAA7'; | |
var img_t = 'data:image/gif;base64,'+ | |
'R0lGODlhPAA8AIAAAP/MM////yH5BAUUAAEALAAAAAA8ADwAAAKnjI+py+0Po5y02ouz3rz7D4bi'+ | |
'SJbmiabqyrbuC8fyTNf2jef6zvc5AAwKacJiMTZcJFnLAxDRPA2fTkAiSgpWoVaFVto1JI1ccDhA'+ | |
'FR+rZ1Hamka3y9m3XBu/5j9x8j265/HW5EfnFhYIkcgxaOTYNydI9UjJVrL39bDYkfn3yBUJ0kh5'+ | |
'tikJh6qEaHraRYrKyof32qmCpRZbR0tU6eP7CxwsPEz8UAAAOw=='; | |
var img_lup = 'data:image/gif;base64,'+ | |
'R0lGODlhPAA8AIAAAP/MM////yH5BAUUAAEALAAAAAA8ADwAAAKfjI+py+0Po5y02ouz3rz7D4bi'+ | |
'SJbmiabqyrbuC8fyTNf2jef6zvc9APgBg7rhMGc03o7AwJH2bDqlsef0YH1Rr1iiaqsAJ8SfbNi7'+ | |
'MJfRafaZRK7EOVtw867kiups/DTq5mFlF+SHFyjoRXiVpDcCOFYo2YW4ZqAkyaRYuZZZ+Of3l5IH'+ | |
'QYpiyoA6qnbJ+pUEO7cS6+pje4ubq7vLi1AAADs='; | |
if( location.pathname == "/land.php" && URL_PARAM.x && URL_PARAM.y ) { | |
var rmtime = d.body.innerHTML.match(/(現在領地を破棄中です|現在村を建設中です|現在砦を建設中です).*\n(\d+-\d+-\d+ \d+:\d+:\d+)/ ); | |
if( rmtime ) { | |
if( rmtime[1] == "現在領地を破棄中です" ) { | |
addList(rmtime[2], 0, URL_PARAM.x, URL_PARAM.y ); | |
}else if( rmtime[1] == "現在村を建設中です" ) { | |
addList(rmtime[2], 3, URL_PARAM.x, URL_PARAM.y ); | |
}else if( rmtime[1] == "現在砦を建設中です" ) { | |
addList(rmtime[2], 4, URL_PARAM.x, URL_PARAM.y ); | |
} | |
}else{ | |
rmtime = d.body.innerHTML.match(/現在領地をレベルアップ中です.*\n(\d+-\d+-\d+ \d+:\d+:\d+)に完了します。/ ); | |
if( rmtime ) { | |
addList(rmtime[1], 5, URL_PARAM.x, URL_PARAM.y ); | |
}else { | |
delList(0, URL_PARAM.x, URL_PARAM.y); | |
} | |
} | |
} | |
if( location.pathname == "/facility/castle.php" ) { | |
var xy = cgetCurrentBaseXY(); | |
var rmtime = d.body.innerHTML.match(/(村を削除中です。|砦を削除中です。)[^\d]*(\d+-\d+-\d+ \d+:\d+:\d+)に完了します。/); | |
if( rmtime ) { | |
if( rmtime[1] == "村を削除中です。" ) { | |
addList(rmtime[2], 1, xy.x, xy.y ); | |
}else if( rmtime[1] == "砦を削除中です。" ) { | |
addList(rmtime[2], 2, xy.x, xy.y ); | |
} | |
}else{ | |
delList(1,xy.x, xy.y); | |
} | |
} | |
if( location.pathname == "/map.php" ) { | |
//地図に表示 | |
var type = 1; | |
if( $x("//div[@id=\"change-map-scale\"]/ul/li[@class=\"sort15 now\"]") ) type=2; | |
else if( $x("//div[@id=\"change-map-scale\"]/ul/li[@class=\"sort20 now\"]") ) type=3; | |
var lists = cloadData("RemoveList", "[]", true, true); | |
lists = checkList(lists); //時間を過ぎたものを削除 | |
if( lists.length ) { | |
var cx = parseInt(URL_PARAM.x,10); | |
var cy = parseInt(URL_PARAM.y,10); | |
if( cx > MAP_X_MAX ) cx = MAP_X_MAX; | |
if( cx < MAP_X_MIN ) cx = MAP_X_MIN; | |
if( cy > MAP_Y_MAX ) cy = MAP_Y_MAX; | |
if( cy < MAP_Y_MIN ) cy = MAP_Y_MIN; | |
var map = $x("//div[@id=\"mapsAll\"]"); | |
for(var i=0 ; i<lists.length ; i++) { | |
var no = cgetMapNofromXY(lists[i].x, lists[i].y, cx, cy, type ); | |
if( !no ) continue; | |
var img_src; | |
if( lists[i].kind == 3) img_src = img_m; | |
else if(lists[i].kind == 4 ) img_src = img_t; | |
else if(lists[i].kind == 5 ) img_src = img_lup; | |
else img_src = img_x; | |
var img = document.createElement("img"); | |
img.className = "mapAll" + no; | |
img.src = img_src; | |
map.appendChild(img); | |
} | |
} | |
} | |
//パネルに表示 | |
var icon_rl = 'data:image/gif;base64,'+ | |
'R0lGODlhEQAPALMAAAD/ANO3SQbOKKyTQxqvSjKgYAivNwCZAHdrPBVwFVNTUS1NLTMzMwAAAAAA'+ | |
'AAAAACH5BAQUAP8ALAAAAAARAA8AAARKkMlJq50npzuXAKDALYsBnoBhHWgrVmyLIkOgSIl8Bnww'+ | |
'TDpCr3djfHbD4Y9hOhWSQ8kC9YTyEFKBwICw9i5WLKfWW3IYNISYEgEAOw=='; | |
var elms = ccreateSideBox("beyond_sidebox_removelist", icon_rl, "建設/破棄リスト"); | |
var lists = cloadData("RemoveList", "[]", true, true); | |
lists = checkList(lists); //時間を過ぎたものを削除 | |
if( lists.length == 0 ) return; | |
var ul = d.createElement("ul"); | |
for(var i=0 ; i<lists.length ; i++) { | |
var li = d.createElement("li"); | |
//アイコン | |
var title = ""; | |
switch(lists[i].kind){ | |
case 0: title = "領地破棄"; break; | |
case 1: title = "村破棄"; break; | |
case 2: title = "砦破棄"; break; | |
case 3: title = "村作成"; break; | |
case 4: title = "砦作成"; break; | |
case 5: title = "レベルアップ"; break; | |
} | |
var icon = ""; | |
if( lists[i].kind == 1 || lists[i].kind == 3 ) { //村破棄or村作成 | |
icon = IMG_DIR + "panel/village_b_l.png"; | |
}else if( lists[i].kind == 2 || lists[i].kind == 4 ) { //砦破棄or砦作成 | |
icon = IMG_DIR + "panel/fort_b_l.png"; | |
}else{ | |
icon = IMG_DIR + "panel/territory_b_s.png"; | |
} | |
var addHtml = '<img src="' + icon + '" style="width:20px; height:20px;" title="' + title + '">'; | |
var sizestyle = ""; | |
if( lists[i].kind == 0 || lists[i].kind == 1 || lists[i].kind == 2 ) { //領地破棄or村破棄or砦破棄 | |
addHtml += '<img src ="' + img_x + '" style="position:relative; left:-20px; width:20px; height:20px;" title="' + title + '">'; | |
sizestyle = ' style="position:relative; left:-20px;"'; | |
} | |
if( lists[i].kind == 5 ) { //領地LvUp | |
addHtml += '<img src ="' + img_lup + '" style="position:relative; left:-20px; width:20px; height:20px;" title="' + title + '">'; | |
sizestyle = ' style="position:relative; left:-20px;"'; | |
} | |
addHtml += '<a href="'+caddSessionId('/land.php?x=' + lists[i].x + '&y=' + lists[i].y +'#ptop')+'" title="表示"'+ sizestyle + '>' + lists[i].time.substr(-8) + '</a>'; | |
addHtml += '<a href="'+caddSessionId('/map.php?x=' + lists[i].x + '&y=' + lists[i].y +'#ptop')+'" title="マップ(' + lists[i].x + ',' + lists[i].y + ')"' + sizestyle + '>'; | |
addHtml += '<img src="' + img_map + '" style="padding-left:2px;"></a>'; | |
li.innerHTML = addHtml; | |
ul.appendChild(li); | |
} | |
elms.sideBoxInner.appendChild(ul); | |
function addList(tim, kind, x, y) //kind=0:領地破棄 1:村破棄 2:砦破棄 3:村作成 4:砦作成 5:領地LvUp | |
{ | |
var lists = cloadData("RemoveList", "[]", true, true); | |
for(var i=0 ; i<lists.length ; i++) { | |
if(lists[i].x == x && lists[i].y == y ) { | |
return; | |
} | |
} | |
lists.push({"x":x, "y":y, "time":tim, "kind":kind } ); | |
lists.sort( function(a,b){ | |
if(a.time > b.time) return 1; | |
if(a.time < b.time) return -1; | |
return 0;}); | |
csaveData( "RemoveList", lists, true, true ); | |
} | |
function delList(kind, x, y) //kind=0:land 1:castle | |
{ | |
var lists = cloadData("RemoveList", "[]", true, true); | |
for(var i=0 ; i<lists.length ; i++) { | |
if(lists[i].x == x && lists[i].y == y ) { | |
if( ( ( lists[i].kind == 1 || lists[i].kind == 2 ) && kind == 1 ) || | |
( ( lists[i].kind == 0 || lists[i].kind == 3 || lists[i].kind == 4 || lists[i].kind == 5 ) && kind == 0 ) ) { | |
lists.splice(i,1); | |
csaveData( "RemoveList", lists, true, true ); | |
break; | |
} | |
} | |
} | |
} | |
function checkList(lists) | |
{ | |
var dt = new Date(); | |
var ntime = dt.getFullYear() + "-" + | |
(dt.getMonth()+101).toString().substr(-2) + "-" + | |
(dt.getDate()+100).toString().substr(-2) + " " + | |
(dt.getHours()+100).toString().substr(-2) + ":" + | |
(dt.getMinutes()+100).toString().substr(-2) + ":" + | |
(dt.getSeconds()+100).toString().substr(-2); | |
var str1 = ""; | |
var str2 = ""; | |
var str3 = ""; | |
var str4 = ""; | |
for(var i=0 ; i<lists.length ; i++) { | |
if( lists[i].time < ntime ) { | |
if ( lists[i].kind == 1 || lists[i].kind == 2 ) { | |
str2 += "(" + lists[i].x + "," + lists[i].y + ")\n"; | |
}else if ( lists[i].kind == 3 || lists[i].kind == 4 ) { | |
str3 += "(" + lists[i].x + "," + lists[i].y + ")\n"; | |
}else if ( lists[i].kind == 5 ) { | |
//LevelUp完了 | |
str4 += "(" + lists[i].x + "," + lists[i].y + ")\n"; | |
csetMyLevel(lists[i].x, lists[i].y, -1); | |
}else { | |
str1 += "(" + lists[i].x + "," + lists[i].y + ")\n"; | |
} | |
lists.splice(i,1); | |
i--; | |
} | |
} | |
if( str1 || str2 || str3 || str4 ) { | |
var msg = ""; | |
if( str1) msg += "以下の領地が破棄されました\n" + str1; | |
if( str2) msg += "以下の拠点が破棄されました\n" + str2; | |
if( str3) msg += "以下の拠点が作成されました\n" + str3; | |
if( str4) msg += "以下の拠点がレベルアップしました\n" + str4; | |
csaveData( "RemoveList", lists, true, true ); | |
alert(msg); | |
} | |
return lists; | |
} | |
} | |
////////////////////// | |
//資源の残り時間 | |
////////////////////// | |
function disp_ResourcesTime() | |
{ | |
var flag_cost = false; | |
if( location.pathname == "/facility/facility.php" || | |
location.pathname == "/facility/select_facility.php" || | |
location.pathname == "/facility/castle.php" || | |
location.pathname == "/facility/unit_confirm.php") { | |
flag_cost = true; | |
} | |
var names = ["wood", "stone", "iron", "rice"]; | |
var resources = { | |
wood : { | |
base : null, | |
timer : null | |
}, | |
stone : { | |
base : null, | |
timer : null | |
}, | |
iron : { | |
base : null, | |
timer : null | |
}, | |
rice : { | |
base : null, | |
timer : null | |
}, | |
fame : { | |
base : null, | |
timer : null | |
} | |
}; | |
//status_leftとstatus_rightの幅を変更 | |
var stat_left = $("status_left"); | |
var stat_right = $("status_right"); | |
if( stat_left && stat_right ) { | |
stat_left.style.width = "725px"; //670 + 55 | |
stat_right.style.width = "200px"; //255 - 55 | |
} | |
for(var i = 0; i < names.length;i++) { | |
var name = names[i]; | |
var base = $(name); | |
var dv = d.createElement("div"); | |
dv.id = "beyond_restime_" + name; | |
dv.style.top = (base.offsetTop + 12) + "px"; | |
dv.style.left = base.offsetLeft + "px"; | |
dv.style.position = "absolute"; | |
base.parentNode.appendChild( dv ); | |
resources[name].base = base; | |
resources[name].timer = dv; | |
} | |
//名声 | |
var villageCount = 0; | |
for (var key in VILLAGES_INFO) { | |
villageCount++; | |
} | |
var bldtbl = [17, 35, 54, 80, 112, 150, 195, 248, 310, 999]; | |
var addTop = 12; | |
if (OPT_NEXT_MEISEI) { | |
addTop = -12; | |
} | |
for( var i=0 ; i< bldtbl.length ; i++ ){ | |
if( RES_MAX.fame < bldtbl[i] ) { | |
var base = $x('id("status_left")/img[@title="名声"]'); | |
if( base ) { | |
var dv = d.createElement("div"); | |
dv.id = "beyond_restime_meisei"; | |
dv.style.top = (base.offsetTop + addTop) + "px"; | |
dv.style.left = (base.offsetLeft + 10) + "px"; | |
dv.style.position = "absolute"; | |
dv.style.color="lightgreen"; | |
if( bldtbl[i] != 999 ) { | |
dv.innerHTML = "次拠点:" + bldtbl[i]; | |
} | |
if( villageCount < i + 1 ) { | |
dv.innerHTML += "(+" + (i + 1 - villageCount ) + ")"; | |
} | |
base.parentNode.appendChild( dv ); | |
resources.fame.base = base; | |
resources.fame.timer = dv; | |
} | |
break; | |
} | |
} | |
if( flag_cost ) { | |
var facilityResources = new Array(); | |
var tds = $a('//td[@class="cost"]'); | |
for(var i=0 ; i<tds.length ; i++) { | |
var td = tds[i]; | |
var spn = $a('./span[@class="normal" or @class="max90"]', td); | |
if( spn.length != 4 ) continue; | |
var addObj = new Object(); | |
for(var j=0 ; j < names.length ; j++ ) { | |
var name = names[j]; | |
var base = spn[j]; | |
var dv = d.createElement("div"); | |
dv.id = "beyond_restime_" + i + "_" + name; | |
var elem_xy = cgetElementXY(base); | |
dv.style.top = (elem_xy.y + 9) + "px"; | |
dv.style.left = (elem_xy.x - 18 )+ "px"; | |
dv.style.fontSize = "9px"; | |
dv.style.position = "absolute"; | |
td.appendChild( dv ); | |
addObj[name] = {base : base , timer : dv}; | |
} | |
facilityResources.push(addObj); | |
} | |
} | |
function ResourcesTimer() | |
{ | |
cupdateCurrentResources(); | |
//各資源 | |
for(var i=0 ; i<names.length ; i++) { | |
var name = names[i]; | |
var base = resources[name].base; | |
var dv = resources[name].timer; | |
if( dv && base ){ | |
var tim; | |
if( RES_GROW[ name ] == 0 ) { | |
tim = "XX:XX:XX"; | |
}else if( RES_GROW[ name ] > 0 ){ | |
tim = getTime(RES_MAX[ name ] - RES_NOW[ name ], RES_GROW[ name ]); | |
}else{ | |
tim = "-" + getTime(RES_NOW[ name ], 0 - RES_GROW[ name ]); | |
} | |
if( tim == "00:00:00" || tim.substr(0,1) == "-" ) dv.style.color="red"; | |
else if( parseInt(tim.substr(0,2), 10) < 1 ) dv.style.color="orange"; | |
else dv.style.color="lightgreen"; | |
dv.innerHTML = "(" + tim + ")"; | |
dv.style.top = (base.offsetTop + 12) + "px"; | |
dv.style.left = base.offsetLeft + "px"; | |
} | |
} | |
//名声 | |
var base = resources.fame.base; | |
var dv = resources.fame.timer; | |
if( base && dv) { | |
dv.style.top = (base.offsetTop + addTop) + "px"; | |
dv.style.left = (base.offsetLeft + 10) + "px"; | |
} | |
if( flag_cost ) { | |
for(var i=0 ; i < facilityResources.length ; i++) { | |
var facilityObj = facilityResources[i]; | |
for(var j=0 ; j<names.length ; j++ ) { | |
var name = names[j]; | |
var base = facilityObj[name].base; | |
var dv = facilityObj[name].timer; | |
var needed = parseInt(base.innerHTML,10); | |
if( needed > RES_MAX[ name ] ) { | |
dv.style.color="red"; | |
dv.innerHTML = "倉庫不足"; | |
}else if( needed > RES_NOW[ name ] ) { | |
var tim = getTime(needed - RES_NOW[ name ], RES_GROW[ name ]); | |
dv.style.color="orange"; | |
dv.innerHTML = "(" + tim + ")"; | |
}else{ | |
dv.style.color="lightgreen"; | |
dv.innerHTML = "残" + (RES_NOW[ name ] - needed); | |
} | |
var elem_xy = cgetElementXY(base); | |
dv.style.top = (elem_xy.y + 9) + "px"; | |
dv.style.left = (elem_xy.x - 18 )+ "px"; | |
} | |
} | |
} | |
window.setTimeout( ResourcesTimer, 1000); | |
} | |
ResourcesTimer(); | |
function getTime(res, grow ) | |
{ | |
var tmp = res * 3600 / grow; | |
var h = Math.floor(tmp / 3600); | |
var m = Math.floor((tmp - h*3600 ) / 60 ); | |
var s = Math.floor(tmp - h*3600 - m*60 ); | |
var tim = h + ":" + | |
(m+100).toString().substr(-2) + ":" + | |
(s+100).toString().substr(-2); | |
return tim; | |
} | |
} | |
////////////////////// | |
//地形一覧 | |
////////////////////// | |
function disp_MapList() | |
{ | |
if( location.pathname != "/map.php" ) return; | |
var map_type = 1; | |
if( $x("//div[@id=\"change-map-scale\"]/ul/li[@class=\"sort15 now\"]") ) map_type=2; | |
else if( $x("//div[@id=\"change-map-scale\"]/ul/li[@class=\"sort20 now\"]") ) map_type=3; | |
var base = $("mapbox"); | |
var div =d.createElement("div"); | |
div.id = "beyond_maplist"; | |
div.align = "center"; | |
div.appendChild(d.createElement("br")); | |
var tmp_t = d.createElement("table"); | |
var tmp_r = d.createElement("tr"); | |
var tmp_d1 = d.createElement("td"); | |
ccreateCheckBox(tmp_d1, "beyond_maplist_kyoten", "1", "拠点","拠点を含めます",0); | |
var tmp_d2 = d.createElement("td"); | |
ccreateCheckBox(tmp_d2, "beyond_maplist_ryouchi", "1", "領地","領地を含めます",0); | |
var tmp_d3 = d.createElement("td"); | |
ccreateCheckBox(tmp_d3, "beyond_maplist_akichi", "1", "空き地","空き地を含めます",0); | |
var tmp_d4 = d.createElement("td"); | |
var a = d.createElement("a"); | |
a.href = "javascript:void(0)"; | |
a.style.color = "black"; | |
a.appendChild(d.createTextNode("<地形一覧表示>")); | |
tmp_d4.appendChild(a); | |
tmp_r.appendChild(tmp_d1); | |
tmp_r.appendChild(tmp_d2); | |
tmp_r.appendChild(tmp_d3); | |
tmp_r.appendChild(tmp_d4); | |
tmp_t.appendChild(tmp_r); | |
div.appendChild(tmp_t); | |
base.appendChild(div); | |
var sheet = d.styleSheets[d.styleSheets.length-1]; | |
sheet.insertRule("table#beyond_maplist_table {border:2px solid black; border-collapse:collapse;}", sheet.cssRules.length); | |
sheet.insertRule("table#beyond_maplist_table th {background:lightgray; padding: 5px; text-align:center; border:1px solid black;}", sheet.cssRules.length); | |
sheet.insertRule("table#beyond_maplist_table td {padding: 2px; border:1px solid black;}", sheet.cssRules.length); | |
$e(a, "click", function() { | |
var flag_akichi = cgetCheckBoxValue("beyond_maplist_akichi"); | |
var flag_ryouchi = cgetCheckBoxValue("beyond_maplist_ryouchi"); | |
var flag_kyoten = cgetCheckBoxValue("beyond_maplist_kyoten"); | |
var area = $a("//map[@id=\"mapOverlayMap\"]//area"); | |
var lists = new Array(); | |
for(var i=0; i<area.length ; i++) { | |
var dat = area[i].getAttribute("onmouseover"); | |
dat = dat.replace(/^.*rewrite/, "getTRData"); | |
dat = dat.replace(/\); .*$/, ");"); | |
var trdata; | |
eval("trdata = " + dat); | |
if( trdata ) { | |
lists.push(trdata); | |
} | |
} | |
lists.sort( function(a,b){ | |
if(a.ally == "" && b.ally != "") return 1; | |
else if(a.ally != "" && b.ally == "") return -1; | |
if(a.ally > b.ally) return 1; | |
else if(a.ally < b.ally) return -1; | |
else{ | |
if( a.user_name > b.user_name) return 1; | |
else if(a.user_name < b.user_name) return -1; | |
else{ | |
if( a.kyoten_kind > b.kyoten_kind ) return -1; | |
else if( a.kyoten_kind < b.kyoten_kind ) return 1; | |
else { | |
if( parseInt(a.jinko,10) > parseInt(b.jinko,10) ) return -1; | |
else if( parseInt(a.jinko,10) < parseInt(b.jinko,10) ) return 1; | |
else { | |
if( parseFloat(a.kyori) > parseFloat(b.kyori) ) return 1; | |
else if( parseFloat(a.kyori) < parseFloat(b.kyori) ) return -1; | |
else { | |
if( a.name > b.name ) return 1; | |
else if( a.name < b.name ) return -1; | |
else return 0; | |
} | |
} | |
} | |
} | |
} | |
return 0; | |
}); | |
var tbl = initTable(); | |
for(var i=0 ; i<lists.length ; i++) { | |
var tr = d.createElement("tr"); | |
var td; | |
td = d.createElement("td"); | |
td.innerHTML = lists[i].ally; | |
tr.appendChild(td); | |
td = d.createElement("td"); | |
td.innerHTML = lists[i].user_name; | |
tr.appendChild(td); | |
td = d.createElement("td"); | |
if( lists[i].kyoten_img ) td.innerHTML = "<img src=\"" + lists[i].kyoten_img + "\" style=\"width:30px; height:30px;\" />"; | |
tr.appendChild(td); | |
td = d.createElement("td"); | |
td.style.display = "none"; | |
td.innerHTML = lists[i].kyoten_kind; | |
tr.appendChild(td); | |
td = d.createElement("td"); | |
td.innerHTML = lists[i].jinko; | |
tr.appendChild(td); | |
td = d.createElement("td"); | |
td.innerHTML = lists[i].name; | |
tr.appendChild(td); | |
td = d.createElement("td"); | |
var xy = lists[i].xy.match(/\(([\-0-9]+),([\-0-9]+)\)/); | |
if( xy ) td.innerHTML = cgetXYHtml(xy[1], xy[2]); | |
else td.innerHTML = lists[i].xy; | |
tr.appendChild(td); | |
td = d.createElement("td"); | |
td.innerHTML = lists[i].kyori; | |
tr.appendChild(td); | |
td = d.createElement("td"); | |
if( lists[i].npc ) td.style.color = "red"; | |
td.innerHTML = lists[i].star; | |
tr.appendChild(td); | |
tbl.appendChild(tr); | |
} | |
if( OPT_TTDISTANCE) disp_ToolTipsDistance();//試し | |
function getTRData(name, user_name, jinko, xy, ally, star, kyori, wood, stone, iron, rice, npc) | |
{ | |
if( !flag_akichi && ally == "" ) return null; | |
if( jinko == "-") jinko = ""; | |
var kyoten_img = ""; | |
var kyoten_kind = 0; | |
if( jinko || npc) { | |
var tmp = xy.match(/\(([\-0-9]+),([\-0-9]+)\)/); | |
if( tmp ) { | |
var cx = parseInt(URL_PARAM.x,10); | |
var cy = parseInt(URL_PARAM.y,10); | |
if( cx > MAP_X_MAX ) cx = MAP_X_MAX; | |
if( cx < MAP_X_MIN ) cx = MAP_X_MIN; | |
if( cy > MAP_Y_MAX ) cy = MAP_Y_MAX; | |
if( cy < MAP_Y_MIN ) cy = MAP_Y_MIN; | |
var no = cgetMapNofromXY(parseInt(tmp[1], 10), parseInt(tmp[2], 10), cx, cy, map_type); | |
if( no ) { | |
var img = $x("//div[@id=\"mapsAll\"]//img[@class=\"mapAll" + no + "\"]"); | |
if( img ) { | |
kyoten_img = img.getAttribute("src"); | |
if( npc ) kyoten_kind = 4; | |
else if( kyoten_img.match(/village/) ) kyoten_kind = 1; | |
else if( kyoten_img.match(/fort/) ) kyoten_kind = 2; | |
else if( kyoten_img.match(/capital/) ) kyoten_kind = 3; | |
} | |
} | |
} | |
} | |
if( !flag_ryouchi && ally != "" && kyoten_kind == 0 ) return null; | |
if( !flag_kyoten && ally != "" && kyoten_kind != 0 ) return null; | |
return {"kyoten_kind":kyoten_kind, "kyoten_img":kyoten_img, | |
"jinko":jinko , "ally":ally, "user_name":user_name, | |
"name":name, "xy":xy, "kyori":kyori, "star":star, "npc":npc}; | |
} | |
var sort_kind, sort_order; | |
function row_sort(col, kind, order) { | |
var tbl = $("beyond_maplist_table"); | |
var trs = $a("descendant::tr[position()>1]",tbl); | |
sort_kind = kind; | |
sort_order = order; | |
var strs = new Array(); | |
if( kind == "xy" ) { | |
//座標はaの下 | |
for(var i=0; i<trs.length ; i++) { | |
var td = $x("descendant::td[" + col + "]", trs[i]); | |
var a = $x("descendant::a", td); | |
if( a ) strs.push({"node":trs[i], "value":a.innerHTML}); | |
else strs.push({"node":trs[i], "value":""}); | |
} | |
} else { | |
for(var i=0; i<trs.length ; i++) { | |
var td = $x("descendant::td[" + col + "]", trs[i]); | |
if(td.style.color=="red") { | |
strs.push({"node":trs[i], "value":"★★★★★★★★★★" + td.innerHTML});//NPC砦だけ特別に | |
}else{ | |
strs.push({"node":trs[i], "value":td.innerHTML}); | |
} | |
} | |
} | |
strs.sort( function(a,b) { | |
var ret = 0; | |
if( sort_kind == "num" ){ | |
if( a.value == "" && b.value == "" ) return 0; | |
else if( a.value == "" ) return 1; | |
else if( b.value == "" ) return -1; | |
else ret = parseInt(a.value, 10) - parseInt(b.value, 10); | |
}else if( sort_kind == "kyo" ){ | |
if( parseInt(a.value, 10) == 0 && parseInt(b.value, 10) == 0) return 0; | |
else if( parseInt(a.value, 10) == 0 ) return 1; | |
else if( parseInt(b.value, 10) == 0 ) return -1; | |
else ret = parseInt(a.value, 10) - parseInt(b.value, 10); | |
}else if( sort_kind == "float" ){ | |
ret = parseFloat(a.value, 10) - parseFloat(b.value, 10); | |
}else if (sort_kind == "xy") { | |
//座標 | |
if( !a.value && !b.value ) ret = 0; | |
else if( !a.value ) ret = 1; | |
else if( !b.value ) ret = -1; | |
else { | |
var a_xy = a.value.split(","); | |
var b_xy = b.value.split(","); | |
ret = ( Math.pow(parseInt(a_xy[0], 10), 2) + Math.pow(parseInt(a_xy[1], 10), 2) ) - | |
( Math.pow(parseInt(b_xy[0], 10), 2) + Math.pow(parseInt(b_xy[1], 10), 2) ); | |
} | |
}else { | |
if( a.value == b.value ) { | |
ret = 0; | |
}else if( a.value == "" ) { | |
return 1; | |
}else if( b.value == "" ) { | |
return -1; | |
}else if( a.value > b.value ) { | |
ret = 1; | |
}else { | |
ret = -1; | |
} | |
} | |
if( sort_order == "dsc") { | |
ret = 0 - ret; | |
} | |
return ret; | |
}); | |
tbl = initTable(); | |
for(var i=0 ; i<trs.length ; i++) { | |
tbl.appendChild(strs[i].node); | |
} | |
} | |
function appendSortButton(col, sortcol, kind ) | |
{ | |
var tbl = $("beyond_maplist_table"); | |
var th = $x("descendant::tr[1]//th[" + col + "]", tbl); | |
if( !th ) return; | |
th.appendChild(d.createElement("br")); | |
var a = d.createElement("a"); | |
a.href = "javascript:void(0);"; | |
var img = d.createElement("img"); | |
img.src= IMG_DIR + "trade/icon_up.gif"; | |
img.alt = "昇順に並べ替え"; | |
img.title = img.alt; | |
a.appendChild(img); | |
th.appendChild(a); | |
(function(n, k){ | |
$e(a, "click", function(){row_sort(n, k, "asc"); } ); | |
})(sortcol, kind); | |
th.appendChild(d.createTextNode(" ")); | |
a = d.createElement("a"); | |
a.href = "javascript:void(0)"; | |
img = d.createElement("img"); | |
img.src= IMG_DIR + "trade/icon_down.gif"; | |
img.alt = "降順に並べ替え"; | |
img.title = img.alt; | |
a.appendChild(img); | |
th.appendChild(a); | |
(function(n, k){ | |
$e(a, "click", function(){row_sort(n, k, "dsc"); } ); | |
})(sortcol, kind); | |
} | |
function initTable() | |
{ | |
var dv = $("beyond_maplist"); | |
var tbl = $("beyond_maplist_table"); | |
if( tbl ) { | |
tbl.parentNode.removeChild(tbl); | |
}else{ | |
var a = d.createElement("a"); | |
a.href = "#ptop"; | |
a.style.color="black"; | |
a.appendChild(d.createTextNode("▲トップに戻る")); | |
a.id = "beyond_maplist_table_gotop"; | |
dv.appendChild(a); | |
} | |
tbl = d.createElement("table"); | |
tbl.id = "beyond_maplist_table"; | |
tbl.innerHTML = "<tr>" + | |
"<th>同盟</th><th>君主</th><th>拠点</th><th style=\"display:none;\">拠点Kind</th>" + | |
"<th>人口</th><th>領地名</th><th>座標</th><th>距離</th><th>戦力</th>" + | |
"</tr>"; | |
dv.insertBefore(tbl, $("beyond_maplist_table_gotop")); | |
appendSortButton(1, 1, "str" ); | |
appendSortButton(2, 2, "str" ); | |
appendSortButton(3, 4, "kyo" ); | |
appendSortButton(5, 5, "num" ); | |
appendSortButton(7, 7, "xy" ); | |
appendSortButton(8, 8, "float" ); | |
appendSortButton(9, 9, "str" ); | |
return tbl; | |
} | |
}); | |
} | |
////////////////////// | |
//距離/時間表示(ToolTips) | |
////////////////////// | |
function disp_ToolTipsDistance() | |
{ | |
if( location.pathname == "/village.php" ) { | |
saveTrainingLevel(); | |
} | |
var links = $a('//a[contains(@href,"castle_send_troop.php") and not(contains(@href,"TB_inline"))]'); | |
if (!links.length) { | |
return; | |
} | |
var TL = 0; | |
var ETL = 0; | |
var vid = cgetCurrentVillageId(); | |
var lists = cloadData("TrainingLevels", "[]", true, true); | |
for (var i = 0;i < lists.length;i++) { | |
if (lists[i].id == vid) { | |
TL = parseInt(lists[i].level,10); | |
ETL = parseInt(lists[i].elevel,10); | |
break; | |
} | |
} | |
if (isNaN(""+TL)) { | |
TL = 0; | |
} | |
if (isNaN(""+ETL)) { | |
ETL = 0; | |
} | |
var reg = /x=(-?\d+)&y=(-?\d+)/; | |
for(var i=0 ; i<links.length ; i++) { | |
if(!reg.test(links[i].href)) continue; | |
links[i].alt = ""; | |
links[i].title = ""; | |
$e(links[i], "mouseover", function (event) { | |
var xy = this.href.match(reg); | |
var distance = cgetDistanceFromBase(xy[1], xy[2] ); | |
showToolTips(event, distance, TL, ETL); | |
}); | |
$e(links[i], "mouseout", function () { hideToolTips(); } ); | |
} | |
function showToolTips( evt, distance, trainingLevel , eTrainingLevel) | |
{ | |
hideToolTips(); | |
var sp = 0.05 * trainingLevel + 1+ (eTrainingLevel*0.001*distance); | |
var tw = d.createElement("div"); | |
tw.id = "beyond_ToolTipsWindow"; | |
tw.style.position = "absolute"; | |
tw.style.backgroundColor = "lightyellow"; | |
tw.style.border = "outset 2px lightyellow"; | |
tw.style.fontSize = "10px"; | |
tw.style.padding = "10px"; | |
tw.style.zIndex = 1000; | |
var xxx = evt.pageX + 5; | |
if( xxx > 700 ) xxx -=175; | |
tw.style.left = xxx + "px"; | |
tw.style.top = (evt.pageY +5) + "px"; | |
var dv = d.createElement("div"); | |
dv.innerHTML = "時間の目安 遠征訓練所Lv."+eTrainingLevel+" (+"+(eTrainingLevel*0.1*distance).toFixed(3)+"%)<br>距離 [" + distance.toFixed(2) + "] 訓練所Lv." + trainingLevel + " (+" + (TL*5) + "%)" ; | |
tw.appendChild(dv); | |
var tbl = d.createElement("table"); | |
tbl.style.border = "2px solid black"; | |
tbl.style.borderCollapse = "collapse"; | |
tbl.style.width = "100%"; | |
var now = cgetNow(); | |
for(var i=0 ; i<OPT_TTDISTANCE_ITEMS.length ; i++){ | |
var tmp = OPT_TTDISTANCE_ITEMS[i].match(/.*\((-?[0-9]+([\.]{1}[0-9]+)?)\)/); | |
if( !tmp ) continue; | |
var speed = parseFloat(tmp[1]); | |
if( speed < 0 ) continue; | |
var tr = d.createElement("tr"); | |
var td = d.createElement("td"); | |
td.style.border = "1px solid black"; | |
td.style.textAlign = "left"; | |
td.appendChild(d.createTextNode( OPT_TTDISTANCE_ITEMS[i] )); | |
tr.appendChild(td); | |
var timeText = getTime(speed * sp, distance); | |
td = d.createElement("td"); | |
td.style.border = "1px solid black"; | |
td.style.textAlign = "right"; | |
td.appendChild(d.createTextNode(timeText)); | |
tr.appendChild(td); | |
var dayText = caddDate(now, timeText); | |
dayText = dayText.substring(5, dayText.length - 3).replace("-", "/"); | |
td = d.createElement("td"); | |
td.style.border = "1px solid black"; | |
td.style.textAlign = "right"; | |
td.appendChild(d.createTextNode(dayText)); | |
tr.appendChild(td); | |
tbl.appendChild(tr); | |
} | |
tw.appendChild(tbl); | |
$("beyond_floatpanel").appendChild(tw); | |
function getTime(speed, dist) | |
{ | |
var tmp = dist * 3600 / speed; | |
var h = Math.floor(tmp / 3600); | |
var m = Math.floor((tmp - h*3600 ) / 60 ); | |
var s = Math.floor(tmp - h*3600 - m*60 ); | |
var tim = h + ":" + | |
(m+100).toString().substr(-2) + ":" + | |
(s+100).toString().substr(-2); | |
return tim; | |
} | |
} | |
function hideToolTips() | |
{ | |
var tw = $("beyond_ToolTipsWindow"); | |
if( tw ){ | |
tw.parentNode.removeChild(tw); | |
} | |
} | |
function saveTrainingLevel() | |
{ | |
var vil_id = cgetCurrentVillageId(); | |
if( !vil_id ) return; | |
var basename = cgetCurrentBaseName(); | |
if( !basename ) return; | |
var level = 0; | |
var elevel = 0; | |
var map = $a('//area[contains(@alt, "訓練所")]');; | |
if(0 < map.length) { | |
for (var i = 0;i < map.length;i++) { | |
var lv = map[i].alt.match(/((?:遠征)?訓練所) LV.([0-9]+)/); | |
if(lv[1] == "訓練所") { | |
level = parseInt(lv[2],10); | |
} | |
else if (lv[1] == "遠征訓練所") { | |
elevel = parseInt(lv[2],10); | |
} | |
} | |
} | |
var lists = cloadData("TrainingLevels", "[]", true, true); | |
var newLists = new Array(); | |
var isNewItem = true; | |
for (var i = 0;i < lists.length;i++) { | |
if (chasVillageId(lists[i].id)) { | |
var data = lists[i]; | |
if (data.id == vil_id) { | |
data.basename = basename; | |
data.level = level; | |
data.elevel = elevel; | |
isNewItem = false; | |
} | |
newLists.push({id:data.id,basename:data.basename,level:data.level,elevel:data.elevel}); | |
} | |
if (newLists.length == 10) { | |
break; | |
} | |
} | |
if (isNewItem) { | |
newLists.push({id:vil_id,basename:basename,level:level,elevel:elevel}); | |
} | |
csaveData( "TrainingLevels", newLists, true, true ); | |
} | |
} | |
////////////////////// | |
//同盟/君主表示(ToolTips) | |
////////////////////// | |
function disp_ToolTipsAllyPerson() | |
{ | |
var links = $a('//a[(contains(@href,"village_change.php") or contains(@href,"land.php")) and not(contains(@href,"TB_inline") or contains(@href,"from"))]'); | |
if (links.length == 0) return; | |
var selfVillages =cgetVillageIds(); | |
for(var i=0 ; i<links.length ; i++) { | |
if(links[i].href.match(/village_change\.php/)) { | |
var tmp = links[i].href.match(/village_id=([0-9]+)/); | |
if( tmp && selfVillages[tmp[1]]) { | |
continue; | |
} | |
} | |
links[i].alt = ""; | |
links[i].title = ""; | |
$e(links[i], "mouseover", function(event){ showToolTips(event, this.href); } ); | |
$e(links[i], "mouseout", function(){ hideToolTips(); } ); | |
} | |
function showToolTips( evt, url ) | |
{ | |
hideToolTips(); | |
var tw = d.createElement("div"); | |
tw.id = "beyond_ToolTipsWindow"; | |
tw.style.position = "absolute"; | |
tw.style.backgroundColor = "lightyellow"; | |
tw.style.border = "outset 2px lightyellow"; | |
tw.style.fontSize = "10px"; | |
tw.style.padding = "10px"; | |
tw.style.zIndex = 1000; | |
var xxx = evt.pageX + 5; | |
if( xxx > 700 ) xxx -=50; | |
tw.style.left = xxx + "px"; | |
tw.style.top = (evt.pageY +5) + "px"; | |
var dv = d.createElement("div"); | |
dv.id = "beyond_ToolTipsWindow_base"; | |
dv.appendChild(d.createTextNode("領地 : ...")); | |
tw.appendChild( dv ); | |
dv = d.createElement("div"); | |
dv.id = "beyond_ToolTipsWindow_ally"; | |
dv.appendChild(d.createTextNode("同盟 : ...")); | |
tw.appendChild( dv ); | |
dv = d.createElement("div"); | |
dv.id = "beyond_ToolTipsWindow_user"; | |
dv.appendChild(d.createTextNode("君主 : ...")); | |
tw.appendChild( dv ); | |
$("beyond_floatpanel").appendChild(tw); | |
cajaxRequest(url, "GET", "", function(req){ | |
var tw = $("beyond_ToolTipsWindow"); | |
if( !tw ) return ; | |
var dom = d.createElement("html"); | |
dom.innerHTML = req.responseText; | |
if (navigator.userAgent.toLowerCase().indexOf('chrome') != -1) { | |
$("beyond_tmp").appendChild(dom); | |
} | |
var dt = getDatafromLandElm(dom); | |
if (navigator.userAgent.toLowerCase().indexOf('chrome') != -1) { | |
$("beyond_tmp").removeChild(dom); | |
} | |
if( !dt ) return ; | |
if( $("beyond_ToolTipsWindow_base") ) { | |
$("beyond_ToolTipsWindow_base").innerHTML = "領地 : " + dt.base + "(" + dt.x + "," + dt.y + ")"; | |
$("beyond_ToolTipsWindow_ally").innerHTML = "同盟 : " + dt.ally; | |
$("beyond_ToolTipsWindow_user").innerHTML = "君主 : " + dt.user; | |
} | |
}, function(req){ | |
// alert("サーバからエラーが返りましたよ" ); | |
}); | |
} | |
function hideToolTips() | |
{ | |
var tw = $("beyond_ToolTipsWindow"); | |
if( tw ){ | |
tw.parentNode.removeChild(tw); | |
} | |
} | |
function getDatafromLandElm(dom) | |
{ | |
var ret = new Array(); | |
var nam = $x('.//span[@class="basename"]', dom); | |
if( !nam ) return null; | |
ret["base"] = nam.innerHTML; | |
var xy = $x('.//span[@class="xy"]', dom); | |
if( !xy ) return null; | |
xy = xy.innerHTML.match(/([\-0-9]+),([\-0-9]+)/); | |
if( !xy ) return null; | |
ret["x"] = parseInt(xy[1], 10); | |
ret["y"] = parseInt(xy[2], 10); | |
var a = $a('.//div[@class="status"]//a', dom); | |
if( a.length < 2 ) { | |
ret["user"] = ""; | |
ret["ally"] = ""; | |
}else{ | |
ret["user"] = a[0].innerHTML; | |
ret["ally"] = a[1].innerHTML; | |
} | |
return ret; | |
} | |
} | |
////////////////////// | |
//プロフィール画面星表示 | |
////////////////////// | |
function disp_UserStar() | |
{ | |
if( location.pathname == "/user/" || location.pathname == "/user/index.php" ) { | |
showProfile(); | |
} | |
function showProfile() | |
{ | |
//君主名取得 | |
var uname_td = $x("//table[@class=\"commonTables\"]//tr[2]/td[2]"); | |
if( !uname_td ) return; | |
var uname = uname_td.textContent; | |
var uid = USER_ID; | |
if( URL_PARAM.user_id ) uid = URL_PARAM.user_id; | |
//table★欄追加 | |
cappendColumnForProfile("★", "beyond_star" ); | |
//内容初期設定 | |
lists = cloadData( "UserStarList" + uid, "[]", true, true ); | |
for( var i=0 ; i<lists.length ; i++){ | |
var td = $("beyond_star_" + lists[i].x + "_" + lists[i].y); | |
if( td && td.innerHTML == "" ) { | |
if( lists[i].npc ) { | |
td.innerHTML = "★" + lists[i].star; | |
td.style.color = "red"; | |
}else{ | |
td.innerHTML = "★" + lists[i].star + " (" + lists[i].wood + "," + lists[i].stone + "," + lists[i].iron + "," + lists[i].rice + ")"; | |
} | |
td.style.opacity = lists[i].star * 0.05 + 0.5; | |
} | |
} | |
//タイトルにGETを追加 | |
var th = $("beyond_star_title"); | |
if( th ) { | |
var lnk = d.createElement("a"); | |
lnk.href = "javascript:void(0)"; | |
lnk.innerHTML ="(GET)"; | |
lnk.style.fontSize = "9px"; | |
var running = false; | |
$e(lnk, "click", function() { | |
if( running ) return ; | |
if( confirm("☆情報を一気に取得するためサーバに負荷をかけます。\n何度も実行するとDOS攻撃と同じなので、実行には注意して下さい") == false ) return; | |
running = true; | |
window.setTimeout(timerFunc, 0); | |
function timerFunc() | |
{ | |
var tds = $a("//td[contains(@id, \"beyond_star_\")]"); | |
var targettd = ""; | |
var targetid = ""; | |
for( var i=0 ; i< tds.length ; i++) { | |
if( tds[i].innerHTML == "" ) { | |
targettd = tds[i]; | |
targetid = tds[i].id; | |
break; | |
} | |
} | |
if( !targetid ) { | |
alert("全ての☆情報を取得しました"); | |
running = false; | |
return; | |
} | |
var xy = targetid.match(/beyond_star_([\-0-9]+)_([\-0-9]+)/); | |
if( !xy ) { | |
GM_log("err");; | |
return ; | |
} | |
cajaxRequest("/map.php?x=" + xy[1] + "&y=" + xy[2], "GET", "", function(req) { | |
var dom = d.createElement("html"); | |
dom.innerHTML = req.responseText; | |
if (navigator.userAgent.toLowerCase().indexOf('chrome') != -1) { | |
$("beyond_tmp").appendChild(dom); | |
} | |
var area = $a("//map[@id=\"mapOverlayMap\"]//area", dom); | |
for(var i=0 ; i<area.length ; i++){ | |
var dat = area[i].getAttribute("onmouseover"); | |
dat = dat.replace(/^.*rewrite/, "setStar"); | |
dat = dat.replace(/\); .*$/, ");"); | |
//evalの中ではGM_set/getValueが出来ないので、変数を一旦外に出す形に | |
eval("dat = " + dat); | |
if( !dat ) continue; | |
var td = $("beyond_star_" + dat.x + "_" + dat.y); | |
if( !td ) { GM_log("td null err?:" + dat.x + "," + dat.y); return;}; | |
if( td.innerHTML) continue; | |
csetUserStar( uid, dat.x, dat.y, dat.star.length, dat.wood, dat.stone, dat.iron, dat.rice, dat.npc ); | |
if( dat.npc ) { | |
td.innerHTML = "★" + dat.star.length; | |
td.style.color = "red"; | |
}else{ | |
td.innerHTML = "★" + dat.star.length + " (" + dat.wood + "," + dat.stone + "," + dat.iron + "," + dat.rice + ")"; | |
} | |
td.style.opacity = dat.star.length * 0.05 + 0.5; | |
} | |
if (navigator.userAgent.toLowerCase().indexOf('chrome') != -1) { | |
$("beyond_tmp").removeChild(dom); | |
} | |
window.setTimeout(timerFunc, 0); | |
}); | |
} | |
}); | |
th.appendChild(lnk); | |
} | |
function setStar(name, user_name, jinko, xy, ally, star, kyori, wood, stone, iron, rice, npc) | |
{ | |
if( uname == user_name) { | |
var tmp = xy.match(/\(([\-0-9]+),([\-0-9]+)\)/); | |
if( tmp ) { | |
var x = tmp[1]; | |
var y = tmp[2]; | |
return {"user_name":user_name, "x":x, "y":y, "star":star, "wood":wood, "stone":stone, "iron":iron, "rice":rice, "npc":npc}; | |
} | |
} | |
return null; | |
} | |
} | |
} | |
////////////////////// | |
//プロフィール画面Level表示 | |
////////////////////// | |
function disp_UserLevel() | |
{ | |
if( location.pathname == "/user/" || location.pathname == "/user/index.php" ) { | |
if( !URL_PARAM.user_id || USER_ID == URL_PARAM.user_id ) { | |
showProfile(); | |
} | |
} | |
if( location.pathname == "/land.php" || location.pathname == "/village.php" ) { | |
//保存 | |
var spnxy = $x("//span[@class=\"xy\"]"); | |
if( !spnxy ){ | |
return; | |
} | |
var xy = spnxy.innerHTML.match(/\(([\-0-9]+),([\-0-9]+)\)/); | |
if( !xy ) { | |
return; | |
} | |
var tmp = spnxy.innerHTML.match(/レベル(\d+)/); | |
if( tmp ) { | |
// GM_log("add:" + xy[1] + "," + xy[2]); | |
csetMyLevel(xy[1], xy[2], tmp[1] ); | |
}else { | |
// GM_log("del:" + xy[1] + "," + xy[2]); | |
cdelMyLevel(xy[1], xy[2]); | |
} | |
} | |
function showProfile() | |
{ | |
//tableLevel欄追加 | |
cappendColumnForProfile("Level", "beyond_level" ); | |
//内容初期設定 | |
lists = cloadData( "MyLevelList", "[]", true, true ); | |
for( var i=0 ; i<lists.length ; i++){ | |
var td = $("beyond_level_" + lists[i].x + "_" + lists[i].y); | |
if( td ) { | |
td.innerHTML = lists[i].level; | |
} | |
} | |
updateLevelUp(); | |
updateLevelUpLink(); | |
//タイトルにGETを追加 | |
var th = $("beyond_level_title"); | |
if( th ) { | |
var lnk = d.createElement("a"); | |
lnk.href = "javascript:void(0)"; | |
lnk.innerHTML ="(GET)"; | |
lnk.style.fontSize = "9px"; | |
var running = false; | |
$e(lnk, "click", function() { | |
if( running ) return ; | |
if( confirm("Level情報を一気に取得するためサーバに負荷をかけます。\n何度も実行するとDOS攻撃と同じなので、実行には注意して下さい") == false ) return; | |
running = true; | |
window.setTimeout(timerFunc, 0); | |
function timerFunc() | |
{ | |
var tds = $a("//td[contains(@id, \"beyond_level_\")]"); | |
var targettd = ""; | |
var targetid = ""; | |
for( var i=0 ; i< tds.length ; i++) { | |
if( tds[i].innerHTML == "" ) { | |
targettd = tds[i]; | |
targetid = tds[i].id; | |
break; | |
} | |
} | |
if( !targetid ) { | |
updateLevelUp(); | |
updateLevelUpLink(); | |
running = false; | |
alert("全てのレベル情報を取得しました"); | |
return; | |
} | |
var xy = targetid.match(/beyond_level_([\-0-9]+)_([\-0-9]+)/); | |
if( !xy ) { | |
GM_log("err");; | |
return ; | |
} | |
cajaxRequest("/land.php?x=" + xy[1] + "&y=" + xy[2], "GET", "", function(req) { | |
var dom = d.createElement("html"); | |
dom.innerHTML = req.responseText; | |
if (navigator.userAgent.toLowerCase().indexOf('chrome') != -1) { | |
$("beyond_tmp").appendChild(dom); | |
} | |
var spnxy = $x("//span[@class=\"xy\"]", dom); | |
if( !spnxy ){ | |
GM_log("span class=xy err"); | |
return; | |
} | |
var xy = spnxy.innerHTML.match(/\(([\-0-9]+),([\-0-9]+)\)/); | |
if( !xy ) { | |
GM_log("xy match err"); | |
return; | |
} | |
var level = 0; | |
var tmp = spnxy.innerHTML.match(/レベル(\d+)/); | |
if( tmp ) { | |
level = tmp[1]; | |
} | |
var td = $("beyond_level_" + xy[1] + "_" + xy[2]); | |
if( !td ) { GM_log("td null err?:" + xy[1] + "," + xy[2]); return;}; | |
if( !td.innerHTML ) { | |
csetMyLevel(xy[1], xy[2], level); | |
td.innerHTML = level; | |
} | |
if (navigator.userAgent.toLowerCase().indexOf('chrome') != -1) { | |
$("beyond_tmp").removeChild(dom); | |
} | |
window.setTimeout(timerFunc, 0); | |
}); | |
} | |
}); | |
th.appendChild(lnk); | |
} | |
function updateLevelUp() | |
{ | |
//建設/破棄リストから | |
var lists = cloadData("RemoveList", "[]", true, true); | |
for(var i=0 ; i<lists.length ; i++) { | |
if( lists[i].kind != 5 ) continue; | |
var td = $("beyond_level_" + lists[i].x + "_" + lists[i].y); | |
if( !td ) continue; | |
// GM_log("td:" + td.innerHTML); | |
var level = parseInt(td.innerHTML,10); | |
if( isNaN( ""+level ) ) continue; | |
td.innerHTML = level + " (+)"; | |
} | |
} | |
function updateLevelUpLink() | |
{ | |
var img_lvup = 'data:image/gif;base64,'+ | |
'R0lGODlhFQAVAJEAAIaT6////////wAAACH5BAUUAAIALAAAAAAVABUAAAJDlICpi3YM14u0WhVY'+ | |
'Rjn4zWlJx4HgiJrooqohm67A+c727GLpp8MhXZORRD4b8NYzQj4k5pDF2/CQl6pVclU4sgBDAQA7'; | |
var tds = $a("//td[contains(@id, \"beyond_level_\")]"); | |
for( var i=0 ; i<tds.length ; i++){ | |
if( "" + parseInt(tds[i].innerHTML,10) == tds[i].innerHTML ) { | |
var lv = parseInt(tds[i].innerHTML,10); | |
if( lv < 1 || lv > 4 ) continue; | |
var mtbl = [2, 2, 2, 4]; | |
var meisei = mtbl[lv - 1]; | |
if( RES_NOW.fame >= meisei ) { | |
var xy = tds[i].id.match(/beyond_level_([\-0-9]+)_([\-0-9]+)/); | |
if( xy ) { | |
var lnk = '<a href="'+caddSessionId('/territory_proc.php?x=' + xy[1] + '&y=' + xy[2] + '&mode=lvup')+'" title="レベルアップ" onclick="'; | |
lnk += "return confirm('名声" + meisei + "を消費し、領地をレベルアップしますか?');"; | |
lnk += '"><img src="' + img_lvup + '" style="width:14px; height:14px; vertical-align:middle;"></a>'; | |
tds[i].innerHTML += lnk; | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
////////////////////// | |
//同盟ログ前後リンク追加 | |
////////////////////// | |
/*** | |
function disp_ReportNextPrior() | |
{ | |
if( location.pathname == "/alliance/alliance_log.php" ) { | |
var elms = $a("//table[@class=\"commonTables\"]//tr/td[2]/a"); | |
var lists = new Array(); | |
for( var i=0; i<elms.length ; i++) { | |
var ids = elms[i].href.match(/id=(\d+)/); | |
if( ids ) { | |
lists.push(ids[1]); | |
} | |
} | |
csaveData("AllyReports", lists, true, true); | |
} | |
if( location.pathname == "/alliance/detail.php" ) { | |
var lists = cloadData("AllyReports", "[]", true, true); | |
var pos =lists.indexOf( URL_PARAM.id ); | |
if( pos != -1 ) { | |
var tbl = d.createElement("table"); | |
tbl.width = "100%"; | |
var tmpHTML = "<tr>"; | |
if( pos < lists.length -1 ) { | |
var params = "id=" + lists[pos + 1] + | |
"&m=" + ( (URL_PARAM.m) ? URL_PARAM.m : "" ) + | |
"&p=" + ( (URL_PARAM.p) ? URL_PARAM.p : "" ); | |
tmpHTML += "<td align=\"left\"><a href=\"/alliance/detail.php?" + params + "\">前の報告書へ</a></td>" | |
} | |
if( pos > 0 ) { | |
var params = "id=" + lists[pos - 1] + | |
"&m=" + ( (URL_PARAM.m) ? URL_PARAM.m : "" ) + | |
"&p=" + ( (URL_PARAM.p) ? URL_PARAM.p : "" ); | |
tmpHTML += "<td align=\"right\"><a href=\"/alliance/detail.php?" + params + "\">次の報告書へ</a></td>" | |
} | |
tmpHTML += "</tr>"; | |
tbl.innerHTML = tmpHTML; | |
var ct = d.createElement("center"); | |
ct.appendChild(tbl); | |
var inspos = $x("//table[@summary=\"件名\"]"); | |
if( inspos ) { | |
inspos.parentNode.insertBefore(ct, inspos); | |
} | |
} | |
} | |
} | |
***/ | |
////////////////////// | |
//マップ中央表示 | |
////////////////////// | |
function disp_MapCenter() | |
{ | |
if( location.pathname != "/map.php" ) return; | |
var cx = parseInt(URL_PARAM.x, 10); | |
var cy = parseInt(URL_PARAM.y, 10); | |
if( isNaN(""+cx) ) cx = 0; | |
if( isNaN(""+cy) ) cy = 0; | |
if( cx > MAP_X_MAX ) cx = MAP_X_MAX; | |
if( cx < MAP_X_MIN ) cx = MAP_X_MIN; | |
if( cy > MAP_Y_MAX ) cy = MAP_Y_MAX; | |
if( cy < MAP_Y_MIN ) cy = MAP_Y_MIN; | |
var area_center = $x("//map[@id=\"mapOverlayMap\"]//area[@href=\"land.php?x=" + cx + "&y=" + cy + "\"]"); | |
if( !area_center ) return; | |
var dat = area_center.getAttribute("onmouseover"); | |
dat = dat.replace(/^.*overOperation/, "setCenter"); | |
dat = dat.replace(/\); .*$/, ");"); | |
eval(dat); | |
var dv = d.createElement("div"); | |
dv.style.fontSize= "10px"; | |
dv.appendChild(d.createTextNode("中央:( " + cx + " , " + cy + " )")); | |
$("mapXY").appendChild(dv); | |
function setCenter(act, x, y ) | |
{ | |
var rollover = $("rollover"); | |
var icon_c = 'data:image/png;base64,'+ | |
'iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz'+ | |
'AAAK8AAACvABQqw0mAAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMy8yNi8wOQlCSeUAAAAldEVYdFNv'+ | |
'ZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIE1YIDIwMDSHdqzPAAAEd0lEQVR4nO3by2+UVRjH'+ | |
'8U9LC0UUoqIBRAxCQUWRS0mUiBfEe70tdKMb48aYmPCfuDMmxoVrF97AiAFUEF1wURCNEUQTNQXR'+ | |
'KEpVGMq4eN6XmXlnOk7bGcCX95eckPcy532+55znck5KV7lcdiGp+1wbcLZVAOddBXDeVQDnXQVw'+ | |
'3lUA510FcN5VAOddBXDeVQDnXQVw3lUA510FcN51wQH31FwdeL5T35mOZbgiaXAUR7Afv3fkq/0v'+ | |
'1d3qafBaO7UEazEfM9CLruRZGSUcx0/YhL0dtqdjwEsxiEWYVHW/hGMC+lJMxmVJW4Jv8A72dciu'+ | |
'tgOvxANYqBb0NA7iQ7GEYTluxzWJHd24Lvntt3gXe9psX9uAB/AQrlUbCEcE6CbsFuCptooBWIl7'+ | |
'0S8GqQeLk+tDAnxnm+ycMPBqAXq1im/CKRzABnwh/LWRTguYXbgp6WuRyowvxAv4ARvxyQTtHRdw'+ | |
'D9bgfsxWCzqCz/G6CEStqiz8dh+uwhMiqk9K+p+H5/CwWC07RDwYl/GtajLuFFF3jlrQVF1JuxJ/'+ | |
'4o8x2jM9+W3aT7bvuXhWxIktwiVOjuUDrQBPxjoBOytjyHF8JWZ6rliGK5L2Jt5Q67fN1I178FjV'+ | |
'vbJYzodxAy5O7s/B08n7W0Q8aAm8GfBFSYd3qBQLqf4RQegtDImltw73Jc+2Cb9sFVby7kcYFtG7'+ | |
'D+8JoBExqI+KINcnBn4Wnkrs3Ib38Xezj3TV/FFLVFq9wj/XYmbm/WHhoyloVlNFwBqXf1WpV0xG'+ | |
'I+NT8GWYlnn2ixigTSi1UmlNxTO4Re3SHRYzukFj0FRNR3cMKhl90IbwsgAfFDOegs/EkyLwvSZW'+ | |
'W42ym4eluLXquiyW5nq8ojns2daQsGm9mIzq1LdapLk6ZYFL6v2uW+OIfL6oS+NdX8P4kV3S+/Gp'+ | |
'GKG0sxV4Ucz0RufPLM8WhcqAel/eLgqeOmWBT+JV/Cii7uXJ/WkiWg/gM7zt3AatR0QtngX9FZul'+ | |
'QauBGqWlkghOW0WaWaOSlqbhNgG+R+TaIbGk7hbRPU1Lu0XUHItmiiCUTUun1aelah1VSUt/NftA'+ | |
'o7SU1RQx23epVEGphsXSmS3Kv+pn4yk8Htda4ZE++1lMzGaNCo8GaakV4FRTBPRa9RVXqlNiE79d'+ | |
'7JKONeuwgWZggXCf5aN8g6jTPxCl5YlRe5vgiccJlSW2Riz3OZl3usWMHjZ2WMlvhsTslQVw+i+V'+ | |
'k5HtYnDHrPHslkpiGW0V/vygqKPT9LBKVEEH/ff2MFWXyJuDYkvYm3mebg93jMPeGk10P/xx0lYJ'+ | |
'Y+cL43txvdjbjnYAQAxQ9gAgVRnfiUE7bw4AUu1M2oDKEU+3AFicXB8Sm4OvBcxisQNboP446IBw'+ | |
'n11tsu+M2n2mtStpN4vNer8KeL84Akr3yJdkvj8iQP9Xh3ip9ibtRpFT54kipk+cVqY6gd/wvYi4'+ | |
'X3bInjPq9Ln0/qT1CfhZImcT0fiIOEAY7rAdZ9RV/CePnKsAzrsK4LzrggP+F1IbDJgkELkdAAAA'+ | |
'AElFTkSuQmCC'; | |
var img = d.createElement("img"); | |
img.src = icon_c; | |
img.style.zIndex = 200; | |
img.style.position = "absolute"; | |
img.style.left = x; | |
img.style.top = y; | |
if( $x("//div[@id=\"change-map-scale\"]/ul/li[@class=\"sort15 now\"]") ) { | |
img.style.width = "44px"; | |
img.style.height = "44px"; | |
} else if( $x("//div[@id=\"change-map-scale\"]/ul/li[@class=\"sort20 now\"]") ) { | |
img.style.width = "33px"; | |
img.style.height = "33px"; | |
} else { | |
img.style.width = "60px"; | |
img.style.height = "60px"; | |
img.style.zIndex = 121; | |
} | |
rollover.parentNode.insertBefore(img, rollover.nextSibling); | |
} | |
} | |
////////////////////// | |
//討伐ゲージ回復時間表示 | |
////////////////////// | |
function disp_ToubatsuRestTime() | |
{ | |
if(location.pathname != "/card/deck.php") return ; | |
ToubatsuRecoveryEstimates(); | |
function ToubatsuRecoveryEstimates() | |
{ | |
var now = cgetNow(); | |
//デッキ | |
var decks = $a("//div[@id=\"cardListDeck\"]//div[@class=\"control\"]"); | |
for( var i=0; i<decks.length ; i++ ){ | |
var stat = $x("descendant::dl/dd[3]", decks[i]); | |
if( !stat ) continue; | |
if( stat.textContent == "内政セット済" ) continue; | |
var tb = $x("descendant::dl/dd[1]/div[1]", decks[i]); | |
if( !tb ) continue; | |
tb = 500 - parseInt( tb.textContent, 10 ); | |
if( tb != 0 ) { | |
var timeText = getTime( tb ); | |
var dayText = caddDate(now, timeText); | |
var txt = "500まで" + timeText + "後 (" + dayText + "完了)"; | |
$x("descendant::dl/dt[1]", decks[i]).title = txt; | |
$x("descendant::dl/dd[1]", decks[i]).title = txt; | |
} | |
} | |
//ファイル(カード表示) | |
var files = $a("//div[@id=\"cardFileList\"]//div[@class=\"control\"]"); | |
for( var i=0; i<files.length ; i++ ){ | |
var tb = $x("descendant::dl/dd[1]/div[1]", files[i]); | |
if( !tb ) continue; | |
tb = 300 - parseInt( tb.textContent, 10 ); | |
if( tb != 0 ) { | |
var timeText = getTime( tb ); | |
var dayText = caddDate(now, timeText); | |
var txt = "300まで" + timeText + "後 (" + dayText + "完了)"; | |
$x("descendant::dl/dt[1]", files[i]).title = txt; | |
$x("descendant::dl/dd[1]", files[i]).title = txt; | |
} | |
} | |
//ファイル(x枚表示) | |
var files = $a("//table[@class=\"statusParameter1\"]//tr[7]"); | |
for( var i=0; i<files.length ; i++ ){ | |
var tb = $x("descendant::td[1]", files[i]); | |
if( !tb ) continue; | |
tb = 300 - parseInt( tb.textContent, 10 ); | |
if( tb != 0 ) { | |
var timeText = getTime( tb ); | |
var dayText = caddDate(now, timeText); | |
var txt = "300まで" + timeText + "後 (" + dayText + "完了)"; | |
$x("descendant::th[1]", files[i]).title = txt; | |
$x("descendant::td[1]", files[i]).title = txt; | |
} | |
} | |
window.setTimeout(function() { ToubatsuRecoveryEstimates(); }, 60*1000); | |
} | |
function getTime(toubatsu) | |
{ | |
var tmp = toubatsu * 216; | |
var h = Math.floor(tmp / 3600); | |
var m = Math.floor((tmp - h*3600 ) / 60 ); | |
var s = Math.floor(tmp - h*3600 - m*60 ); | |
var tim = h + ":" + | |
(m+100).toString().substr(-2) + ":" + | |
(s+100).toString().substr(-2); | |
return tim; | |
} | |
} | |
////////////////////// | |
//書簡/報告書削除機能 | |
////////////////////// | |
function disp_DeleteMessages() | |
{ | |
if( location.pathname == "/message/detail.php" ) { | |
//書簡削除ボタン | |
addDeleteMessageButton(); | |
} | |
if( location.pathname == "/report/detail.php" ) { | |
//報告書削除ボタン | |
addDeleteReportButton(); | |
} | |
function addDeleteMessageButton() | |
{ | |
var frm = d.createElement("form"); | |
frm.method = "post"; | |
frm.action = "/message/delete.php"; | |
var m = d.createElement("input"); | |
m.type = "hidden"; | |
m.name = "mode"; | |
m.value = URL_PARAM.m; | |
var p = d.createElement("input"); | |
p.type = "hidden"; | |
p.name = "p"; | |
p.value = URL_PARAM.p; | |
var c = d.createElement("input"); | |
c.type = "hidden"; | |
c.name = "chk[]"; | |
c.value = URL_PARAM.id; | |
var btn = d.createElement("input"); | |
btn.type = "submit"; | |
btn.value = "削除"; | |
btn.setAttribute("onClick", "return window.confirm('この書簡を削除します。よろしいですか?');" ); | |
frm.appendChild(m); | |
frm.appendChild(p); | |
frm.appendChild(c); | |
frm.appendChild(btn); | |
var li = d.createElement("li"); | |
li.className = "last"; | |
li.appendChild(frm); | |
var menu = $x("//ul[@id=\"statMenu\"]"); | |
menu.appendChild(li); | |
} | |
function addDeleteReportButton() | |
{ | |
var frm = d.createElement("form"); | |
frm.method = "post"; | |
frm.action = "/report/list.php"; | |
var m = d.createElement("input"); | |
m.type = "hidden"; | |
m.name = "m"; | |
m.value = URL_PARAM.m; | |
var p = d.createElement("input"); | |
p.type = "hidden"; | |
p.name = "p"; | |
p.value = URL_PARAM.p; | |
var u = d.createElement("input"); | |
u.type = "hidden"; | |
u.name = "u"; | |
u.value = URL_PARAM.u; | |
var c = d.createElement("input"); | |
c.type = "hidden"; | |
c.name = "chk[]"; | |
c.value = URL_PARAM.id; | |
var btn = d.createElement("input"); | |
btn.type = "submit"; | |
btn.name = "remove_checked"; | |
btn.value = "削除"; | |
btn.setAttribute("onClick", "return window.confirm('この報告書を削除します。よろしいですか?');" ); | |
frm.appendChild(m); | |
frm.appendChild(p); | |
frm.appendChild(c); | |
frm.appendChild(u); | |
frm.appendChild(btn); | |
// GM_log("a"); | |
var h2 = $x("//h2"); | |
h2.parentNode.insertBefore(frm, h2.nextSibling); | |
} | |
} | |
////////////////////// | |
//出発時刻計算 | |
////////////////////// | |
function disp_TSendTime() | |
{ | |
if( location.pathname != "/facility/castle_send_troop.php" ) return; | |
var td = $x('//table[@class="fighting_about"]//tr[1]/td[1]'); | |
if( !td ) return ; | |
var tim = td.textContent.match(/到着まで[:|:][\s| ]*(\d+):(\d+):(\d+)[\s| ]*到達時間/); | |
if( !tim ) return; | |
var area_up_timer = $("area_up_timer0"); | |
if( !area_up_timer ) return; | |
var day = area_up_timer.textContent.match(/(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)/); | |
if( !day ) return; | |
//ベース作成 | |
var div = d.createElement("div"); | |
div.style.margin = "5px"; | |
div.appendChild(d.createTextNode("到着時刻:")); | |
createText(div, "beyond_send_y", day[1]); | |
div.appendChild(d.createTextNode("-")); | |
createText(div, "beyond_send_m", day[2]); | |
div.appendChild(d.createTextNode("-")); | |
createText(div, "beyond_send_d", day[3]); | |
div.appendChild(d.createTextNode(" ")); | |
createText(div, "beyond_send_h", ""); | |
div.appendChild(d.createTextNode(":")); | |
createText(div, "beyond_send_mi", ""); | |
div.appendChild(d.createTextNode(":")); | |
createText(div, "beyond_send_s", ""); | |
div.appendChild(d.createTextNode(" ")); | |
var btn = d.createElement("input"); | |
btn.type = "button"; | |
btn.id = "beyond_send_button"; | |
btn.value = "出発時刻計算"; | |
div.appendChild(btn); | |
div.appendChild(d.createElement("br")); | |
div.appendChild(d.createTextNode("出発時刻:")); | |
var spn = d.createElement("span"); | |
spn.id = "beyond_send_time"; | |
div.appendChild(spn); | |
td.appendChild(div); | |
$e(btn, "click", function() { | |
if( $("beyond_send_y").value == "" ) $("beyond_send_y").value = "0"; | |
if( $("beyond_send_m").value == "" ) $("beyond_send_m").value = "0"; | |
if( $("beyond_send_d").value == "" ) $("beyond_send_d").value = "0"; | |
if( $("beyond_send_h").value == "" ) $("beyond_send_h").value = "0"; | |
if( $("beyond_send_mi").value == "" ) $("beyond_send_mi").value = "0"; | |
if( $("beyond_send_s").value == "" ) $("beyond_send_s").value = "0"; | |
var y = $("beyond_send_y").value; | |
var m = $("beyond_send_m").value; | |
var d = $("beyond_send_d").value; | |
var h = $("beyond_send_h").value; | |
var mi =$("beyond_send_mi").value; | |
var s = $("beyond_send_s").value; | |
// if( !y || !m || !d || !h || !mi || !s ) { | |
// alert("全て入力して下さい"); | |
// return; | |
// } | |
y = parseInt(y, 10); | |
m = parseInt(m, 10); | |
d = parseInt(d, 10); | |
h = parseInt(h, 10); | |
mi =parseInt(mi, 10); | |
s = parseInt(s, 10); | |
if( isNaN(""+y) || isNaN(""+m) || isNaN(""+d) || isNaN(""+h) || isNaN(""+mi) || isNaN(""+s) ) { | |
alert("数字で入力して下さい"); | |
return; | |
} | |
var dt = new Date(y, m - 1, d, h - parseInt(tim[1],10) , mi - parseInt(tim[2],10), s - parseInt(tim[3],10) ); | |
$("beyond_send_time").innerHTML = | |
dt.getFullYear() + "-" + (dt.getMonth()+1) + "-" + dt.getDate() + " " + | |
(dt.getHours()+100).toString().substr(-2) + ":" + | |
(dt.getMinutes()+100).toString().substr(-2) + ":" + | |
(dt.getSeconds()+100).toString().substr(-2); | |
} ); | |
function createText(container, id, def) | |
{ | |
var tb = d.createElement("input"); | |
tb.type = "text"; | |
tb.value = def; | |
tb.id = id; | |
tb.size = 3; | |
container.appendChild(tb); | |
} | |
} | |
////////////////////// | |
//小さいボタン | |
////////////////////// | |
function disp_SmallButton() | |
{ | |
var btnConfs = { | |
btn_buycp : { | |
width : 26, | |
start : -8 | |
}, | |
btn_special : { | |
width : 26, | |
start : -29 | |
}, | |
btn_getbusho : { | |
width : 20, | |
start : -2 | |
}, | |
btn_yorodudas : { | |
width : 25, | |
start : -2 | |
}, | |
btn_bushoduel : { | |
width : 27, | |
start : -1 | |
}, | |
btn_cpdeposit : { | |
width : 20, | |
start : -20 | |
}, | |
btn_invitefriend : { | |
width : 27, | |
start : -9 | |
} | |
}; | |
if (isNarrow) { | |
btnConfs.btn_buycp.start = -6; | |
btnConfs.btn_special.start = -26; | |
} | |
var btnImages = $a('(id("sidebar")/ul/li | id("btn_area_box"))//img'); | |
for (var i =0; i < btnImages.length;i++) { | |
var btnImage = btnImages[i]; | |
for (var key in btnConfs) { | |
if (btnImage.src.indexOf(key) < 0) { | |
continue; | |
} | |
var btnConf = btnConfs[key]; | |
var btn = btnImage.parentNode; | |
var btnHeight = 22; | |
if (isNarrow) btnHeight = 25; | |
btnImage.style.display = "none"; | |
btn.style.width = btnConf.width+"px"; | |
btn.style.height = btnHeight+"px"; | |
btn.style.marginLeft = "2px"; | |
btn.style.marginBottom = "2px"; | |
btn.style.background = 'url("'+btnImage.src+'") no-repeat '+btnConf.start+'px 0px'; | |
btn.style.display = "block"; | |
var floatNode = btn; | |
if (!isNarrow) floatNode = btn.parentNode; | |
floatNode.style.cssFloat = "left"; | |
if (i == 0) { | |
btn.style.marginLeft = "0px"; | |
} | |
} | |
} | |
if (!isNarrow) cgetElementSibling(floatNode.parentNode,0).style.clear = "both"; | |
//状況の縮小 | |
var tr = $x('//table[@class="situationTable"]//tr[1]'); | |
var tds = $a('//table[@class="situationTable"]//tr[2]//img[not(contains(@src,"sit_blank"))]/ancestor::td'); | |
if( tr && tds ) { | |
for( var i=0; i< tds.length ; i++) { | |
tr.appendChild(tds[i]); | |
} | |
cgetElementSibling(tr,0).style.display = "none"; | |
var imgs = $a(".//img", tr); | |
for( var i=0; i< imgs.length ; i++) { | |
imgs[i].style.width = "20px"; | |
imgs[i].style.height = "20px"; | |
if( !imgs[i].src.match(/(_no\.gif)$/) ) { | |
Pika_elementQueue.push(imgs[i]); | |
} | |
} | |
} | |
//拠点・生産・簡易出兵先の伸縮 | |
var targetNames = ["base","production","easydeploy"]; | |
var targets = { | |
base : { | |
img : '(id("lodgment") | id("sidebar"))//img[contains(@src,"icon_base")]', | |
inner : 'ancestor::div[contains(@class,"Head")]/following-sibling::div[contains(@class,"Inner")]' | |
}, | |
production : { | |
img : 'id("sidebar")//img[contains(@src,"icon_production")]', | |
inner : 'ancestor::div[contains(@class,"Head")]/following-sibling::div[contains(@class,"Inner")]' | |
}, | |
easydeploy : { | |
img : '(//div[@class="footer_box"] | id("sidebar"))//img[contains(@src,"icon_easydeploy")]', | |
inner : 'ancestor::div[contains(@class,"Head")]/following-sibling::div[contains(@class,"Inner")] | id("map_bookmark")' | |
} | |
}; | |
for(var i = 0;i < targetNames.length;i++) { | |
if (isNarrow && targetNames[i] == 'base' && location.pathname.search(/^\/(village|map|land)\.php/) < 0) { | |
continue; | |
} | |
var target = targets[targetNames[i]]; | |
var base_img = $x(target.img); | |
if( !base_img ) continue; | |
var base_inner = $x(target.inner, base_img); | |
if( !base_inner ) continue; | |
var oc = cloadData( "sidebox_oc" + i , "", true); | |
if( oc ) { | |
base_inner.style.display = "none"; | |
base_img.style.opacity = 0.3; | |
} | |
(function(inner, no) { | |
$e(base_img, "click", function(e) { | |
var ocs = ""; | |
if( inner.style.display == "none" ){ | |
inner.style.display = ""; | |
this.style.opacity = 1; | |
}else{ | |
inner.style.display = "none"; | |
this.style.opacity = 0.3; | |
ocs = "1"; | |
} | |
csaveData( "sidebox_oc" + no , ocs, true); | |
}); | |
})(base_inner, i); | |
} | |
} | |
////////////////////// | |
//出兵マップ表示 | |
////////////////////// | |
function disp_AttackMap() | |
{ | |
var img_atk = 'data:image/gif;base64,'+ | |
'R0lGODlhPAA8AIAAAP/M/////yH5BAUUAAEALAAAAAA8ADwAAAJ7jI+py+0Po5y02ouz3rz7D4bi'+ | |
'SJbmiabqyrbuC8fyTNf2jef6zvc8AATsgsEckYg7Fm9KoPE4XCakMCeDqmpCoSxt0yBsWQNj6bgb'+ | |
'dmJl6jUN+RSe3+V59ayMYZdwevjQd/c3ZbfiRlaYlXiYcsglFugjOUlZaXmJWVEAADs='; | |
var img_mov = 'data:image/gif;base64,'+ | |
'R0lGODlhPAA8AIAAADP//////yH5BAUUAAEALAAAAAA8ADwAAAJ7jI+py+0Po5y02ouz3rz7D4bi'+ | |
'SJbmiabqyrbuC8fyTNf2jef6zvc8AATsgsEckYg7Fm9KoPE4XCakMCeDqmpCoSxt0yBsWQNj6bgb'+ | |
'dmJl6jUN+RSe3+V59ayMYZdwevjQd/c3ZbfiRlaYlXiYcsglFugjOUlZaXmJWVEAADs='; | |
if( location.pathname == "/facility/unit_status.php" ) { | |
var tds = $a("//table[@summary=\"出撃中の兵士\" or @summary=\"移動中の兵士\"]/tbody/tr[position()>1]/td[1]"); | |
for(var i=0; i<tds.length ; i+=3) { | |
//0:場所 1:時間 2:兵種 | |
// GM_log(tds[i+0].textContent); | |
var xy = tds[i+0].innerHTML.match(/[\(|(](-?\d+),(-?\d+)[)|\)]$/); | |
if( !xy ) continue; | |
var tim = tds[i+1].innerHTML.match(/(\d+\-\d+\-\d+ \d+:\d+:\d+)/); | |
if( !tim ) continue; | |
var kind = 0; | |
if( tds[i].parentNode.parentNode.parentNode.getAttribute("summary") == "移動中の兵士" ) | |
kind = 1; | |
addList(tim[1], parseInt(xy[1],10), parseInt(xy[2],10), kind ); | |
var a = $x("descendant::div/a[contains(text(), \"キャンセルする\")]", tds[i+1]); | |
if( a ) { | |
(function(tim, x, y) { | |
$e(a, "click", function(){ | |
var lists = cloadData("AttackList", "[]", true, true); | |
for(var i=0 ; i<lists.length ; i++) { | |
if( lists[i].x == x && lists[i].y == y && lists[i].time == tim ) { | |
lists.splice(i,1); | |
csaveData( "AttackList", lists, true, true ); | |
// GM_log("deleted"); | |
break; | |
} | |
} | |
} ); | |
})(tim[1], parseInt(xy[1],10), parseInt(xy[2],10)); | |
} | |
} | |
return; | |
} | |
var lists = cloadData("AttackList", "[]", true, true); | |
lists = checkList(lists); //時間を過ぎたものを削除 | |
if( location.pathname == "/map.php" ) { | |
//地図に表示 | |
var type = 1; | |
if( $x("//div[@id=\"change-map-scale\"]/ul/li[@class=\"sort15 now\"]") ) type=2; | |
else if( $x("//div[@id=\"change-map-scale\"]/ul/li[@class=\"sort20 now\"]") ) type=3; | |
if( lists.length ) { | |
var cx = parseInt(URL_PARAM.x,10); | |
var cy = parseInt(URL_PARAM.y,10); | |
if( cx > MAP_X_MAX ) cx = MAP_X_MAX; | |
if( cx < MAP_X_MIN ) cx = MAP_X_MIN; | |
if( cy > MAP_Y_MAX ) cy = MAP_Y_MAX; | |
if( cy < MAP_Y_MIN ) cy = MAP_Y_MIN; | |
var map = $x("//div[@id=\"mapsAll\"]"); | |
for(var i=0 ; i<lists.length ; i++) { | |
var no = cgetMapNofromXY(lists[i].x, lists[i].y, cx, cy, type ); | |
if( !no ) continue; | |
var img = document.createElement("img"); | |
img.className = "mapAll" + no; | |
if( lists[i].kind == 1 ) { | |
img.src = img_mov; | |
}else{ | |
img.src = img_atk; | |
} | |
img.title = lists[i].time; | |
// img.style.zIndex = 1000; | |
map.appendChild(img); | |
var area = $x("//map[@id=\"mapOverlayMap\"]/area[contains(@href, \"?x=" + lists[i].x + "&y=" + lists[i].y + "\")]"); | |
if( area ){ | |
area.title += " 到着予定:" + lists[i].time; | |
area.alt += " 到着予定:" + lists[i].time; | |
} | |
} | |
} | |
} | |
function addList(tim, x, y, kind) | |
{ | |
var lists = cloadData("AttackList", "[]", true, true); | |
var i; | |
for(i=0 ; i<lists.length ; i++) { | |
if(lists[i].x == x && lists[i].y == y ) { | |
if( lists[i].time < tim ) { | |
lists[i].time = tim; | |
lists[i].kind = kind; | |
break; | |
}else{ | |
return; | |
} | |
} | |
} | |
if( i == lists.length ) { | |
lists.push({"x":x, "y":y, "time":tim, "kind":kind } ); | |
} | |
csaveData( "AttackList", lists, true, true ); | |
} | |
function checkList(lists) | |
{ | |
var dt = new Date(); | |
var ntime = dt.getFullYear() + "-" + | |
(dt.getMonth()+101).toString().substr(-2) + "-" + | |
(dt.getDate()+100).toString().substr(-2) + " " + | |
(dt.getHours()+100).toString().substr(-2) + ":" + | |
(dt.getMinutes()+100).toString().substr(-2) + ":" + | |
(dt.getSeconds()+100).toString().substr(-2); | |
var deleted = false; | |
for(var i=0 ; i<lists.length ; i++) { | |
if( lists[i].time < ntime ) { | |
lists.splice(i,1); | |
i--; | |
deleted = true; | |
} | |
} | |
if( deleted ) { | |
if( lists.length ) { | |
csaveData( "AttackList", lists, true, true ); | |
} else { | |
cdelData("AttackList", true ); | |
} | |
} | |
return lists; | |
} | |
} | |
////////////////////// | |
//同一カード合成ボタン | |
////////////////////// | |
function disp_CardCombine() | |
{ | |
if( location.pathname != "/union/result_lv.php" && | |
location.pathname != "/union/result_learn.php" && | |
location.pathname != "/union/result_remove.php") { | |
return; | |
} | |
var ins = $a("//div[@class=\"back\"]")[1]; | |
var skill2 = $x("//div[@class=\"skill2\"]"); | |
var skill3 = $x("//div[@class=\"skill3\"]"); | |
var div1 = d.createElement("div"); | |
div1.className = "cardColmn"; | |
div1.align = "center"; | |
var div2 = d.createElement("div"); | |
div2.className = "control"; | |
div1.appendChild(div2); | |
var a = d.createElement("a"); | |
a.href = caddSessionId("lvup.php?cid=" + URL_PARAM.cid); | |
a.title = "スキルLvを上げる"; | |
a.className = "skillLvUp"; | |
a.appendChild(d.createTextNode("スキルLvを上げる")); | |
div2.appendChild(a); | |
if( !skill3 ) { | |
a = d.createElement("a"); | |
a.href = caddSessionId("learn.php?cid=" + URL_PARAM.cid); | |
a.title = "新しいスキルを習得する"; | |
a.className = "skillLearn"; | |
a.appendChild(d.createTextNode("新しいスキルを習得する")); | |
div2.appendChild(a); | |
} | |
if( skill2 ) { | |
a = d.createElement("a"); | |
a.href = caddSessionId("remove.php?cid=" + URL_PARAM.cid); | |
a.title = "スキルを削除する"; | |
a.className = "skillDelete"; | |
a.appendChild(d.createTextNode("スキルを削除する")); | |
div2.appendChild(a); | |
} | |
ins.parentNode.insertBefore(div1, ins.nextSibling); | |
} | |
////////////////////// | |
//ヨロズダス表示 | |
////////////////////// | |
function disp_PikaYorozu() | |
{ | |
if( location.pathname == "/busyodas/b3kuji.php" ) { | |
Pika_updateYorozudasState(); | |
} | |
if( location.pathname == "/busyodas/b3kuji_result.php") { | |
Pika_updateYorozudasState2(); | |
} | |
Pika_displayYorozudasState(); | |
} | |
////////////////////// | |
//HP回復時間表示 | |
////////////////////// | |
function disp_PikaHPRestTime() | |
{ | |
if(location.pathname != "/card/deck.php") return ; | |
Pika_displayRecoveryEstimates(); | |
} | |
////////////////////// | |
//拠点生産量表示 | |
////////////////////// | |
function disp_SuzanSeisan() | |
{ | |
var icon = IMG_DIR + "common/sidebar/icon_production.gif"; | |
var elms = ccreateSideBox("beyond_sidebox_suzanseisan", icon, "拠点生産"); | |
if(location.pathname == "/village.php") { | |
Suzan_Seisan(elms.sideBoxInner); | |
} | |
} | |
///////////////////////////////////////////////////////////////////////////// | |
//common functions | |
///////////////////////////////////////////////////////////////////////////// | |
function cgetCurrentBaseName() | |
{ | |
var xy = cgetCurrentBaseXY(); | |
return VILLAGES_INFO[(xy.x+"_"+xy.y).replace(/-/g,"m")].basename; | |
} | |
function cgetCurrentBaseXY() | |
{ | |
var nowLoc = $x('id("gnavi")//a[contains(@href,"map.php")]'); | |
if (!nowLoc) return null; | |
var xy = nowLoc.href.match(/x=([\-0-9]+)&y=([\-0-9]+)/i); | |
if( xy ) { | |
return {'x':parseInt(xy[1], 10), 'y':parseInt(xy[2], 10)}; | |
} | |
} | |
function cgetDistanceFromBase(x, y) | |
{ | |
if( BASE_X == -9999 ) { | |
var xy = cgetCurrentBaseXY(); | |
if( xy ) { | |
BASE_X = xy.x; | |
BASE_Y = xy.y; | |
} | |
} | |
if( BASE_X != -9999 ) { | |
var a = parseInt(x, 10); | |
var b = parseInt(y, 10); | |
return Math.sqrt(Math.pow(BASE_X - a, 2) + Math.pow(BASE_Y - b, 2)); | |
} | |
return -1; | |
} | |
function cupdateCurrentResources() | |
{ | |
var nowNodes = PRE_LOAD_NODES['nowResources']; | |
RES_NOW["wood"] = parseInt( nowNodes["wood"].innerHTML, 10 ); | |
RES_NOW["stone"] = parseInt( nowNodes["stone"].innerHTML, 10 ); | |
RES_NOW["iron"] = parseInt( nowNodes["iron"].innerHTML, 10 ); | |
RES_NOW["rice"] = parseInt( nowNodes["rice"].innerHTML, 10 ); | |
} | |
function cgetNow() | |
{ | |
var stimeText = PRE_LOAD_NODES['serverTime'].innerHTML; | |
var now = new Date(); | |
var nowTimeAry = stimeText.replace(/^\s*|\s*$/,'').split(":"); | |
now.setHours(parseInt(nowTimeAry[0],10),parseInt(nowTimeAry[1],10),parseInt(nowTimeAry[2],10)); | |
return now; | |
} | |
function caddDate(baseDate, timetxt) | |
{ | |
var tim = timetxt.match(/^(\d+):(\d+):(\d+)/); | |
if( !tim ) return ""; | |
var dt = new Date(baseDate.getFullYear(), | |
baseDate.getMonth(), | |
baseDate.getDate(), | |
baseDate.getHours() + parseInt(tim[1],10), | |
baseDate.getMinutes() + parseInt(tim[2],10), | |
baseDate.getSeconds() + parseInt(tim[3],10) ); | |
return dt.getFullYear() + "-" + (dt.getMonth()+1) + "-" + dt.getDate() + " " + | |
(dt.getHours()+100).toString().substr(-2) + ":" + | |
(dt.getMinutes()+100).toString().substr(-2) + ":" + | |
(dt.getSeconds()+100).toString().substr(-2); | |
} | |
//状態保存用のクッキー | |
function csetCookie(key, data) | |
{ | |
sday = new Date(); | |
sday.setTime(sday.getTime() + (120 * 1000 * 60 * 60 * 24)); | |
d.cookie = key + "=" + escape(data) + ";expires=" + sday.toGMTString() + "; path=/"; | |
} | |
function cgetCookie(key) | |
{ | |
var data = ""; | |
var start = d.cookie.indexOf(key + "="); | |
if (start != -1){ | |
var end = d.cookie.indexOf(";", start); | |
data = unescape(d.cookie.substring(start + key.length + 1, end)); | |
} | |
return data; | |
} | |
function cdelCookie(key) | |
{ | |
d.cookie = key + "=;expires=Thu,01-Jan-70 00:00:01 GMT; path=/"; | |
} | |
function csetUserXY(aid, uid, x, y) | |
{ | |
var allylists = cloadData( "allyXYAllyList", "[]", true, true ); | |
if( allylists.indexOf(aid) == -1 ) { | |
allylists.push(aid); | |
csaveData( "allyXYAllyList", allylists, true, true ); | |
} | |
var lists = cloadData( "allyXYList" + aid, "[]", true, true ); | |
for(var i=0 ; i<lists.length ; i++) { | |
if( lists[i].id == uid ) { | |
return; | |
} | |
} | |
lists.push({"id":uid, "x":x, "y":y}); | |
csaveData( "allyXYList" + aid, lists, true, true ); | |
} | |
function cdeleteUserXY(aid) | |
{ | |
var allylists = cloadData( "allyXYAllyList", "[]", true, true ); | |
var idx = allylists.indexOf(aid); | |
if( idx != -1 ) { | |
allylists.splice(idx,1); | |
csaveData( "allyXYAllyList", allylists, true, true ); | |
} | |
cdelData( "allyXYList" + aid, true ); | |
} | |
function cresetUserXY() | |
{ | |
var allylists = cloadData( "allyXYAllyList", "[]", true, true ); | |
for(var i=0 ; i<allylists.length ; i++) { | |
cdelData( "allyXYList" + allylists[i], true ); | |
} | |
cdelData( "allyXYAllyList", true ); | |
} | |
function cgetXYHtml(x,y) | |
{ | |
var img_send = IMG_DIR + "report/icon_go.gif"; | |
var img_mp = IMG_DIR + "report/icon_scout.gif"; | |
var m = ""; | |
var dist = cgetDistanceFromBase(x, y); | |
if( dist != -1 ) { | |
m = " 距離[" + dist.toFixed(2) + "]"; | |
} | |
var txt = ''; | |
txt += '<a href="'+caddSessionId('/land.php?x=' + x + '&y=' + y + '#ptop')+'" title="表示" style="color:#0099cc; text-decoration: none;" onmouseover="'; | |
txt += "this.style.textDecoration='underline';"+'" onmouseout="'+"this.style.textDecoration='none';"+'">' + x + ',' + y + '</a>'; | |
txt += '<a href="'+caddSessionId('/map.php?x=' + x + '&y=' + y + '#ptop')+'" title="マップ' + x + ',' + y + '"><img src="' + img_mp + '" style="width:12px; height:12px; vertical-align:middle;"></a>'; | |
txt += '<a href="'+caddSessionId('/facility/castle_send_troop.php?x=' + x + '&y=' + y + '#ptop')+'" title="兵を送る' + x + ',' + y + m + '">'; | |
txt += '<img src="' + img_send + '" style="width:12px; height:12px; vertical-align:middle;"></a>'; | |
return txt; | |
} | |
function cajaxRequest(url, method, param, func_success, func_fail){ | |
var req = new XMLHttpRequest(); | |
req.onreadystatechange = function() { | |
if (req.readyState == 4 && req.status == 200){ | |
func_success(req); | |
} | |
else if (req.readyState == 4 && req.status != 200){ | |
func_fail(req); | |
} | |
}; | |
if (SID) { | |
var sdata = method.toLowerCase() == 'get' ? url : param; | |
if (sdata.search(/(\?|&)SSID=[^&]+&?/i) < 0) { | |
if (method.toLowerCase() == 'get') { | |
url += (0 <= url.indexOf('?')) ? '&' : '?'; | |
url += SID; | |
} | |
else { | |
if (typeof param != 'string') param = ''; | |
if (0 < param.length) param += '&'; | |
param += SID; | |
} | |
} | |
} | |
req.open(method, url, true); | |
if (method == 'POST'){ | |
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); | |
} | |
req.send(param); | |
} | |
function str2csvstr(str) { | |
var csvstr; | |
csvstr = str.replace(/^[\s ]+|[\s ]+$/g, ""); | |
csvstr = csvstr.replace(/\"/g, "\"\""); | |
if (csvstr.indexOf(",") != -1) { | |
csvstr = "\"" + csvstr + "\""; | |
} | |
return csvstr; | |
} | |
function cgetElementXY(elm) { | |
if( !elm ) return null; | |
var xx = 0; | |
var yy = 0; | |
while(elm){ | |
xx += elm.offsetLeft; | |
yy += elm.offsetTop; | |
elm = elm.offsetParent; | |
} | |
return {"x":xx, "y":yy}; | |
} | |
function cgetMapNofromXY(x, y, base_x, base_y, type) | |
{ | |
if( isNaN(""+base_x) ) base_x = 0; | |
if( isNaN(""+base_y) ) base_y = 0; | |
//map.php専用のXY座標→mapAll999 | |
var sc = 11; | |
var hosei = 0; | |
if( type == 2 ) { | |
sc = 15; | |
} else if( type == 3 ) { | |
sc = 20; | |
hosei = 1; | |
} | |
var hw = Math.floor( (sc - 1) / 2 ); | |
var no = ""; | |
if( x >= base_x - hw && x <= base_x - hw + sc - 1 && | |
y >= base_y - hw - hosei && y <= base_y - hw + sc - 1 - hosei ) { | |
no = (x - base_x + hw) * sc + (base_y + hw - y ) + 1; | |
if( no < 10 ) no = "0" + no; | |
else no = "" + no; | |
} | |
return no; | |
} | |
function ccreateCheckBox(container, id, def, text, title, left ) | |
{ | |
left += 2; | |
var dv = d.createElement("div"); | |
dv.style.padding = "2px"; | |
dv.style.paddingLeft= left + "px"; | |
dv.title = title; | |
var cb = d.createElement("input"); | |
cb.type = "checkbox"; | |
cb.id = id; | |
cb.value = 1; | |
if( def ) cb.checked = true; | |
var lb = d.createElement("label"); | |
lb.htmlFor = id; | |
var tx = d.createTextNode(text); | |
lb.appendChild( tx ); | |
dv.appendChild(cb); | |
dv.appendChild(lb); | |
container.appendChild(dv); | |
return cb; | |
} | |
function ccreateTextBox(container, id, def, text, title, size, left ) | |
{ | |
left += 2; | |
var dv = d.createElement("div"); | |
dv.style.padding = "2px"; | |
dv.style.paddingLeft= left + "px"; | |
dv.title = title; | |
var tb = d.createElement("input"); | |
tb.type = "text"; | |
tb.id = id; | |
tb.value = def; | |
tb.size = size; | |
var tx = d.createTextNode(text); | |
tx.title = title; | |
dv.appendChild(tx); | |
dv.appendChild(tb); | |
container.appendChild(dv); | |
return tb; | |
} | |
function ccreateComboBox(container, id, sels, def, text, title, left ) | |
{ | |
left += 2; | |
var dv = d.createElement("div"); | |
dv.style.padding = "2px"; | |
dv.style.paddingLeft= left + "px"; | |
dv.title = title; | |
var sel = d.createElement("select"); | |
sel.id = id; | |
for(var i=0; i<sels.length; i++){ | |
var opt = d.createElement("option"); | |
opt.value = sels[i]; | |
opt.appendChild(d.createTextNode(sels[i])); | |
sel.appendChild(opt); | |
} | |
if( def ) sel.value = def; | |
var tx = d.createTextNode(text); | |
tx.title = title; | |
dv.appendChild(tx); | |
dv.appendChild(sel); | |
container.appendChild(dv); | |
return sel; | |
} | |
function ccreateButton(container, text, title, func) | |
{ | |
var btn = d.createElement("input"); | |
btn.style.padding = "1px"; | |
btn.type = "button"; | |
btn.value = text; | |
btn.title = title; | |
container.appendChild(d.createTextNode(" ")); | |
container.appendChild(btn); | |
container.appendChild(d.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 ccreateSideBox(id, img, title) | |
{ | |
var icon_box = 'data:image/gif;base64,'+ | |
'R0lGODlhCwALAJEAAP///zMzM////wAAACH5BAUUAAIALAAAAAALAAsAAAIVjI8Gy6z5AoAyplkh'+ | |
'xteiTW1NQyUFADs='; | |
var conf = cloadData( id + "conf" , '{"float":false, "open":true, "x":"", "y":"", "pos":99 }', true, true ); | |
var elm_box = d.createElement("div"); | |
elm_box.id = id; | |
elm_box.className = "sideBox"; | |
var elm_boxHead = d.createElement("div"); | |
elm_boxHead.className = "sideBoxHead"; | |
elm_box.appendChild(elm_boxHead); | |
if (isNarrow) { | |
elm_box.style.cssFloat = "left"; | |
elm_box.style.marginLeft = "10px"; | |
} | |
var elm_h3 = d.createElement("h3"); | |
var elm_strong = d.createElement("strong"); | |
var elm_img = d.createElement("img"); | |
elm_img.src = img; | |
elm_strong.appendChild(elm_img); | |
elm_strong.appendChild(d.createTextNode(title)); | |
var elm_span=d.createElement("span"); | |
elm_span.className = "beyond_panel_ctlbox"; | |
var elm_img_up = d.createElement("img"); | |
elm_img_up.src= IMG_DIR + "trade/icon_up.gif"; | |
elm_img_up.title = "パネルを上に"; | |
elm_img_up.id = id + "up"; | |
var elm_img_down = d.createElement("img"); | |
elm_img_down.src= IMG_DIR + "trade/icon_down.gif"; | |
elm_img_down.title = "パネルを下に"; | |
elm_img_down.id = id + "down"; | |
var elm_img_box = d.createElement("img"); | |
elm_img_box.src= icon_box; | |
elm_img_box.title = "フローティング/ドッキングの切り替え"; | |
elm_span.appendChild(elm_img_up); | |
elm_span.appendChild(elm_img_box); | |
elm_span.appendChild(elm_img_down); | |
elm_strong.appendChild(elm_span); | |
elm_h3.appendChild(elm_strong); | |
elm_boxHead.appendChild(elm_h3); | |
var elm_boxInner = d.createElement("div"); | |
elm_boxInner.className = "sideBoxInner"; | |
if( !conf.open ) { | |
elm_boxInner.style.display = "none"; | |
elm_img.style.opacity = 0.3; | |
} | |
elm_box.appendChild(elm_boxInner); | |
$e(elm_img, "click", function(){ | |
var sidebox = $(id); | |
var op = false; | |
if( !sidebox ) return; | |
var inner = $x('.//div[contains(@class,"sideBoxInner")]', sidebox); | |
if( !inner ) return; | |
if( inner.style.display == "none" ){ | |
inner.style.display = ""; | |
this.style.opacity = 1; | |
op = true; | |
}else{ | |
inner.style.display = "none"; | |
this.style.opacity = 0.3; | |
} | |
var conf = cloadData( id + "conf" , '{"float":false, "open":true, "x":"", "y":"", "pos":99 }', true, true ); | |
conf.open = op; | |
csaveData( id + "conf", conf, true, true ); | |
} ); | |
$e(elm_img_up, "click", function(){ | |
var sidebox = $(id); | |
if( sidebox.parentNode.id != "beyond_fixpanel" ) return; | |
var target = sidebox.previousSibling; | |
if( !target ) return; | |
sidebox.parentNode.removeChild(sidebox); | |
target.parentNode.insertBefore(sidebox, target); | |
crenumberSideBox(); | |
}); | |
$e(elm_img_down, "click", function(){ | |
var sidebox = $(id); | |
if( sidebox.parentNode.id != "beyond_fixpanel" ) return; | |
var target = sidebox.nextSibling; | |
if( !target ) return; | |
sidebox.parentNode.removeChild(sidebox); | |
target.parentNode.insertBefore(sidebox, target.nextSibling); | |
crenumberSideBox(); | |
}); | |
$e(elm_img_box, "click", function(){ | |
var sidebox = $(id); | |
if( !sidebox ) return; | |
var conf = cloadData( id + "conf" , '{"float":false, "open":true, "x":"", "y":"", "pos":99 }', true, true ); | |
if( sidebox.parentNode.id == "beyond_fixpanel" ) { | |
if( isNaN(""+conf.x) || conf.x == "" || isNaN(""+conf.y) || conf.y == "" ) { | |
var xy = cgetElementXY(sidebox); | |
conf.x = xy.x; | |
conf.y = xy.y; | |
} | |
var cx = d.body.clientWidth; | |
var cy = d.body.clientHeight; | |
var eW = elm_box.clientWidth; | |
var eH = elm_box.clientHeight; | |
elm_box.style.left = conf.x + "px"; | |
elm_box.style.top = conf.y + "px"; | |
if ((conf.x + eW) <= 0) { | |
elm_box.style.left = "0px"; | |
} | |
else if (cx <= conf.x ) { | |
elm_box.style.left = (cx - eW) + "px"; | |
} | |
if ((conf.y + eH) <= 0) { | |
elm_box.style.top = "0px"; | |
} | |
else if (cy <= conf.y) { | |
elm_box.style.top = (cy - eH) + "px"; | |
} | |
sidebox.parentNode.removeChild(sidebox); | |
$("beyond_floatpanel").appendChild(sidebox); | |
sidebox.style.position = "absolute"; | |
sidebox.style.top = conf.y + "px"; | |
sidebox.style.left = conf.x + "px"; | |
sidebox.style.zIndex = 1000; | |
conf.float = true; | |
$(id + "up").style.display = "none"; | |
$(id + "down").style.display = "none"; | |
}else { | |
sidebox.parentNode.removeChild(sidebox); | |
$("beyond_fixpanel").appendChild(sidebox); | |
sidebox.style.position = ""; | |
sidebox.style.top = ""; | |
sidebox.style.left = ""; | |
sidebox.style.backgroundColor = ""; | |
sidebox.style.border = ""; | |
sidebox.style.zIndex = ""; | |
conf.float = false; | |
$(id + "up").style.display = ""; | |
$(id + "down").style.display = ""; | |
csortSideBox(); | |
} | |
csaveData( id + "conf", conf, true, true ); | |
} ); | |
var movedNode = null; | |
var currentZIndex = 0; | |
$e(elm_boxHead, "mousedown", function(event){ | |
movedNode = $(id); | |
if( movedNode.parentNode.id != "beyond_floatpanel" ) return true; | |
g_MD = id; | |
g_MX = event.pageX-parseInt(movedNode.style.left,10); | |
g_MY = event.pageY-parseInt(movedNode.style.top,10); | |
currentZIndex = document.defaultView.getComputedStyle(movedNode, '').zIndex; | |
movedNode.style.zIndex = 9999; | |
if (navigator.userAgent.toLowerCase().indexOf('chrome') == -1) { | |
event.preventDefault(); | |
} | |
conf = cloadData( id + "conf" , '{"float":false, "open":true, "x":"", "y":"", "pos":99 }', true, true ); | |
}); | |
$e(d, "mousemove", function(event){ | |
if(g_MD != id) return true; | |
if( movedNode.parentNode.id != "beyond_floatpanel" ) return true; | |
var x = event.pageX - g_MX; | |
var y = event.pageY - g_MY; | |
movedNode.style.left = x + "px"; | |
movedNode.style.top = y + "px"; | |
conf.x = x; | |
conf.y = y; | |
}); | |
$e(d, "mouseup", function(event){ | |
if(g_MD != id) return true; | |
g_MD = ""; | |
movedNode.style.zIndex = currentZIndex; | |
movedNode = null; | |
csaveData( id + "conf", conf, true, true ); | |
}); | |
if( conf.float && !(isNaN(""+conf.x) || isNaN(""+conf.y))) { | |
elm_box.style.position = "absolute"; | |
elm_box.style.zIndex = 1000; | |
elm_img_up.style.display = "none"; | |
elm_img_down.style.display = "none"; | |
$("beyond_floatpanel").appendChild(elm_box); | |
var cx = d.body.clientWidth; | |
var cy = d.body.clientHeight; | |
var eW = elm_box.clientWidth; | |
var eH = elm_box.clientHeight; | |
elm_box.style.left = conf.x + "px"; | |
elm_box.style.top = conf.y + "px"; | |
if ((conf.x + eW) <= 0) { | |
elm_box.style.left = "0px"; | |
} | |
else if (cx <= conf.x ) { | |
elm_box.style.left = (cx - eW) + "px"; | |
} | |
if ((conf.y + eH) <= 0) { | |
elm_box.style.top = "0px"; | |
} | |
else if (cy <= conf.y) { | |
elm_box.style.top = (cy - eH) + "px"; | |
} | |
} else { | |
$("beyond_fixpanel").appendChild(elm_box); | |
} | |
return {"sideBox":elm_box, "sideBoxHead":elm_boxHead, "sideBoxInner":elm_boxInner }; | |
} | |
function csortSideBox() | |
{ | |
var sideboxes = $a("//div[@id=\"beyond_fixpanel\"]/div[@class=\"sideBox\"]"); | |
var srt = new Array(); | |
for(var i=0 ; i<sideboxes.length ; i++) { | |
var pos = 0; | |
var conf = cloadData( sideboxes[i].id + "conf" , '{"float":false, "open":true, "x":"", "y":"", "pos":99 }', true, true ); | |
pos = conf.pos; | |
srt.push({"node":sideboxes[i], "pos":pos}); | |
} | |
srt.sort( function(a,b) {return a.pos - b.pos;}); | |
for(var i=0 ; i<srt.length ; i++){ | |
srt[i].node.parentNode.removeChild(srt[i].node); | |
} | |
var fixpanel = $("beyond_fixpanel"); | |
for(var i=0 ; i<srt.length ; i++){ | |
fixpanel.appendChild(srt[i].node); | |
} | |
} | |
function crenumberSideBox() | |
{ | |
var sideboxes = $a("//div[@id=\"beyond_fixpanel\"]/div[@class=\"sideBox\"]"); | |
for(var i=0 ; i<sideboxes.length ; i++) { | |
var conf = cloadData( sideboxes[i].id + "conf" , '{"float":false, "open":true, "x":"", "y":"", "pos":99 }', true, true ); | |
conf.pos = i; | |
csaveData( sideboxes[i].id + "conf", conf, true, true ); | |
} | |
} | |
function cappendColumnForProfile(title, id) | |
{ | |
var tds = $a('//table[@class="commonTables"]//th[contains(text(),"座標")]/../preceding-sibling::tr/*[contains("tdTDthTH",name())][last()]'); | |
for(var i=0 ; i<tds.length ; i++) { | |
tds[i].colSpan++; | |
} | |
var tr = $x('//table[@class="commonTables"]//th[contains(text(),"座標")]/..'); | |
var th = d.createElement("th"); | |
th.className = "ttl4"; | |
th.id = id + "_title"; | |
th.appendChild( d.createTextNode( title ) ); | |
tr.appendChild( th ); | |
var trs = $a('//table[@class="commonTables"]//th[contains(text(),"座標")]/../following-sibling::tr'); | |
for(var i=0 ; i<trs.length ; i++) { | |
var xytd = trs[i].childNodes[3]; | |
if( !xytd ) continue; | |
var xy = xytd.innerHTML.match(/([\-0-9]+),([\-0-9]+)/); | |
if( !xy ) continue; | |
var td = d.createElement("td"); | |
td.id = id + "_" + xy[1] + "_" + xy[2]; | |
trs[i].appendChild(td); | |
var pstd = trs[i].childNodes[5]; | |
if( !pstd ) continue; | |
if( pstd.innerHTML != " " ) { | |
td.textContent = "-"; | |
} | |
} | |
} | |
function csetUserStar(uid, x, y, star, wood, stone, iron, rice, npc) | |
{ | |
var userlists = cloadData( "UserStarUserList", "[]", true, true ); | |
if( userlists.indexOf(uid) == -1 ) { | |
userlists.push(uid); | |
csaveData( "UserStarUserList", userlists, true, true ); | |
} | |
var lists = cloadData( "UserStarList" + uid, "[]", true, true ); | |
for(var i=0 ; i<lists.length ; i++) { | |
if( lists[i].x == x && lists[i].y == y ) { | |
return; | |
} | |
} | |
lists.push({"star":star, "x":x, "y":y, "wood":wood, "stone":stone, "iron":iron, "rice":rice, "npc":npc }); | |
csaveData( "UserStarList" + uid, lists, true, true ); | |
} | |
function cresetUserStar() | |
{ | |
var userlists = cloadData( "UserStarUserList", "[]", true, true ); | |
for(var i=0 ; i<userlists.length ; i++) { | |
cdelData( "UserStarList" + userlists[i], true ); | |
} | |
cdelData( "UserStarUserList", true ); | |
} | |
function csetMyLevel(x, y, level) | |
{ | |
var lists = cloadData( "MyLevelList", "[]", true, true ); | |
var ins = true; | |
for(var i=0 ; i<lists.length ; i++) { | |
if( lists[i].x == x && lists[i].y == y ) { | |
if( level == -1 ) { | |
lists[i].level++; | |
}else{ | |
lists[i].level = level; | |
} | |
ins = false; | |
break; | |
} | |
} | |
if( ins && level != -1) { | |
lists.push({"x":x, "y":y, "level":level}); | |
} | |
csaveData( "MyLevelList", lists, true, true ); | |
} | |
function cdelMyLevel(x, y) | |
{ | |
var lists = cloadData( "MyLevelList", "[]", true, true ); | |
for(var i=0 ; i<lists.length ; i++) { | |
if( lists[i].x == x && lists[i].y == y ) { | |
lists.splice(i,1); | |
csaveData( "MyLevelList", lists, true, true ); | |
break; | |
} | |
} | |
} | |
function csaveData(key, value, local, ev) | |
{ | |
if( local ) key = location.hostname + 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 = location.hostname + key; | |
var ret = GM_getValue(key, value); | |
return ev ? eval('ret='+ret) : ret; | |
} | |
function cdelData(key, local ) | |
{ | |
if( local ) key = location.hostname + key; | |
GM_deleteValue( key ); | |
} | |
////////////////////////////////////////////////////////////////// | |
//プレゼンツbyピカチュウ関数群 | |
//http://shigematsu.org/ | |
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ | |
////////////////////////////////////////////////////////////////// | |
function Pika_blinkElements() | |
{ | |
// Drift-free blinking routine | |
var opacity = Math.round((new Date() % 1000) / 1000); | |
for (var i = 0; i < Pika_elementQueue.length; ++i) { | |
Pika_elementQueue[i].style.opacity = opacity; | |
} | |
window.setTimeout(function() { Pika_blinkElements(); }, 500); | |
} | |
function Pika_updateYorozudasState() { | |
var x = $a('//div[@class="sysMes"]/strong'); | |
if( x.length < 3 ) return; | |
var nextUpdate = new Date(x[2].textContent.replace(/-/g, '/')).getTime(); | |
var info = { | |
current: +x[0].textContent, | |
nextUpdate: nextUpdate, | |
confirm: nextUpdate - (24 * 60 * 60) | |
}; | |
csaveData('yorozudas_state', info, true, true); | |
Pika_displayYorozudasState(); | |
/* 設定メニューでON/OFFできるのでここでON/OFFは必要ないかな | |
var button = d.createElement('input'); | |
with (button) { | |
id = 'beyond_yorozudas_notification'; | |
type = 'checkbox'; | |
checked = cloadData('yorozudas_notification', false, true); | |
addEventListener('click', function() { | |
var state = $('beyond_yorozudas_notification').checked; | |
csaveData('yorozudas_notification', state, true, true); | |
Pika_displayYorozudasState(); | |
}, false); | |
} | |
var text = d.createTextNode(' ヨロズダスの状態を通知する'); | |
var p = d.createElement('p'); | |
var lb = d.createElement("label"); | |
lb.htmlFor = button.id; | |
lb.appendChild(text); | |
with (p) { | |
style.backgroundColor = '#aaaaaa'; | |
appendChild(button); | |
appendChild(lb); | |
} | |
d.getElementsByClassName('sysMes')[0].appendChild(p); | |
*/ | |
} | |
function Pika_updateYorozudasState2() { //result用を追加 | |
var x = $a('//div[@class="sysMes2"]/strong'); | |
if( x.length < 3 ) return; | |
var nextUpdate = new Date(x[1].textContent.replace(/-/g, '/')).getTime(); | |
var info = { | |
current: +x[0].textContent, | |
nextUpdate: nextUpdate, | |
confirm: nextUpdate - (24 * 60 * 60) | |
}; | |
csaveData('yorozudas_state', info, true, true); | |
Pika_displayYorozudasState(); | |
} | |
function Pika_displayYorozudasState() { | |
var xpath = '(id("sidebar")/ul/li | id("btn_area_box"))/a[contains(@href, "/busyodas/b3kuji.php")]/img'; | |
if (OPT_SMALLBTN) { | |
xpath += '/..'; | |
} | |
var img_yorozu = $x(xpath); | |
//設定メニューでON/OFFできるのでここでON/OFFは必要ないかな | |
// var enabled = cloadData('yorozudas_notification', false, true); | |
// if (enabled) { | |
var info = cloadData('yorozudas_state', '{}', true, true); | |
var now = new Date().getTime(); | |
if (info.nextUpdate < now) { | |
Pika_elementQueue.push(img_yorozu); | |
} else { | |
if (info.current <= 0) { | |
img_yorozu.style.opacity = 0.5; | |
} else { | |
if (info.confirm > 0 | |
&& info.confirm < now) { | |
if (confirm('ヨロズダスが引けますが、まだ引いていません。\n後でまた通知しますか?')) { | |
var delta = (info.nextUpdate - now) / 3600; | |
if (delta < 4) { | |
info.confirm += 1 * 60 * 60; // 1 hour later | |
} else if (delta < 8) { | |
info.confirm += 2 * 60 * 60; // 2 hours later | |
} else { | |
info.confirm += 4 * 60 * 60; | |
} | |
} else { | |
info.confirm = 0; | |
} | |
csaveData('yorozudas_state', info, true, true); | |
} | |
} | |
} | |
// } else { | |
// img_yorozu.style.opacity = 1; | |
// } | |
} | |
function Pika_displayRecoveryEstimates() { | |
var | |
candidates = $a('//*[@id="deck_file"]//*[div[@class="setPlace false"]]'); | |
for (var i = 0; i < candidates.length; ++i) { | |
var level = + $x('*//*[starts-with(@class,"level_")]', candidates[i]).innerHTML; | |
// var level = + candidates[i].getElementsByClassName('level') | |
// [0].textContent; | |
var hp = + candidates[i].getElementsByClassName('status_hp') | |
[0].textContent.toString().split(/[\/]/)[0]; | |
if (hp >= 100) continue; | |
// var hours = (level * (100 - hp)) / 60; | |
var hours = (level <= 5) ? Math.pow(2, level - 2) * (100 - hp) / 100 : | |
(level <= 10) ? 4 * (level - 3) * (100 - hp) / 100 : | |
(level + 20) * (100 - hp) / 100; | |
var msg = Pika_formatEstimate(hours, false) + 'にHP全回復'; | |
candidates[i].getElementsByClassName('setPlace false')[0].innerHTML = msg; | |
} | |
candidates = $a('//*[@id="deck_file"]//*[div[@class="control"]/dl/dd[contains(text(),"治療中")]]'); | |
for (var i = 0; i < candidates.length; ++i) { | |
var level = + $x('*//*[starts-with(@class,"level_")]', candidates[i]).innerHTML; | |
// var level = + candidates[i].getElementsByClassName('level') | |
// [0].textContent; | |
var hp = + candidates[i].getElementsByClassName('status_hp') | |
[0].textContent.toString().split(/[\/]/)[0]; | |
if (hp >= 100) continue; | |
// var hours = (level * (100 - hp)) / 60; | |
var hours = (level <= 5) ? Math.pow(2, level - 2) * (100 - hp) / 100 : | |
(level <= 10) ? 4 * (level - 3) * (100 - hp) / 100 : | |
(level + 20) * (100 - hp) / 100; | |
var msg = Pika_formatEstimate(hours, false) + '<br>にHP全回復'; | |
candidates[i].getElementsByTagName('dd')[2].innerHTML = msg; | |
candidates[i].getElementsByTagName('dd')[2].style.fontSize = "10px"; | |
candidates[i].getElementsByTagName('dd')[2].style.margin = "0px"; | |
} | |
window.setTimeout(function() { Pika_displayRecoveryEstimates(); }, 60*1000); | |
} | |
function Pika_formatEstimate(hours, displaySecs) { | |
var msg = ''; | |
var now = new Date(); | |
var xday = new Date(now.getTime() + hours * 60 * 60 * 1000); | |
var days = Math.floor(hours / 24); | |
var delta = Math.floor( | |
( | |
new Date(xday.getYear(), xday.getMonth(), xday.getDate()) - | |
new Date(now .getYear(), now .getMonth(), now .getDate()) | |
) | |
/ (24 * 60 * 60 * 1000)); | |
if (delta == 0) msg = ''; | |
else if (delta == 1) msg = '明日'; | |
else if (delta == 2) msg = '明後日'; | |
else msg = delta + '日後'; | |
msg += xday.getHours() + '時'; | |
msg += xday.getMinutes() + '分 '; | |
if (days == 0) { | |
var seconds = Math.floor((hours * 3600) % 60); | |
var minutes = Math.floor((hours * 60) % 60); | |
hours = Math.floor(hours); | |
if (hours == 0) { | |
if (displaySecs) { | |
msg += '(' + minutes + '分' + seconds + '秒後) '; | |
} | |
else { | |
msg += '(' + minutes + '分後) '; | |
} | |
} | |
else { | |
msg += '(' + hours+ '時間' + minutes +'分後) '; | |
} | |
} | |
return msg; | |
} | |
function Pika_installMapXYHelper() | |
{ | |
// http://javascript.g.hatena.ne.jp/emergent/20081122/1227329941 | |
// https://developer.mozilla.org/ja/XPCNativeWrapper | |
// use event listener to set 'onlcick' functon | |
if( location.pathname != '/map.php' ) return; | |
var btn = $x('//div[@id="mapXY"]//input[@type="submit"]'); | |
if( !btn ) return; | |
btn.addEventListener('click', | |
function() { | |
var xpath = '//div[@id="mapXY"]//input[@type="text"]'; | |
var xy = $a(xpath); | |
var x = xy[0].value.toString(); | |
if (x.match(/(-?\d+)[ .,&、](?:y=)?(-?\d+)/)) { | |
xy[0].value = RegExp.$1; | |
xy[1].value = RegExp.$2; | |
} | |
}, false); | |
} | |
function Pika_installTradeHelper() { | |
if( location.pathname != '/card/trade.php' ) return; | |
$('button') | |
.addEventListener('click', | |
function() { | |
var element = $x('//div[@class="formSearch"]/select'); | |
var index = element.selectedIndex; | |
if (index == 0 || index == 3) { | |
if ($('k').value.toString().match(/[1-4]\d{3}/)) { | |
element.selectedIndex = 2; | |
} | |
} | |
}, false); | |
} | |
function Pika_prepareForDisplayBuildStatus() | |
{ | |
var maps = $('maps'); | |
var xpath = 'img[contains(@src, "/img_lv0.gif")]/@class'; | |
var nodes = $a(xpath, maps); | |
for (var i = 0; i < nodes.length; ++i) { | |
var index = nodes[i].value.toString().substr(-2); | |
var xpath = 'img[@class="map' + index +'" and contains(@src, "/facility_10")]'; | |
var isResourceProducingLot = $a(xpath, maps).length; | |
if (!isResourceProducingLot) { | |
$x('//img[@class="mapicon'+index+'"]').src = | |
'data:image/gif;base64,'+ | |
'R0lGODlhFwAWAMQfADp1MxYsFzp7NEGdQTp7Nm2bac7dzebu5l6TWkWmRZ69nPL2'+ | |
'8kWAQLXNszuNO7/UvzV7NWqVZU6PTNrm2Y20i0apRj+WP1LOc0y7TDmDOSAgID+G'+ | |
'OShRLz9+N////////yH5BAEAAB8ALAAAAAAXABYAAAW74PdxZGmepShyV+u+sMut'+ | |
'WG3fOD5zVe8niYFQmPD5OBqOZcm0OCQUg4HiaC6RnIx2m4E8PGCPAsLNYDfoNAGx'+ | |
'OEgKYEYafZ5vCJODYN/wFOx1cwhiAhsCCh4IgEl2G3ANAJEGBwSLWWUMYBQRXwUE'+ | |
'XARYHaOkh2ELBQKkpKKrowARChQMAK6jrbaRkba3GiO8wKwaviMoHLwlwyofw83D'+ | |
'rs7Ky9MiqwEB1NnLpNfa3h+j3d/aHeLj2tjfIQA7'; | |
} | |
} | |
} | |
function Pika_displayBuildStatus() { | |
var xpath = 'id("actionLog")//li/span[@class="buildStatus" and contains(.,"建設")]/a'; | |
var nodes = $a(xpath); | |
var facilities = {}; | |
for (var i = 0; i < nodes.length; ++i) { | |
nodes[i].href.match(/x=(\d+)&y=(\d+)/); | |
var x = parseInt(RegExp.$1,10); | |
var y = parseInt(RegExp.$2,10); | |
var index = (101 + x * 7 + y).toString().substr(-2); | |
facilities[index] = index; | |
} | |
for (var index in facilities) { | |
Pika_elementQueue.push(document.getElementsByClassName('map'+index)[0]); | |
Pika_elementQueue.push(document.getElementsByClassName('mapicon'+index)[0]); | |
} | |
var deleting = $x('//*[@id="actionLog"]/ul/li[contains(text(), "削除中")]/span[@class="buildStatus"]/a'); | |
if (deleting && deleting.href.match(/x=(\d+)&y=(\d+)/)) { | |
var x = +RegExp.$1; | |
var y = +RegExp.$2; | |
var index = (101 + x * 7 + y).toString().substr(-2); | |
document.getElementsByClassName('map'+index)[0] | |
.style.opacity = 0.5; | |
document.getElementsByClassName('mapicon'+index)[0] | |
.style.opacity = 0.5; | |
} | |
} | |
////////////////////////////////////////////////////////////////// | |
//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ | |
//プレゼンツbyピカチュウ関数群 | |
////////////////////////////////////////////////////////////////// | |
////////////////////////////////////////////////////////////////// | |
//プレゼンツbysu-zan関数群 | |
//http://shigematsu.org/ | |
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ | |
////////////////////////////////////////////////////////////////// | |
function Suzan_Seisan(inner) | |
{ | |
var yieldList = { | |
other : [0,6,14,25,50,80,117,162,214,272,335,404,476,550,626,702], | |
rice : [0,6,18,36,72,114,167,231,305,388,479,577,680,786,894,1003] | |
}; | |
var yieldExtends = [ | |
{ | |
name : '水車', | |
facility : { | |
match : '畑', | |
data : [0,0.03,0.06,0.09,0.12,0.15,0.18,0.21,0.24,0.27,0.3] | |
}, | |
resource : { | |
match : '穀物', | |
data : [0,40,60,80,110,140,180,220,270,350,450] | |
} | |
}, | |
{ | |
name : '工場', | |
facility : { | |
match : '伐採所石切り場製鉄所', | |
data : [0,0.03,0.05,0.08,0.1,0.13,0.15,0.18,0.2,0.23,0.25] | |
}, | |
resource : { | |
match : '森林岩山鉄鉱山', | |
data : [0,55,65,75,95,115,145,185,235,300,380] | |
} | |
} | |
]; | |
var seisan = { w:0, s:0, i:0, r:0 }; | |
for (var i = 0; i < 2;i++) { | |
var yieldExtend = yieldExtends[i]; | |
var yieldExtendArea = $x('//area[starts-with(@alt,"'+yieldExtend.name+'")]'); | |
if (!yieldExtendArea) { | |
continue; | |
} | |
var yieldExtendAreaInfo = cgetFacilityInfoFromArea(yieldExtendArea); | |
var yieldExtendResource = yieldExtend.resource.data[yieldExtendAreaInfo.lv]; | |
var yieldExtendFacility = yieldExtend.facility.data[yieldExtendAreaInfo.lv]; | |
var squreaAreas = cgetSquareElementFromArea(yieldExtendArea); | |
for (var key in squreaAreas) { | |
if (!squreaAreas[key]) { | |
continue; | |
} | |
var squreaArea = squreaAreas[key]; | |
var squreaAreaInfo = cgetFacilityInfoFromArea(squreaArea); | |
var dataKey = nameToDataKey(squreaAreaInfo.name); | |
if (0 <= yieldExtend.resource.match.indexOf(squreaAreaInfo.name)) { | |
seisan[dataKey] += yieldExtendResource; | |
} | |
else if (0 <= yieldExtend.facility.match.indexOf(squreaAreaInfo.name)) { | |
seisan[dataKey] += Math.ceil(yieldExtendFacility * yieldList[getYieldKeyFromDataKey(dataKey)][squreaAreaInfo.lv]); | |
} | |
} | |
} | |
var areas = $a('//area[contains(@alt,"畑") or contains(@alt,"穀") or contains(@alt,"伐") or contains(@alt,"森") or contains(@alt,"石") or contains(@alt,"岩") or contains(@alt,"製") or contains(@alt,"鉱")]'); | |
for(var i=0; i<areas.length; i++){ | |
var areaInfo = cgetFacilityInfoFromArea(areas[i]); | |
var dataKey = nameToDataKey(areaInfo.name); | |
switch(areaInfo.name){ | |
case '森林': | |
case '岩山': | |
case '鉄鉱山': | |
case '穀物': | |
seisan[dataKey] += 10; | |
break; | |
case '伐採所': | |
case '石切り場': | |
case '製鉄所': | |
case '畑': | |
var yieldKey = getYieldKeyFromDataKey(dataKey); | |
seisan[dataKey] += yieldList[yieldKey][areaInfo.lv]; | |
break; | |
} | |
} | |
var text = '<ul>'; | |
text += '<li><img align="middle" alt="木" src="' + IMG_DIR + 'common/ico_wood2.gif"> 木 ' + seisan.w + '</li>'; | |
text += '<li><img align="middle" alt="石" src="' + IMG_DIR + 'common/ico_stone2.gif"> 石 ' + seisan.s + '</li>'; | |
text += '<li><img align="middle" alt="鉄" src="' + IMG_DIR + 'common/ico_iron2.gif"> 鉄 ' + seisan.i + '</li>'; | |
text += '<li><img align="middle" alt="糧" src="' + IMG_DIR + 'common/ico_lice2.gif"> 糧 ' + seisan.r + '</li>'; | |
text += '<li> 合計 ' + (seisan.w+seisan.s+seisan.i+seisan.r) +'</li></ul>'; | |
inner.innerHTML = text; | |
function getYieldKeyFromDataKey(dataKey) { | |
var ret = 'other'; | |
if (dataKey == 'r') { | |
ret = 'rice'; | |
} | |
return ret; | |
} | |
function nameToDataKey(name) { | |
switch(name){ | |
case '森林': | |
case '伐採所': | |
return "w"; | |
case '岩山': | |
case '石切り場': | |
return "s"; | |
case '鉄鉱山': | |
case '製鉄所': | |
return "i"; | |
case '穀物': | |
case '畑': | |
return "r"; | |
} | |
} | |
} | |
////////////////////////////////////////////////////////////////// | |
//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ | |
//プレゼンツbysu-zan関数群 | |
////////////////////////////////////////////////////////////////// | |
function disp_castleAidLink() | |
{ | |
var bases = $a('(id("lodgment")/div[@class="floatInner"] | //div[@class="sideBoxInner basename"])//li/*[@title]'); | |
if( !bases ) return; | |
for( var i=0 ; i < bases.length ; i++) { | |
var elem = bases[i]; | |
var thistitle = elem.title; | |
if( !thistitle ) continue; | |
var xy = thistitle.match(/\((-?\d+),(-?\d+)\)$/); | |
if( !xy ) continue; | |
var a_k_img = d.createElement("img"); | |
a_k_img.style.paddingLeft = "3px"; | |
a_k_img.src = img_ken; | |
var a_k = d.createElement("a"); | |
a_k.title = "援軍"; | |
a_k.appendChild(a_k_img); | |
if( elem.href ) { | |
a_k.href = caddSessionId("/facility/castle_send_troop.php?x="+xy[1]+"&y="+xy[2]+"&radio_move_type=301"); | |
a_k.style.visibility = 'visible'; | |
} else { | |
a_k.style.visibility = 'hidden'; | |
} | |
var spn = cgetElementSibling(elem,0); | |
if (!spn) { | |
spn = d.createElement("span"); | |
elem.parentNode.appendChild(spn); | |
} | |
spn.appendChild(a_k); | |
} | |
} | |
function disp_nextFameTimer() { | |
var nextDate = new Date(cloadData("NextFameTime",null,true,true)); | |
var preCheckTime = new Date(cloadData("NextFamePreCheckTime",null,true,true)); | |
nextDate = loadNextDate(); | |
var seps = $a('id("status_left")/span[@class="sep"]'); | |
for (var i = 0; i < seps.length;i++) { | |
seps[i].innerHTML = seps[i].innerHTML.replace(/^([\s|\u3000]*)|([\s|\u3000]*)$/g,""); | |
} | |
var img = $x('id("status_left")/img[@title="名声"]'); | |
var fameTimer = document.createElement('DIV'); | |
fameTimer.setAttribute("id","Beyond_nextFameTimer"); | |
fameTimer.appendChild(createTimerText(getTimeDiffNow(nextDate))); | |
fameTimer.style.color = 'lightgreen'; | |
fameTimer.style.position = 'absolute'; | |
fameTimer.style.top = (img.offsetTop + 12) + "px"; | |
fameTimer.style.left = (img.offsetLeft + 10) + "px"; | |
img.parentNode.appendChild(fameTimer); | |
var timerId = setInterval(function(){ | |
fameTimer.style.top = (img.offsetTop + 12) + "px"; | |
fameTimer.style.left = (img.offsetLeft + 10) + "px"; | |
fameTimer.replaceChild(createTimerText(getTimeDiffNow(loadNextDate())), fameTimer.firstChild); | |
},1000); | |
function createTimerText(date) { | |
return document.createTextNode("("+date.toLocaleTimeString().replace(/^0?/,"")+")"); | |
} | |
function getTimeDiffNow(date) { | |
var now = cgetNow(); | |
var oldDate = now, newDate = date; | |
if (date.getTime() < now.getTime()) { | |
return new Date(1970,1,1,0,0,0); | |
} | |
return new Date(1970,1,1,0,0,0,newDate.getTime() - oldDate.getTime()); | |
} | |
var nextFameDateCheckErrorCount = 0; | |
var nextFameRefreshCount = 0; | |
function loadNextDate() { | |
var nowDate = new Date(); | |
var isNextFameDateOver = false; | |
if (nextDate.getTime() < nowDate.getTime()) { | |
isNextFameDateOver = true; | |
} | |
var isPreCheckDateOver = false; | |
if (preCheckTime.getTime() < (nowDate.getTime() - 1800000)) { | |
isPreCheckDateOver = true; | |
} | |
if (5 < nextFameDateCheckErrorCount) { | |
if (isNextFameDateOver) { | |
clearInterval(timerId); | |
} | |
return nextDate; | |
} | |
if ((isPreCheckDateOver || isNextFameDateOver) && nextFameRefreshCount === 0) { | |
nextFameTimeRefresher(); | |
} | |
return nextDate; | |
function nextFameTimeRefresher() { | |
cajaxRequest("/facility/castle.php" , "GET", "", function(req) { | |
var dom = d.createElement("html"); | |
dom.innerHTML = req.responseText; | |
var nextFameNode = $x('.//div[@id="gray02Wrapper"]/table[contains(concat(" ",normalize-space(@class)," ")," commonTables ") and @summary="object"]//td[contains(concat(" ",normalize-space(@class)," ")," center ") and not(@colspan)]/div[not(@class)]',dom); | |
if (!nextFameNode) { | |
nextFameDateCheckErrorCount++; | |
return; | |
} | |
var matches = null; | |
if (!(matches = nextFameNode.innerHTML.match(/\d+-\d+-\d+\s\d+:\d+/))) { | |
nextFameDateCheckErrorCount++; | |
return; | |
} | |
var tmpDate = new Date(matches[0].replace(/-/g,"/")+":00"); | |
if (isPreCheckDateOver == false && nextDate.getTime() == tmpDate.getTime()) { | |
if (12 <= nextFameRefreshCount) { | |
clearInterval(timerId); | |
} | |
else { | |
nextFameRefreshCount++; | |
setTimeout(nextFameRefresher,5000); | |
} | |
return; | |
} | |
else if (!(nextDate.getTime() == tmpDate.getTime())) { | |
nextDate = tmpDate; | |
if (cloadData("NextFameTime",null,true,true)) { | |
var fameText = $x('id("status_left")//img[@title="名声"]').nextSibling; | |
matches = fameText.nodeValue.match(/(\d+)[^\d]*(\d+)/); | |
fameText.nodeValue = fameText.nodeValue.replace(/\d+[^\d]*\d+/,(parseInt(matches[1],10)+1) + " / " + (parseInt(matches[2],10)+1)); | |
} | |
csaveData("NextFameTime",nextDate.toString(),true,true); | |
} | |
nextFameRefreshCount = 0; | |
preCheckTime = new Date(); | |
csaveData("NextFamePreCheckTime",preCheckTime.toString(),true,true); | |
}, | |
function() { | |
nextFameDateCheckErrorCount++; | |
}); | |
} | |
} | |
} | |
function disp_timerLinkDepot() { | |
var timerIcon = 'data:image/gif;base64,'+ | |
'R0lGODlhEAAQANUAACAcHfDx8enp6oCAg8jJyoSGiZCSlNDR0YuNkGlrbXh5e46Qkh8aG+Dg4Xx9'+ | |
'gIiKjDMwMfj5+XBxc9jZ2ZiYmWFhY1hYWrO0tMXFxt/g4ENCRHV2efjq6Li5up6eoKKjpPf4+CUh'+ | |
'InJXV1FOTyMfIU5MTTg0NUE+Pzs4OTMvMEpHSCgkJUhFRtHGxc7HyLe4ub/AwefX1tjT09bJyOHY'+ | |
'2Kumpu7x8W5vcV5eYGdoaoeJjL+cm/rw7/bn5QAAAAAAACH5BAEAAD4ALAAAAAAQABAAAAawwMLg'+ | |
'gVgsDEaD0oAYWgrEpmMwmBYRj0piINwYMAQXwaMY6AqSikIhuRwatFmgQVA4HDmcJEERBAI8HBEB'+ | |
'ES83GxUWCRIEGIQcPSARDQcFCRYQGgV+DTAtMX8BAh8aEAAABQR+HiI7Nn8HHyGnDAoCAhcDNTKh'+ | |
'AhSnAAwjEx0HAiChExMJDMArFBm3vbimwAAoHdECDQIHBCXWwBADBN4HBifh4SksKiYk6uoMzfH1'+ | |
'8UEAOw=='; | |
var sidboxId = 'beyond_sidebox_timerOpenLinkconf'; | |
var timeId = null; | |
timeId = setInterval(function(){ | |
var doc = $x('id("timerOpenLink")/..'); | |
if (!doc) return; | |
clearInterval(timeId); | |
doc.style.display = 'none'; | |
var img = $x('.//img',doc); | |
if (img) { | |
timerIcon = img.src; | |
} | |
var box = ccreateSideBox(sidboxId,timerIcon,"タイマーボタン"); | |
var adoc = d.createElement("a"); | |
adoc.href = "javascript:void(0);"; | |
adoc.innerHTML = "タイマー表示"; | |
adoc.addEventListener("click", function() { | |
var doc = $x('id("timerOpenLink")'); | |
if (!doc) return; | |
var event = d.createEvent( "MouseEvents" ); | |
event.initEvent( "click", false, true ); | |
doc.dispatchEvent( event ); | |
}, true); | |
box.sideBoxInner.appendChild(adoc); | |
var conf = cloadData( sidboxId + "conf" , '{"float":false, "open":true, "x":"", "y":"", "pos":99 }', true, true ); | |
cinsertSideBox(conf.pos,box); | |
},100); | |
setTimeout(function(){clearInterval(timeId);},500); | |
} | |
function disp_villageListBox() { | |
if (0 <= location.pathname.search(/^\/(village|map|land)\.php/)) { | |
return; | |
} | |
var isOpen = cloadData('sidebox_oc0', false,true) ? false : true; | |
var sidBoxId = 'beyond_sidebox_villageListBox'; | |
var conf = cloadData( sidBoxId+'conf' , "null", true, true ); | |
if (!OPT_SMALLBTN) { | |
isOpen = (conf == null) ? true : conf.open; | |
} | |
if (conf != null && typeof conf == 'object') { | |
conf.open = isOpen; | |
csaveData(sidBoxId+'conf',conf,true,true); | |
} | |
var box = ccreateSideBox(sidBoxId,IMG_DIR+'common/sidebar/icon_base.gif',"拠点"); | |
box.sideBoxInner.className += " basename"; | |
var ul = d.createElement("ul"); | |
box.sideBoxInner.appendChild(ul); | |
var boxImage = $x('.//img[contains(@src,"icon_base")]', box.sideBoxHead); | |
$e(boxImage,'click',function(){ | |
var saveData = isOpen ? "1" : ""; | |
isOpen = !isOpen; | |
csaveData('sidebox_oc0', saveData,true); | |
}); | |
var cvid = cgetCurrentVillageId(); | |
for (var key in VILLAGES_INFO) { | |
var village = VILLAGES_INFO[key]; | |
var li = d.createElement("li"); | |
li.style.paddingBottom = "0px"; | |
ul.appendChild(li); | |
var item; | |
if (village.vid == cvid) { | |
li.className = "on"; | |
item = d.createElement("span"); | |
} | |
else { | |
item = d.createElement("a"); | |
item.href = caddSessionId('/village_change.php?village_id='+village.vid+'&from=menu&page=' + encodeURIComponent(location.pathname + location.search)); | |
} | |
li.appendChild(item); | |
item.title = village.basename + " ("+village.x+","+village.y+")"; | |
item.appendChild(d.createTextNode(village.basename)); | |
} | |
} | |
// 初期化拡張 | |
function initVillages() { | |
if (0 <= location.pathname.search(/^\/(village|land)\.php/)) { | |
_villageInit(); | |
return; | |
} | |
else if (location.pathname == "/user/" && $("statMenu")) { | |
_profileInit(); | |
return; | |
} | |
VILLAGES_INFO = cloadData("villagesInfo","{}",true,true); | |
function _villageInit() { | |
var villages = $a('(id("lodgment")/div[@class="floatInner"] | //div[@class="sideBoxInner basename"])//li/*[@title]'); | |
var compList = new Object(); | |
var reg = new RegExp(/^([^ ]+) \((-?\d+),(-?\d+)\)$/); | |
var matches = null; | |
var noVids = new Array(); | |
for (var i=0;i < villages.length;i++) { | |
var village = villages[i]; | |
var addObj = new Object(); | |
if ((matches = village.title.match(reg))) { | |
addObj.basename = matches[1]; | |
addObj.x = parseInt(matches[2],10); | |
addObj.y = parseInt(matches[3],10); | |
} | |
if (typeof village.href == 'string' && (matches = village.href.match(/village_id=(\d+)/))) { | |
addObj.vid = parseInt(matches[1],10); | |
} | |
else { | |
var viDoc = $x('//input[@name="village_id"]'); | |
if (viDoc) { | |
addObj.vid = parseInt(viDoc.value,10); | |
} | |
else { | |
noVids.push(addObj); | |
} | |
} | |
compList[(addObj.x+"_"+addObj.y).replace(/-/g,"m")] = addObj; | |
} | |
_compData(compList); | |
if (0 < noVids.length) { | |
cajaxRequest("/user/" , "GET", "", function(req) { | |
var dom = d.createElement("html"); | |
dom.innerHTML = req.responseText; | |
for (var i = 0;i < noVids.length;i++) { | |
var td = $x('.//td[text()="'+noVids[i].x+","+noVids[i].y+'"]',dom); | |
var linkTd = cgetElementSibling(td,1); | |
var link = $x('.//a',linkTd); | |
if ((matches = link.href.match(/village_id=(\d+)/))) { | |
VILLAGES_INFO[(noVids[i].x+"_"+noVids[i].y).replace(/-/g,"m")].vid = parseInt(matches[1],10); | |
} | |
} | |
csaveData("villagesInfo",VILLAGES_INFO,true,true); | |
}); | |
} | |
} | |
function _profileInit() { | |
var compList = new Object(); | |
var matches = null; | |
var villageLinks = $a('//table[@class="commonTables"]//th[contains(text(),"座標")]/../following-sibling::tr[position() <= 10]/td[not(@*) and 1 <= normalize-space(text())]/..//a'); | |
for (var i = 0;i < villageLinks.length;i++) { | |
var villageLink = villageLinks[i]; | |
var addObj = new Object(); | |
var loc = cgetElementSibling(villageLink.parentNode,0); | |
if ((matches = loc.innerHTML.match(/(-?\d+),(-?\d+)/))) { | |
addObj.x = parseInt(matches[1],10); | |
addObj.y = parseInt(matches[2],10); | |
} | |
if ((matches = villageLink.href.match(/village_id=(\d+)/))) { | |
addObj.vid = parseInt(matches[1],10); | |
} | |
addObj.basename = villageLink.innerHTML.replace(/^\s*|\s*$/g,""); | |
compList[(addObj.x+"_"+addObj.y).replace(/-/g,"m")] = addObj; | |
} | |
_compData(compList); | |
} | |
function _compData(compList) { | |
var nowVillageList = cloadData("villagesInfo","{}",true,true); | |
for (var key in compList) { | |
VILLAGES_INFO[key] = compList[key]; | |
if (typeof nowVillageList[key] == 'object') { | |
VILLAGES_INFO[key] = nowVillageList[key]; | |
if (typeof VILLAGES_INFO[key].vid != 'number' && typeof compList[key].vid == 'number') { | |
VILLAGES_INFO[key].vid = compList[key].vid; | |
} | |
VILLAGES_INFO[key].basename = compList[key].basename; | |
} | |
} | |
csaveData("villagesInfo",VILLAGES_INFO,true,true); | |
} | |
} | |
function initCastleSend() { | |
if( location.pathname != '/facility/castle_send_troop.php' || location.search.indexOf("radio_move_type") < 0) return; | |
var radioMoveType = location.search.match(/radio_move_type=(\d+)/)[1]; | |
var ary = $a('//input[@name="radio_move_type"]'); | |
var elem; | |
for (var i = 0; i < ary.length;i++) { | |
elem = ary[i]; | |
if (elem.value == radioMoveType) { | |
elem.checked = "checked"; | |
} | |
else { | |
elem.checked = ""; | |
} | |
} | |
} | |
function initNarrow() { | |
if (0 <= location.pathname.search(/^\/(village|map|land)\.php/)) { | |
$x('id("lodgment")/div[@class="floatHead"]//a').href = 'javascript:void(0);'; | |
} | |
GM_addStyle(".footer_box { height:auto !important;}"); | |
} | |
function initPreLoadNode() { | |
PRE_LOAD_NODES['nowResources'] = {wood:$('wood'),stone:$('stone'),iron:$('iron'),rice:$('rice')}; | |
PRE_LOAD_NODES['serverTime'] = $('server_time_disp'); | |
} | |
function initUrlParams() { | |
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; | |
} | |
} | |
} | |
} | |
} | |
// common関数拡張 | |
function cinsertSideBox(insPos,insNode) { | |
var sideboxes = $a(".//div[@id=\"beyond_fixpanel\"]/div[@class=\"sideBox\"]"); | |
var srt = new Array(); | |
var pos = 0; | |
var insNodeId = insNode.sideBox.id; | |
for(var i=0 ; i<sideboxes.length ; i++) { | |
var conf = cloadData( sideboxes[i].id + "conf" , '{"float":false, "open":true, "x":"", "y":"", "pos":99 }', true, true ); | |
pos = conf.pos; | |
if (insPos <= conf.pos && insNodeId != sideboxes[i].id) { | |
pos++; | |
} | |
else if (insNodeId == sideboxes[i].id) { | |
pos = insPos; | |
} | |
srt.push({"node":sideboxes[i], "pos":pos}); | |
} | |
srt.sort( function(a,b) {return a.pos - b.pos;}); | |
for(var i=0 ; i<srt.length ; i++){ | |
srt[i].node.parentNode.removeChild(srt[i].node); | |
} | |
var fixpanel = $("beyond_fixpanel"); | |
for(var i=0 ; i<srt.length ; i++){ | |
fixpanel.appendChild(srt[i].node); | |
} | |
} | |
function cgetCurrentVillageId() { | |
var xy = cgetCurrentBaseXY(); | |
return VILLAGES_INFO[(xy.x+"_"+xy.y).replace(/-/g,"m")].vid; | |
} | |
function chasVillageId(vid) { | |
vid = parseInt(vid,10); | |
var vids = cgetVillageIds(); | |
return vids[vid] ? true : false; | |
} | |
function cgetVillageIds() { | |
var ret = new Object(); | |
for (var key in VILLAGES_INFO) { | |
if (isNaN(""+VILLAGES_INFO[key].vid)) { | |
continue; | |
} | |
ret[VILLAGES_INFO[key].vid] = VILLAGES_INFO[key].vid; | |
} | |
return ret; | |
} | |
// element , pre 1:next0,skipCount | |
function cgetElementSibling(element,direction,skipCount) { | |
var hasElementSibling = (typeof element.nextElementSibling == 'object' || typeof element.previousElementSibling == 'object') ? true : false; | |
if (!skipCount) skipCount = 1; | |
for (var i = 0;i < skipCount;) { | |
if (hasElementSibling) { | |
i++; | |
if (direction == 1) { | |
element = element.previousElementSibling; | |
} | |
else { | |
element = element.nextElementSibling; | |
} | |
} | |
else { | |
if (direction == 1) { | |
element = element.previousSibling; | |
} | |
else { | |
element = element.nextSibling; | |
} | |
if (element.nodeType == 1) { | |
i++; | |
} | |
} | |
if (element == null) { | |
break; | |
} | |
} | |
return element; | |
} | |
// areaから四方のareaを取得 | |
function cgetSquareElementFromArea(area) { | |
var coords = area.getAttribute('coords'); | |
var matches = null; | |
if (!coords || !(matches = coords.match(/^(\d+),(\d+)/))) return false; | |
var base = new Object(); | |
base.x = parseInt(matches[1],10); | |
base.y = parseInt(matches[2],10); | |
var $x = function(xp,dc) { return d.evaluate(xp, dc||d, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; }; | |
var add = new Object(); | |
add.x = 50; | |
add.y = 25; | |
var isMap = false; | |
if (0 <= location.pathname.indexOf("map.php")) { | |
isMap = true; | |
var size = parseInt($x('id("change-map-scale")//li[contains(concat(" ",normalize-space(@class)," ")," now ")]').className.match(/sort(\d+) /)[1],10); | |
switch (size) { | |
case 20: | |
add.x = 16; | |
add.y = 8; | |
break; | |
case 15: | |
add.x = 22; | |
add.y = 11; | |
break; | |
default: | |
add.x = 30; | |
add.y = 15; | |
break; | |
} | |
base.y += add.y * 2; | |
} | |
var xpaths = {ne:calc(base,add,0),nw:calc(base,add,1),se:calc(base,add,2),sw:calc(base,add,3)}; | |
var ret = new Object(); | |
for (var key in xpaths) { | |
ret[key] = $x('//area[@coords="' + xpaths[key] + '"]'); | |
} | |
return ret; | |
// direction ne:0 nw:1 se:2 sw:3 | |
function calc(base,add,direction) { | |
var addX = (direction % 2) == 0 ? add.x : - add.x; | |
var addY = direction < 2 ? - add.y : add.y; | |
var retBaseX = base.x + addX; | |
var retBaseY = base.y + addY; | |
var top = [retBaseX, retBaseY - (add.y * 2)]; | |
var left = [retBaseX - add.x, retBaseY - add.y]; | |
var bottom = [retBaseX, retBaseY]; | |
var right = [retBaseX + add.x, retBaseY - add.y]; | |
var ret = isMap ? top.concat(left,bottom,right) : bottom.concat(left,top,right); | |
return ret.join(","); | |
} | |
} | |
// areaからx,y,name,lvを返す | |
function cgetFacilityInfoFromArea(area) { | |
var retObj = {name:"",lv:0,x:-1,y:-1}; | |
var matches = null; | |
if (area.alt) { | |
if ((matches = area.alt.match(/^([^ ]+)[^\d]+(\d+)/))) { | |
retObj.name = matches[1]; | |
retObj.lv = parseInt(matches[2],10); | |
} | |
else { | |
retObj.name = area.alt; | |
} | |
} | |
if (area.href && (matches = area.href.match(/(?:x=(\d+)&y=(\d+))/))) { | |
retObj.x = parseInt(matches[1],10); | |
retObj.y = parseInt(matches[2],10); | |
} | |
return retObj; | |
} | |
function caddSessionId(url) { | |
if (0 < SID.length && url.search(/(\?|&)SSID=[^&]+&?/i) < 0) { | |
var anchor = ''; | |
var matches; | |
if ((matches = url.match(/#[^#]+$/))) { | |
url = url.substring(0,url.lastIndexOf('#')); | |
anchor = matches[0]; | |
} | |
url += 0 <= url.indexOf('?') ? '&' : '?'; | |
url += SID; | |
url += anchor; | |
} | |
return url; | |
} | |
// その他拡張 | |
//JSONとprototype.jsの衝突回避用 | |
function toJSON(obj) { | |
switch (typeof obj) { | |
case 'string': | |
return quote(obj); | |
case 'number': | |
return isFinite(obj) ? String(obj) : 'null'; | |
case 'boolean': | |
case 'null': | |
return String(obj); | |
case 'object': | |
if (!obj) { | |
return 'null'; | |
} | |
if (obj instanceof Date) { | |
return isFinite(obj) ? obj.getUTCFullYear() + '-' | |
+ complementZero(obj.getUTCMonth() + 1) + '-' | |
+ complementZero(obj.getUTCDate()) + 'T' | |
+ complementZero(obj.getUTCHours()) + ':' | |
+ complementZero(obj.getUTCMinutes()) + ':' | |
+ complementZero(obj.getUTCSeconds()) + 'Z' : 'null'; | |
} | |
var partial = new Array(); | |
var prefix = '{'; | |
var suffix = '}'; | |
if (obj instanceof Array) { | |
prefix = '['; | |
suffix = ']'; | |
length = obj.length; | |
for ( var i = 0; i < length; i++) { | |
partial[i] = toJSON(obj[i]) || 'null'; | |
} | |
} else { | |
for ( var key in obj) { | |
if (Object.hasOwnProperty.call(obj, key)) { | |
partial.push(quote(key) + ':' | |
+ (toJSON(obj[key]) || 'null')); | |
} | |
} | |
} | |
return prefix + partial.join(',') + suffix; | |
break; | |
default: | |
return null; | |
} | |
function quote(str) { | |
var escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; | |
var meta = { // table of character substitutions | |
'\b' : '\\b', | |
'\t' : '\\t', | |
'\n' : '\\n', | |
'\f' : '\\f', | |
'\r' : '\\r', | |
'"' : '\\"', | |
'\\' : '\\\\' | |
}; | |
return escapable.test(str) ? '"' | |
+ str.replace(escapable, | |
function(a) { | |
var c = meta[a]; | |
return typeof c === 'string' ? c : '\\u' | |
+ ('0000' + a.charCodeAt(0).toString(16)) | |
.slice(-4); | |
}) + '"' : '"' + str + '"'; | |
} | |
function complementZero(number) { | |
return number < 10 ? '0' + number : number; | |
} | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment