您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A Kingdoms of Camelot Tracker (Kocmon replacement)
当前为
- // ==UserScript==
- // @name KoCByte
- // @version 12
- // @description A Kingdoms of Camelot Tracker (Kocmon replacement)
- // @namespace kocbyte.com
- // @icon http://www.gravatar.com/avatar/f93cdced9c9b863a7d9e4b9988886015
- // @include *.kocbyte.com/*
- // @include *.kingdomsofcamelot.com/fb/e2/src/main_src.php*
- // @grant unsafeWindow
- // @grant GM_getValue
- // @grant GM_setValue
- // @grant GM_deleteValue
- // @grant GM_xmlhttpRequest
- // @grant GM_openInTab
- // @grant GM_log
- // @grant GM_listValues
- // @grant GM_addStyle
- // @grant GM_registerMenuCommand
- // @require http://code.jquery.com/jquery-latest.min.js
- // ==/UserScript==
- //============================================================================
- var uW = unsafeWindow;
- var Tabs = {};
- var mainPop;
- var kbPopUpTopClass = 'kbPopTop';
- var Options = {
- kbWinIsOpen: false,
- kbTrackOpen: true,
- currentTab: 'Mod',
- debug: true,
- };
- var aj2 = function(c, d, b, a){
- if(c.match(/fetchMapTiles/)){
- if(Options.debug){
- kb.debug(d);
- }
- kb.mapBlocks.push(d);
- }
- if (d.ctrl && d.ctrl == "Tracking"){
- return;
- //disable - don't send on the message
- }else{
- uW.AjaxCall.gAjaxRequest(c, d, b, a, "post");
- }
- };
- var kb = {
- uid: 0,
- name: '',
- domain: 0,
- allianceId: 0,
- allianceName: '',
- misted: 0,
- cities: [],
- domains: [],
- seed: null,
- target: {
- x: 0,
- y: 0
- },
- authedSites: null,
- currentUrl: document.location.toString(),
- currentWebFolder: document.location.host+document.location.pathname.replace(/\\/g, '/').replace(/\/[^\/]*\/?$/, '')+'/',
- removedMixPanel: false,
- urlSite: 'https://www.kocbyte.com/',
- urlListener: 'https://www.kocbyte.com/ajax/listener.php',
- urlMapListener: 'https://www.kocbyte.com/ajax/map.php',
- scanListener: 'https://www.kocbyte.com/tools/scanner.php',
- deepScanListener: 'https://www.kocbyte.com/tools/deepScan.php',
- scoutListener: 'https://www.kocbyte.com/tools/scouter.php',
- storagePrefix: 'KoCByte_',
- sendInfoDelay: 1000*60*60*6,
- sendMapDelay: 1000*60*30,
- updateCheckDelay: 1000*60*60*24,
- scriptId: 19269,
- scriptVer: 12,
- sendTimer: null,
- updateTimer: null,
- taskTimer: null,
- mapTimer: null,
- mapBlocks: [],
- generateRandomNumber: function(min, max){
- if(min >= max){
- return null;
- }else{
- return Math.round(min+((max-min)*Math.random()));
- }
- },
- createUrl: function(page){
- return 'https://www'+(uW.g_server)+'.kingdomsofcamelot.com/fb/e2/src/'+page;
- },
- createAjaxUrl: function(page){
- return 'https://www'+(uW.g_server)+'.kingdomsofcamelot.com/fb/e2/src/ajax/'+page+'.php';
- },
- getAjaxParams: function(){
- if(uW && uW.g_ajaxparams){
- return JSON.parse(JSON.stringify(uW.g_ajaxparams));
- }
- },
- setValueObject: function(k, v){
- v = JSON.stringify(v);
- GM_setValue(k, v);
- },
- getValueObject: function(k, dv){
- var v = GM_getValue(k, dv);
- if(!v || v === undefined){
- return null;
- }
- v = JSON.parse(v);
- if(!v){
- if(!dv){
- v = null;
- }
- else{
- v = dv;
- }
- }
- return v;
- },
- setValue: function(k, v){
- GM_setValue(k, v);
- },
- getValue: function(k, dv){
- return(GM_getValue(k, dv));
- },
- deleteValue: function(k){
- GM_deleteValue(k);
- },
- getDomains: function(force){
- if(uW.g_ajaxparams){
- var now = new Date().getTime()*1;
- var wait = 86400000;//1 day
- var k = kb.storagePrefix+'getDomains_lastcheck';
- var lastsent = kb.getValue(k,0);
- if(force || 1*lastsent+wait < now){
- var args = {};
- args.v2 = true;
- var json = kb.sendToKabam(args,'myServers',null,true);
- if(json && json.selectableServers && json.selectableServers.servers){
- var domains = [];
- for(var i in json.selectableServers.servers){
- var d = json.selectableServers.servers[i].serverId;
- domains.push(1*d);
- }
- domains.sort();
- kb.log('getDomains();');
- kb.setValue(''+k,''+now);
- return domains;
- }
- }else{
- var playerdomains=kb.getValue('domains');
- if(!playerdomains){
- playerdomains = [];
- playerdomains.push(1*kb.domain);
- return playerdomains;
- }else{
- return JSON.parse(''+playerdomains);
- }
- }
- }
- },
- getSavedInfo: function(){
- return(kb.getValue('ajaxparams', null));
- },
- getSavedServerId: function(){
- return(kb.getValue('sid'));
- },
- getCurrentCityId: function(){
- if(uW && uW.currentcityid){
- return JSON.parse(JSON.stringify(uW.currentcityid));
- }
- },
- getCities: function(){
- var seed = kb.getSeed();
- if(seed && seed.cities){
- return JSON.parse(JSON.stringify(seed.cities));
- }
- },
- gameInfoSave: function(){
- if(uW && uW.seed){
- kb.setValue('domain', kb.domain);
- kb.setValue('uid', kb.uid);
- kb.setValue('name', kb.name);
- kb.setValue('allianceId', kb.allianceId);
- kb.setValue('allianceName', kb.allianceName);
- kb.setValue('misted', kb.misted);
- kb.setValueObject('cities', kb.cities);
- kb.setValueObject('domains', kb.domains);
- var current = null;
- var saved = null;
- var tmp = null;
- var thekey = '';
- //seed
- tmp = [];
- for(var i in kb.seed){
- thekey = kb.storagePrefix+'SEED_'+i;
- kb.setValueObject(thekey,kb.seed[i]);
- tmp.push(i);
- //console.log(kb.getValueObject(thekey));
- }
- kb.setValueObject(kb.storagePrefix+'SEEDKEYS',tmp);
- //cities
- current = kb.getValueObject('cities');
- thekey = kb.storagePrefix+'CITIES';
- saved = kb.getValueObject(thekey);
- if(current != saved){
- kb.setValueObject( kb.storagePrefix+'CITIES',current);
- }
- kb.setValueObject('acctIds', kb.acctIds);
- }
- },
- gameInfoLoad: function(){
- if(uW && uW.seed){
- kb.uid = kb.getUserId();
- kb.name = kb.getUserName();
- kb.domain = kb.getServerId();
- kb.domains = kb.getDomains();
- kb.allianceId = kb.getPlayerAllianceId();
- kb.allianceName = kb.getPlayerAllianceName();
- kb.misted = kb.getPlayerMist();
- kb.cities = kb.getCities();
- kb.authedSites = kb.authorizedWebsiteGet();
- kb.storagePrefix = kb.uid+'_'+kb.domain+'_';
- kb.seed = kb.getSeed();
- kb.acctIds = kb.getSavedUserIds(kb.uid);
- }else{
- kb.uid = kb.getValue('uid');
- kb.name = kb.getValue('name');
- kb.domain = kb.getValue('domain');
- kb.domains = kb.getValueObject('domains');
- kb.allianceId = kb.getValue('allianceId');
- kb.allianceName = kb.getValue('allianceName');
- kb.misted = kb.getValue('misted');
- kb.cities = kb.getValueObject('cities');
- kb.authedSites = kb.authorizedWebsiteGet();
- kb.storagePrefix = kb.uid+'_'+kb.domain+'_';
- //the seed is too large to store as one string so we have to reassemble
- kb.seed = {};
- kb.seedKEYS = kb.getValueObject(kb.storagePrefix+'SEEDKEYS');
- if(kb.seedKEYS){
- var prefix = kb.storagePrefix+'SEED_';
- var k='';
- for(var i in kb.seedKEYS){
- k = kb.seedKEYS[i];
- kb.seed[k] = JSON.parse(kb.getValue(prefix+k));
- }
- }
- kb.acctIds = kb.getSavedUserIds();
- }
- },
- getServerId: function(){
- if(uW && uW.g_server){
- return (1*uW.g_server);
- }
- },
- getSavedUserIds: function(uid){
- var uids = kb.getValueObject('acctIds',[uid]);
- if(uid){
- if(!$.inArray(uid,uids)){
- uids.push(uid);
- }
- }
- return uids;
- },
- getUserId: function(){
- if(uW && uW.g_ajaxparams && uW.g_ajaxparams.tvuid){
- return JSON.parse(JSON.stringify(uW.g_ajaxparams.tvuid));
- }
- },
- getUserName: function(){
- if(uW && uW.seed && uW.seed.player && uW.seed.player.name){
- return JSON.parse(JSON.stringify(uW.seed.player.name));
- }
- },
- getSeed: function(){
- if(uW && uW.seed){
- return JSON.parse(JSON.stringify(uW.seed));
- }
- },
- getPlayerAllianceId: function(){
- if(uW && uW.seed && uW.seed.allianceDiplomacies && uW.seed.allianceDiplomacies.allianceId){
- return JSON.parse(JSON.stringify(uW.seed.allianceDiplomacies.allianceId));
- }
- return 0;
- },
- getPlayerAllianceName: function(){
- if(uW && uW.seed && uW.seed.allianceDiplomacies && uW.seed.allianceDiplomacies.allianceName){
- return JSON.parse(JSON.stringify(uW.seed.allianceDiplomacies.allianceName));
- }
- return '';
- },
- getPlayerMist: function(){
- var result=0;
- if(uW && uW.seed && uW.seed.playerEffects && uW.seed.playerEffects.fogExpire){
- result = uW.seed.playerEffects.fogExpire;
- var timestamp = Math.floor(new Date().getTime()/1000);
- if(timestamp > result){
- result=0;
- }
- }
- return JSON.parse(JSON.stringify(result));
- },
- sendToKB: function(type,payload,callback){
- var url;
- if(type == 'info'){
- url = kb.urlListener;
- var obj = {
- domain: kb.domain,
- uid: kb.uid,
- cities: kb.cities,
- allianceName: kb.allianceName,
- allianceId: kb.allianceId,
- userName: kb.name,
- data: payload,
- };
- }
- if(type == 'scan'){
- url = kb.scanListener;
- var obj = {
- domain: kb.domain,
- uid: kb.uid,
- cities: kb.cities,
- allianceName: kb.allianceName,
- userName: kb.name,
- data: payload,
- };
- }
- if(type == 'deepScan'){
- url = kb.deepScanListener;
- var obj = {
- domain: kb.domain,
- uid: kb.uid,
- cities: kb.cities,
- allianceName: kb.allianceName,
- userName: kb.name,
- data: payload,
- };
- }
- if(type == 'scout'){
- url = kb.scoutListener;
- var obj = {
- domain: kb.domain,
- uid: kb.uid,
- cities: kb.cities,
- allianceName: kb.allianceName,
- userName: kb.name,
- data: payload,
- };
- }
- if(type == 'map'){
- var data = [];
- $.each(kb.mapBlocks, function(i, v){
- var result = kb.sendToKabam(v, 'fetchMapTiles');
- $.each(result.data, function(index, value){
- data.push(value);
- });
- });
- var obj = {
- data: data,
- domain: kb.domain,
- uid: kb.uid,
- };
- url = kb.urlMapListener;
- }
- kb.log('Sending: '+type);
- kb.debug('Sending: '+type);
- var args='domain='+kb.domain+'&data='+encodeURIComponent(JSON.stringify(obj));
- if(Options.debug){
- kb.debug(obj);
- kb.debug(args);
- }
- GM_xmlhttpRequest({
- "method": 'POST',
- "url": url,
- "data": args,
- "headers": {
- "Content-type" : "application/x-www-form-urlencoded"
- },
- "onreadystatechange": function(r) {
- },
- "onload": function(result) {
- if(result && result.status!=200 && Options.debug){
- var s='';
- s=s+"\n"+'url='+url;
- s=s+"\n"+'data='+JSON.stringify(obj);
- if(result.status){s=s+"\n"+'status:'+result.status;}
- if(result.statusText){s=s+"\n"+'statusText'+result.statusText;}
- if(result.responseHeaders){s=s+"\n"+'responseHeaders'+result.responseHeaders;}
- if(result.responseText){s=s+"\n"+'responseText'+result.responseText;}
- if(result.readyState){s=s+"\n"+'readyState'+result.readyState;}
- kb.debug(s);
- }
- if(result && result.status == 200){
- kb.log('Send done: '+result.responseText);
- kb.debug('Send done: '+url+': '+result.responseText);
- }
- if(callback) {
- callback(result);
- }
- }
- });
- },
- sendToKabam: function(args,page,callback){
- var async = false;
- var data = JSON.parse(JSON.stringify(uW.g_ajaxparams));
- for(var i in args){
- data[i] = args[i];
- }
- var url = kb.createAjaxUrl(page);
- var str = '';
- for(var k in data){
- str = str+'&'+k+'='+data[k];
- }
- str = str.substr(1);
- if(callback){
- async = true;
- }
- if(Options.debug){
- kb.debug(str);
- }
- var result = null;
- $.ajax({
- 'type': "POST",
- 'url': url,
- 'data': str,
- 'async': async,
- 'success': function(r){
- if(callback){
- callback(r);
- }else{
- if(typeof r === 'object'){
- result = JSON.parse(r);
- }else if(typeof r === 'string'){
- var hasCode = (/function\(/m.exec(r));
- if(hasCode){ return; }
- r.trim();
- if(r.charAt(0) == '"'){
- fNQ = r.indexOf('"') + 1;
- lNQ = r.lastIndexOf('"');
- r = r.substring(fNQ, lNQ);
- r = r.trim();
- }
- result = JSON.parse(r);
- }
- if(!result){
- result = r;
- }
- }
- }
- });
- return result;
- },
- saveInfo: function(){
- var info = JSON.stringify(kb.getCurrentInfo());
- if(info){
- var sid = kb.getServerId();
- kb.setValue('ajaxparams',info);
- kb.setValue('sid',sid);
- }
- },
- sendInfo: function(force){
- if(uW.g_ajaxparams && uW.g_server){
- kb.log('checking if time to send');
- var now = new Date().getTime();
- var k = kb.storagePrefix+'lastsent_ajaxparams';
- var lastsent = kb.getValue(k,0);
- if(force || 1*lastsent+kb.sendInfoDelay<now){
- var savedkey = kb.storagePrefix+'saved_ajaxparams';
- var saved = JSON.parse(kb.getValue(savedkey,null));
- var json = kb.getAjaxParams();
- if(force || saved != json){
- kb.setValue(k,''+now+'');
- kb.setValue(savedkey,''+JSON.stringify(json));
- kb.sendToKB('info', json);
- }
- }
- }
- },
- performScan: function(deep){
- if(uW.g_ajaxparams && uW.g_server){
- var json = kb.getAjaxParams();
- if(deep){
- kb.sendToKB('deepScan', json);
- }else{
- kb.sendToKB('scan', json);
- }
- }
- },
- performScouts: function(){
- if(uW.g_ajaxparams && uW.g_server){
- var json = kb.getAjaxParams();
- kb.sendToKB('scout', json);
- }
- },
- showTime: function(timestamp,version){
- var now = null;
- if(timestamp){
- now = new Date(timestamp);
- }else{
- now = new Date();
- }
- var hours = now.getHours();
- var minutes = now.getMinutes();
- var seconds = now.getSeconds();
- var timeValue = "" + ((hours >12) ? hours -12 :hours);
- if (timeValue == "0") timeValue = 12;
- timeValue += ((minutes < 10) ? ":0" : ":") + minutes;
- timeValue += ((seconds < 10) ? ":0" : ":") + seconds;
- timeValue += (hours >= 12) ? " PM" : " AM";
- return timeValue;
- },
- log: function(msg){
- var type = $.type(msg);
- if(type == 'string'){
- msg.replace(/</gi,"<");
- msg.replace(/>/gi,">");
- }else{
- msg = JSON.stringify(msg);
- msg = msg.replace(/</gi,'<');
- msg = msg.replace(/>/gi,'>');
- }
- var consoleStr = 'KoCByte: '+kb.domain+' @ '+kb.showTime()+': '+msg;
- uW.console.log(consoleStr);
- var elem = $('#'+kb.elemPrefix+'-log-result');
- var html = '';
- if(type == 'string'){
- html = '<div>'+kb.showTime()+' '+msg+'</div>';
- }else{
- html = '<pre>'+kb.showTime()+"\n"+msg+'</pre>';
- }
- var n = elem.children().length;
- if(n > 10){
- elem.children(':last').remove();
- }
- elem.prepend(html);
- },
- debug: function(msg){
- var type = $.type(msg);
- if(type == 'string'){
- msg.replace(/</gi,"<");
- msg.replace(/>/gi,">");
- }else{
- msg = JSON.stringify(msg);
- msg = msg.replace(/</gi,'<');
- msg = msg.replace(/>/gi,'>');
- }
- var consoleStr = 'KoCByte: '+kb.domain+' @ '+kb.showTime()+': '+msg;
- uW.console.log(consoleStr);
- var elem = $('#'+kb.elemPrefix+'-debug-result');
- if(type == 'string'){
- html = '<div>'+kb.showTime()+' '+msg+'</div>';
- }else{
- html = '<pre>'+kb.showTime()+"\n"+msg+'</pre>';
- }
- var n = elem.children().length;
- if(n > 10){
- elem.children(':last').remove();
- }
- elem.prepend(html);
- },
- authorizedWebsiteGet: function(){
- var websites = JSON.parse(''+kb.getValue('authedSites',null));
- if(!websites){
- websites = ['www.kocbyte.com'];
- }
- if($.inArray($(websites),'www.kocbyte.com') != -1){
- websites.push('www.kocbyte.com');
- }
- return websites;
- },
- authorizedWebsiteAdd: function(url){
- var websites = JSON.parse(''+kb.getValue('authedSites',null));
- if(!websites){
- websites = ['www.kocbyte.com'];
- }
- if($.inArray($(websites),url) > -1){
- websites.push(url);
- var sites = websites.filter(function(elem, pos) {
- return websites.indexOf(elem) == pos;
- });
- kb.setValue('authedSites',''+JSON.stringify(sites));
- return true;
- }else{
- return false;
- }
- },
- getStyles: function(){
- var styles = 'a.kocbytebutton20 {color:#ffff80}';
- styles = styles + '.large-pull-1,.large-pull-10,.large-pull-11,.large-pull-2,.large-pull-3,.large-pull-4,.large-pull-5,.large-pull-6,.large-pull-7,.large-pull-8,.large-pull-9,.large-push-1,.large-push-10,.large-push-11,.large-push-2,.large-push-3,.large-push-4,.large-push-5,.large-push-7,.large-push-8,.large-push-9{position:relative}';
- styles = styles + '.row{max-width:75rem;margin-left:auto;margin-right:auto}';
- styles = styles + '.row .row,.row.expanded{max-width:none}';
- styles = styles + '.row::after,.row::before{content:" ";display:table}';
- styles = styles + '.row::after{clear:both}';
- styles = styles + '.row.collapse>.column,.row.collapse>.columns{padding-left:0;padding-right:0}';
- styles = styles + '.row .row{margin-left:-.625rem;margin-right:-.625rem}';
- styles = styles + '.row .row.collapse{margin-left:0;margin-right:0}';
- styles = styles + '.row.expanded .row{margin-left:auto;margin-right:auto}';
- styles = styles + '.column,.columns{width:100%;float:left;padding-left:.625rem;padding-right:.625rem}';
- styles = styles + '.column:last-child:not(:first-child),.columns:last-child:not(:first-child){float:right}';
- styles = styles + '.column.end:last-child:last-child,.end.columns:last-child:last-child{float:left}';
- styles = styles + '.column.row.row,.row.row.columns{float:none}';
- styles = styles + '.row .column.row.row,.row .row.row.columns{padding-left:0;padding-right:0;margin-left:0;margin-right:0}';
- styles = styles + '.large-1{width:8.33333%}';
- styles = styles + '.large-push-1{left:8.33333%}';
- styles = styles + '.large-pull-1{left:-8.33333%}';
- styles = styles + '.large-offset-0{margin-left:0}';
- styles = styles + '.large-2{width:16.66667%}';
- styles = styles + '.large-push-2{left:16.66667%}';
- styles = styles + '.large-pull-2{left:-16.66667%}';
- styles = styles + '.large-offset-1{margin-left:8.33333%}';
- styles = styles + '.large-3{width:25%}';
- styles = styles + '.large-push-3{left:25%}';
- styles = styles + '.large-pull-3{left:-25%}';
- styles = styles + '.large-offset-2{margin-left:16.66667%}';
- styles = styles + '.large-4{width:33.33333%}';
- styles = styles + '.large-push-4{left:33.33333%}';
- styles = styles + '.large-pull-4{left:-33.33333%}';
- styles = styles + '.large-offset-3{margin-left:25%}';
- styles = styles + '.large-5{width:41.66667%}';
- styles = styles + '.large-push-5{left:41.66667%}';
- styles = styles + '.large-pull-5{left:-41.66667%}';
- styles = styles + '.large-offset-4{margin-left:33.33333%}';
- styles = styles + '.large-6{width:50%}';
- styles = styles + '.large-push-6{position:relative;left:50%}';
- styles = styles + '.large-pull-6{left:-50%}';
- styles = styles + '.large-offset-5{margin-left:41.66667%}';
- styles = styles + '.large-7{width:58.33333%}';
- styles = styles + '.large-push-7{left:58.33333%}';
- styles = styles + '.large-pull-7{left:-58.33333%}';
- styles = styles + '.large-offset-6{margin-left:50%}';
- styles = styles + '.large-8{width:66.66667%}';
- styles = styles + '.large-push-8{left:66.66667%}';
- styles = styles + '.large-pull-8{left:-66.66667%}';
- styles = styles + '.large-offset-7{margin-left:58.33333%}';
- styles = styles + '.large-9{width:75%}';
- styles = styles + '.large-push-9{left:75%}';
- styles = styles + '.large-pull-9{left:-75%}';
- styles = styles + '.large-offset-8{margin-left:66.66667%}';
- styles = styles + '.large-10{width:83.33333%}';
- styles = styles + '.large-push-10{left:83.33333%}';
- styles = styles + '.large-pull-10{left:-83.33333%}';
- styles = styles + '.large-offset-9{margin-left:75%}';
- styles = styles + '.large-11{width:91.66667%}';
- styles = styles + '.large-push-11{left:91.66667%}';
- styles = styles + '.large-pull-11{left:-91.66667%}';
- styles = styles + '.large-offset-10{margin-left:83.33333%}';
- styles = styles + '.large-12{width:100%}';
- styles = styles + '.large-offset-11{margin-left:91.66667%}';
- styles = styles + '.large-up-1>.column,.large-up-1>.columns{width:100%;float:left}';
- styles = styles + '.large-up-1>.column:nth-of-type(1n),.large-up-1>.columns:nth-of-type(1n){clear:none}';
- styles = styles + '.large-up-1>.column:nth-of-type(1n+1),.large-up-1>.columns:nth-of-type(1n+1){clear:both}';
- styles = styles + '.large-up-1>.column:last-child,.large-up-1>.columns:last-child{float:left}';
- styles = styles + '.large-up-2>.column,.large-up-2>.columns{width:50%;float:left}';
- styles = styles + '.large-up-2>.column:nth-of-type(1n),.large-up-2>.columns:nth-of-type(1n){clear:none}';
- styles = styles + '.large-up-2>.column:nth-of-type(2n+1),.large-up-2>.columns:nth-of-type(2n+1){clear:both}';
- styles = styles + '.large-up-2>.column:last-child,.large-up-2>.columns:last-child{float:left}';
- styles = styles + '.large-up-3>.column,.large-up-3>.columns{width:33.33333%;float:left}';
- styles = styles + '.large-up-3>.column:nth-of-type(1n),.large-up-3>.columns:nth-of-type(1n){clear:none}';
- styles = styles + '.large-up-3>.column:nth-of-type(3n+1),.large-up-3>.columns:nth-of-type(3n+1){clear:both}';
- styles = styles + '.large-up-3>.column:last-child,.large-up-3>.columns:last-child{float:left}';
- styles = styles + '.large-up-4>.column,.large-up-4>.columns{width:25%;float:left}';
- styles = styles + '.large-up-4>.column:nth-of-type(1n),.large-up-4>.columns:nth-of-type(1n){clear:none}';
- styles = styles + '.large-up-4>.column:nth-of-type(4n+1),.large-up-4>.columns:nth-of-type(4n+1){clear:both}';
- styles = styles + '.large-up-4>.column:last-child,.large-up-4>.columns:last-child{float:left}';
- styles = styles + '.large-up-5>.column,.large-up-5>.columns{width:20%;float:left}';
- styles = styles + '.large-up-5>.column:nth-of-type(1n),.large-up-5>.columns:nth-of-type(1n){clear:none}';
- styles = styles + '.large-up-5>.column:nth-of-type(5n+1),.large-up-5>.columns:nth-of-type(5n+1){clear:both}';
- styles = styles + '.large-up-5>.column:last-child,.large-up-5>.columns:last-child{float:left}';
- styles = styles + '.large-up-6>.column,.large-up-6>.columns{width:16.66667%;float:left}';
- styles = styles + '.large-up-6>.column:nth-of-type(1n),.large-up-6>.columns:nth-of-type(1n){clear:none}';
- styles = styles + '.large-up-6>.column:nth-of-type(6n+1),.large-up-6>.columns:nth-of-type(6n+1){clear:both}';
- styles = styles + '.large-up-6>.column:last-child,.large-up-6>.columns:last-child{float:left}';
- styles = styles + '.large-up-7>.column,.large-up-7>.columns{width:14.28571%;float:left}';
- styles = styles + '.large-up-7>.column:nth-of-type(1n),.large-up-7>.columns:nth-of-type(1n){clear:none}';
- styles = styles + '.large-up-7>.column:nth-of-type(7n+1),.large-up-7>.columns:nth-of-type(7n+1){clear:both}';
- styles = styles + '.large-up-7>.column:last-child,.large-up-7>.columns:last-child{float:left}';
- styles = styles + '.large-up-8>.column,.large-up-8>.columns{width:12.5%;float:left}';
- styles = styles + '.large-up-8>.column:nth-of-type(1n),.large-up-8>.columns:nth-of-type(1n){clear:none}';
- styles = styles + '.clearfix::after,.large-up-8>.column:nth-of-type(8n+1),.large-up-8>.columns:nth-of-type(8n+1){clear:both}';
- styles = styles + '.large-up-8>.column:last-child,.large-up-8>.columns:last-child{float:left}';
- styles = styles + '.large-collapse>.column,.large-collapse>.columns{padding-left:0;padding-right:0}';
- styles = styles + '.large-collapse .row{margin-left:0;margin-right:0}';
- styles = styles + '.large-uncollapse>.column,.large-uncollapse>.columns{padding-left:.9375rem;padding-right:.9375rem}';
- styles = styles + '.large-centered{float:none;margin-left:auto;margin-right:auto}';
- styles = styles + '.large-pull-0,.large-push-0,.large-uncentered{position:static;margin-left:0;margin-right:0;float:left}';
- styles = styles + '.text-left{text-align:left}';
- styles = styles + '.text-right{text-align:right}';
- styles = styles + '.text-center{text-align:center}';
- styles = styles + '.text-justify{text-align:justify}';
- styles = styles + '.hide{display:none!important}';
- styles = styles + '.invisible{visibility:hidden}';
- styles = styles + '.float-left{float:left!important}';
- styles = styles + '.float-right{float:right!important}';
- styles = styles + '.float-center{display:block;margin-left:auto;margin-right:auto}';
- styles = styles + '.clearfix::after,.clearfix::before{content:"";display:table}';
- styles = styles + ' table.kbMainTab { empty-cells: show; margin-left: 5px; margin-top: 4px; padding: 1px; padding-left:5px;}';
- styles = styles + ' table.kbMainTab tr td a {color:inherit }';
- styles = styles + ' table.kbMainTab tr td {height:60%; empty-cells:show; padding: 0px 4px 0px 4px; margin-top:5px; white-space:nowrap; border: 1px solid; border-style: none none solid none; -moz-border-radius:5px; }';
- styles = styles + ' table.kbMainTab tr td.spacer {padding: 0px 0px;}';
- styles = styles + ' table.kbMainTab tr td.notSel { color: #ffffff; font-size: 12px; font-weight:bold; -moz-border-radius: 10px; -moz-box-shadow: 0px 1px 3px #357544; text-shadow: -1px 1px 3px #666666; border: solid #615461 1px; background: -moz-linear-gradient(top, #6ff28e, #196b2c);}';
- styles = styles + ' table.kbMainTab tr td.sel { color: #000000; font-size: 12px; font-weight:bold; -moz-border-radius: 10px; -moz-box-shadow: 0px 1px 3px #357544; text-shadow: -1px 1px 3px #CECECE; border: solid #615461 1px; background: -moz-linear-gradient(top, #6ff28e, #196b2c);}';
- styles = styles + ' table.kbMainTab tr td:hover { color: #191919; font-size: 12px; font-weight:bold; text-shadow: -1px 1px 3px #CECECE; background: -moz-linear-gradient(top, #43cc7e, #20a129)}';
- styles = styles + ' tr.kbPopTop td { background-color:transparent; border:none; height: 21px; padding:0px;}';
- styles = styles + ' tr.kbretry_kbPopTop td { background-color:#a00; color:#fff; border:none; height: 21px; padding:0px; }';
- styles = styles + ' tr.kbMainPopTop td { background-color:#ded; border:none; height: 42px; width:80%; padding:0px; }';
- styles = styles + ' tr.kbretry_kbMainPopTop td { background-color:#a00; color:#fff; border:none; height: 42px; padding:0px; }';
- styles = styles + ' .kbPopMain { border:1px solid #000000; -moz-box-shadow:inset 0px 0px 10px #6a6a6a; -moz-border-radius-bottomright: 20px; -moz-border-radius-bottomleft: 20px;}';
- styles = styles + ' .kbPopup {border:5px ridge #666; opacity:'+(parseFloat(Options.Opacity)<'0.5'?'0.5':Options.Opacity)+'; -moz-border-radius:25px; -moz-box-shadow: 1px 1px 5px #000000; z-index:999999;}';
- styles = styles + ' span.kbTextFriendly {color: #080}';
- styles = styles + ' span.kbTextHostile {color: #800}';
- styles = styles + ' .kbButCancel {background-color:#a00; font-weight:bold; color:#fff}';
- styles = styles + ' div.indent25 {padding-left:25px}';
- styles = styles + ' .kbdivHeader {transparent;height: 16px;border-bottom:0px solid #000000;font-weight:bold;font-size:11px;opacity:0.75;margin-left:0px;margin-right:0px;margin-top:1px;margin-bottom:0px;padding-top:4px;padding-right:10px;vertical-align:text-top;align:left;background-color:#335577;}';
- styles = styles + ' .kbdivLink {color:#000;text-decoration:none;}';
- styles = styles + ' .kbdivLink:Hover {color:#000;text-decoration:none;}';
- styles = styles + ' .kbdivLink:Active {color:#000;text-decoration:none;}';
- styles = styles + ' .kbdivHide {display:none}';
- return styles;
- },
- init: function(){
- var debugKey = kb.storagePrefix+'_debug';
- var debug = kb.getValue(debugKey, null);
- if(debug){
- Options.debug = true;
- }
- var styles = kb.getStyles();
- mainPop = new kbPopup (kb.elemPrefix, 40, 40, 725, 400, function(){
- tabManager.hideTab();
- Options.kbWinIsOpen=false;
- });
- mainPop.autoHeight (true);
- mainPop.getMainDiv().innerHTML = '<style>'+ styles +'</style>';
- AddMainTabLink('KoCByte', eventHideShow, null);
- tabManager.init(mainPop.getMainDiv());
- if(Options.kbWinIsOpen && Options.kbTrackOpen){
- mainPop.show(true);
- tabManager.showTab();
- }
- kb.log('Gathering game info');
- kb.gameInfoLoad();
- if(!kb.uid || !kb.domain){
- return;
- }
- kb.log('Saving game info');
- kb.gameInfoSave();
- setTimeout(function(){
- AutoUpdater.check();
- }, 5000);
- setTimeout(function(){
- kb.sendInfo(1);
- }, 15000);
- setTimeout(function(){
- kb.sendMap();
- }, 30000);
- kb.mapTimer = window.setInterval(function(){
- kb.sendMap();
- }, kb.sendMapDelay);
- kb.sendTimer = window.setInterval(function(){
- kb.sendInfo(1);
- }, kb.sendInfoDelay);
- kb.updateTimer = window.setInterval(function(){
- AutoUpdater.check();
- }, kb.updateCheckDelay);
- kb.taskTimer = window.setInterval(function(){
- kb.doTask();
- },1000*1);
- },
- initSite: function(){
- $('.cityCoords').on('click', function(e){
- e.preventDefault();
- var x = $(this).attr('data-x');
- var y = $(this).attr('data-y');
- var d = $(this).attr('data-domain');
- kb.setValue('command', 'location|'+d+'|'+x+'|'+y);
- });
- },
- doTask: function(){
- var now = new Date().getTime();
- kb.setValue('lasttaskrun',''+now+'');
- kb.setValue('currentdomain',''+kb.getServerId()+'');
- var command = kb.getValue('command', '');
- if (command !== '') {
- kb.setValue('command','');
- kb.log('command=' + command);
- var x = 0;
- var y = 0;
- var cmd = command.split('|');
- var type = cmd[0];
- var domain = 1*cmd[1];
- switch(type){
- case 'location':
- if(domain == kb.domain){
- x = 1*cmd[2];
- y = 1*cmd[3];
- uW.console.log(x+','+y);
- uW.cm.formatModel.jumpTo(x, y);
- }else{
- kb.log('You\'re in the wrong domain to perform this action!');
- }
- break;
- }
- }
- },
- sendMap: function(){
- kb.log('sending map data');
- var json = kb.getAjaxParams();
- kb.sendToKB('map', json);
- }
- };
- var AutoUpdater = {
- id: 19269,
- URL: 'https://greasyfork.org/en/scripts/19269-kocbyte/code/KoCByte.user.js',
- name: 'KoCByte',
- homepage: 'https://greasyfork.org/en/scripts/19269-kocbyte',
- version: kb.scriptVer,
- call: function(response) { kb.log("Checking for "+this.name+" Update!");
- var _s = this;
- GM_xmlhttpRequest({
- method: 'GET',
- url: _s.URL,
- onload: function(xpr) {_s.compare(xpr,response);},
- onerror: function(xpr) {_s.compare({responseText:""},response);}
- });
- },
- compareVersion: function(remoteVer, localVer){
- var remote = parseInt(remoteVer);
- var local = parseInt(localVer);
- return ((remote > local) ? true : false);
- },
- compare: function(xpr,response) {
- this.xversion=(/@version\s*(.*?)\s*$/m.exec(xpr.responseText));
- if(this.xversion){
- this.xversion = this.xversion[1];
- }else{
- if(response){
- uW.Modal.showAlert('<div align="center">Unable to check for updates to '+this.name+'.<br>Please change the update options or visit the<br><a href="'+this.homepage+'" target="_blank">script homepage</a></div>');
- }
- kb.log("Unable to check for updates");
- return;
- }
- var updated = this.compareVersion(this.xversion, this.version);
- if (updated) {
- kb.log('New Version Available!');
- var body = '<BR><DIV align=center><FONT size=3><B>New version '+this.xversion+' is available!</b></font></div><BR>';
- if (this.xrelnotes){
- body+='<BR><div align="center" style="border:0;width:470px;height:120px;max-height:120px;overflow:auto"><b>New Features!</b><p>'+this.xrelnotes+'</p></div><BR>';
- }
- body+='<BR><DIV align=center><a class="gemButtonv2 green" id="doBotUpdate">Update</a></div>';
- this.ShowUpdate(body);
- }else{
- kb.log("No updates available");
- }
- },
- check: function() {
- var now = uW.unixtime();
- var lastCheck = 0;
- if (GM_getValue('updated_'+this.id, 0)) lastCheck = parseInt(GM_getValue('updated_'+this.id, 0));
- if (now > (lastCheck + 60*1)) this.call(false);
- },
- ShowUpdate: function (body) {
- var now = uW.unixtime();
- setUpdate = function(){
- GM_setValue('updated_'+AutoUpdater.id, now);
- };
- uW.cm.ModalManager.addMedium({
- title: this.name,
- body: body,
- closeNow: false,
- close: function (){
- setTimeout (function (){GM_setValue('updated_'+AutoUpdater.id, now);}, 0);
- uW.cm.ModalManager.closeAll();
- },
- "class": "Warning",
- curtain: false,
- width: 500,
- height: 700,
- left: 140,
- top: 140
- });
- document.getElementById('doBotUpdate').addEventListener('click', this.doUpdate, false);
- },
- doUpdate: function () {
- uW.cm.ModalManager.closeAll();
- uW.cm.ModalManager.close();
- var now = uW.unixtime();
- GM_setValue('updated_'+AutoUpdater.id, now);
- GM_openInTab(AutoUpdater.URL);
- },
- };
- var tabManager = {
- tabList : {}, // {name, obj, div}
- currentTab : null,
- init: function (mainDiv){
- var t = tabManager;
- var sorter = [];
- for(k in Tabs){
- if(!Tabs[k].tabDisabled){
- t.tabList[k] = {};
- t.tabList[k].name = k;
- t.tabList[k].obj = Tabs[k];
- if(Tabs[k].tabLabel != null)
- t.tabList[k].label = Tabs[k].tabLabel;
- else
- t.tabList[k].label = k;
- if(Tabs[k].tabOrder != null)
- sorter.push([Tabs[k].tabOrder, t.tabList[k]]);
- else
- sorter.push([1000, t.tabList[k]]);
- t.tabList[k].div = document.createElement('div');
- }
- }
- sorter.sort (function (a,b){return a[0]-b[0]});
- var m = '<TABLE cellspacing=3 class=kbMainTab><TR>';
- for(var i=0; i<sorter.length; i++) {
- m += '<TD class=spacer></td><TD align=center class=notSel id=kb'+ sorter[i][1].name +' ><A><SPAN>'+ sorter[i][1].label +'</span></a></td>';
- //m += '<TD align=center class=notSel id=kb'+ sorter[i][1].name +' ><A><SPAN>'+ sorter[i][1].label +'</span></a></td>';
- if((i+1)%9 == 0) m+='</tr><TR>';
- }
- m+='</tr></table>';
- //m += '<TD class=spacer width=90% align=right>'+ Version +' </td></tr></table>';
- mainPop.getMainTopDiv().innerHTML = m;
- for(k in t.tabList){
- if(t.tabList[k].name == Options.currentTab)
- t.currentTab =t.tabList[k] ;
- document.getElementById('kb'+ k).addEventListener('click', this.e_clickedTab, false);
- var div = t.tabList[k].div;
- div.style.display = 'none';
- div.style.height = '100%';
- mainDiv.appendChild(div);
- try{
- t.tabList[k].obj.init(div);
- }catch(e){
- div.innerHTML = "INIT ERROR: "+ e;
- }
- }
- if(t.currentTab == null)
- t.currentTab = sorter[0][1];
- t.setTabStyle (document.getElementById ('kb'+ t.currentTab.name), true);
- t.currentTab.div.style.display = 'block';
- },
- hideTab : function (){
- var t = tabManager;
- t.currentTab.obj.hide();
- },
- showTab : function (){
- var t = tabManager;
- t.currentTab.obj.show();
- },
- setTabStyle : function (e, selected){
- if(selected){
- e.className = 'sel';
- }else{
- e.className = 'notSel';
- }
- },
- e_clickedTab : function (e){
- var t = tabManager;
- var newTab = t.tabList[e.target.parentNode.parentNode.id.substring(2)];
- if(t.currentTab.name != newTab.name){
- t.setTabStyle (document.getElementById ('kb'+ t.currentTab.name), false);
- t.setTabStyle (document.getElementById ('kb'+ newTab.name), true);
- t.currentTab.obj.hide ();
- t.currentTab.div.style.display = 'none';
- t.currentTab = newTab;
- newTab.div.style.display = 'block';
- Options.currentTab = newTab.name;
- }
- newTab.obj.show();
- },
- };
- var WinManager = {
- wins: {}, // prefix : kbPopup obj
- didHide: [],
- get: function(prefix){
- var t = WinManager;
- return t.wins[prefix];
- },
- add: function(prefix, pop){
- var t = WinManager;
- t.wins[prefix] = pop;
- if(uW.cpopupWins == null)
- uW.cpopupWins = {};
- uW.cpopupWins[prefix] = pop;
- },
- hideAll: function(){
- var t = WinManager;
- t.didHide = [];
- for(var k in t.wins){
- if(t.wins[k].isShown()){
- t.didHide.push (t.wins[k]);
- t.wins[k].show (false);
- }
- }
- },
- restoreAll: function(){
- var t = WinManager;
- for(var i=0; i<t.didHide.length; i++)
- t.didHide[i].show(true);
- },
- delete: function(prefix){
- var t = WinManager;
- delete t.wins[prefix];
- delete uW.cpopupWins[prefix];
- }
- };
- // creates a 'popup' div
- // prefix must be a unique (short) name for the popup window
- function kbPopup(prefix, x, y, width, height, onClose) {
- var pop = WinManager.get(prefix);
- if(pop){
- pop.show (false);
- return pop;
- }
- this.BASE_ZINDEX = 111111;
- // protos ...
- this.show = show;
- this.toggleHide = toggleHide;
- this.getTopDiv = getTopDiv;
- this.getMainTopDiv = getMainTopDiv;
- this.getMainDiv = getMainDiv;
- this.getJQMainDiv = getJQMainDiv;
- this.getLayer = getLayer;
- this.setLayer = setLayer;
- this.getLocation = getLocation;
- this.setLocation = setLocation;
- this.focusMe = focusMe;
- this.isShown = isShown;
- this.unfocusMe = unfocusMe;
- this.centerMe = centerMe;
- this.destroy = destroy;
- this.autoHeight = autoHeight;
- // object vars ...
- this.div = document.createElement('div');
- this.prefix = prefix;
- this.onClose = onClose;
- var t = this;
- this.div.className = 'kbPopup '+ prefix +'_kbPopup';
- this.div.id = prefix +'_outer';
- this.div.style.background = "#fff";
- this.div.style.zIndex = this.BASE_ZINDEX;
- this.div.style.display = 'none';
- this.div.style.width = width + 'px';
- this.div.style.height = height + 'px';
- this.div.style.maxHeight = height + 'px';
- this.div.style.overflowY = 'show';
- this.div.style.position = "absolute";
- this.div.style.top = y +'px';
- this.div.style.left = x + 'px';
- var topClass = '';
- if(kbPopUpTopClass==null)
- topClass = 'kbPopupTop '+ prefix +'_kbPopupTop';
- else
- topClass = kbPopUpTopClass +' '+ prefix +'_'+ kbPopUpTopClass;
- var m = '<table cellspacing=0 width=100% ><tr id="'+ prefix +'_bar" class="'+ topClass +'"><td width=99% valign=bottom><SPAN id="'+ prefix +'_top"></span></td>';
- m = m + '<td id='+ prefix +'_X align=right valign=middle onmouseover="this.style.cursor=\'pointer\'" style="color:#fff; background:#333; font-weight:bold; font-size:14px; padding:0px 5px; -moz-border-radius-topright: 20px;">x</td></tr>';
- m = m + '</table><table cellspacing=0 width=100% ><tr><td height=100% valign=top class="kbPopMain '+ prefix +'_kbPopMain" colspan=2 id="'+ prefix +'_main"></td></tr></table>';
- document.body.appendChild(this.div);
- this.div.innerHTML = m;
- document.getElementById(prefix+'_X').addEventListener ('click', e_XClose, false);
- this.div.addEventListener('mousedown', e_divClicked, false);
- WinManager.add(prefix, this);
- function e_divClicked(){
- t.focusMe();
- }
- function e_XClose(){
- t.show(false);
- if (t.onClose != null)
- t.onClose();
- }
- function autoHeight(onoff){
- if(onoff)
- t.div.style.height = '';
- else
- t.div.style.height = t.div.style.maxHeight;
- }
- function focusMe(){
- t.setLayer(5);
- for(var k in uW.cpopupWins){
- if(k != t.prefix)
- uW.cpopupWins[k].unfocusMe();
- }
- }
- function unfocusMe(){
- t.setLayer(-5);
- }
- function getLocation(){
- return {x: parseInt(this.div.style.left), y: parseInt(this.div.style.top)};
- }
- function setLocation(loc){
- t.div.style.left = loc.x +'px';
- t.div.style.top = loc.y +'px';
- }
- function destroy(){
- document.body.removeChild(t.div);
- WinManager.delete (t.prefix);
- }
- function centerMe(parent){
- var coords;
- if(parent == null){
- coords = getClientCoords(document.body);
- }else
- coords = getClientCoords(parent);
- var x = ((coords.width - parseInt(t.div.style.width)) / 2) + coords.x;
- var y = ((coords.height - parseInt(t.div.style.height)) / 2) + coords.y;
- if(x<0)
- x = 0;
- if(y<0)
- y = 0;
- t.div.style.left = x +'px';
- t.div.style.top = y +'px';
- }
- function setLayer(zi){
- t.div.style.zIndex = ''+ (this.BASE_ZINDEX + zi);
- }
- function getLayer(){
- return parseInt(t.div.style.zIndex) - this.BASE_ZINDEX;
- }
- function getTopDiv(){
- return document.getElementById(this.prefix+'_top');
- }
- function getMainDiv(){
- return document.getElementById(this.prefix+'_main');
- }
- function getJQMainDiv(){
- return $('#'+this.prefix+'_main');
- }
- function getMainTopDiv(){
- return document.getElementById(this.prefix+'_top');
- }
- function isShown (){
- return t.div.style.display == 'block';
- }
- function show(tf){
- if (tf){
- t.div.style.display = 'block';
- t.focusMe ();
- } else {
- t.div.style.display = 'none';
- }
- return tf;
- }
- function toggleHide(t){
- if (t.div.style.display == 'block') {
- return t.show (false);
- } else {
- return t.show (true);
- }
- }
- }
- function getClientCoords(e){
- if (e==null)
- return {x:null, y:null, width:null, height:null};
- var ret = {x:0, y:0, width:e.clientWidth, height:e.clientHeight};
- while (e.offsetParent != null){
- ret.x += e.offsetLeft;
- ret.y += e.offsetTop;
- e = e.offsetParent;
- }
- return ret;
- }
- function eventHideShow(){
- if(mainPop.toggleHide(mainPop)){
- tabManager.showTab();
- Options.kbWinIsOpen = true;
- } else {
- tabManager.hideTab();
- Options.kbWinIsOpen = false;
- }
- }
- function createButton(label,id){
- var a=document.createElement('a');
- a.className='kocbytebutton20';
- a.id = id;
- a.innerHTML='<span style="color: #ff6">'+ label +'</span>';
- return a;
- }
- function AddMainTabLink(text, eventListener, mouseListener){
- var a = createButton(text,'kocbytebutton');
- a.className='tab';
- var tabs=document.getElementById('main_engagement_tabs');
- if(!tabs){
- tabs=document.getElementById('topnav_msg');
- if(tabs)
- tabs=tabs.parentNode;
- }
- if(tabs){
- var e = tabs.parentNode;
- var gmTabs = null;
- for(var i=0; i<e.childNodes.length; i++){
- var ee = e.childNodes[i];
- if (ee.tagName && ee.tagName=='div' && ee.className=='tabs_engagement' && ee.id!='main_engagement_tabs'){
- gmTabs = ee;
- break;
- }
- }
- if(gmTabs == null){
- gmTabs = document.createElement('div');
- gmTabs.className='tabs_engagement';
- tabs.parentNode.insertBefore(gmTabs, tabs);
- gmTabs.style.whiteSpace='nowrap';
- gmTabs.style.width='735px';
- gmTabs.lang = 'en_KB';
- }
- gmTabs.style.height='0%';
- gmTabs.style.overflow='auto';
- gmTabs.appendChild(a);
- a.addEventListener('click',eventListener, false);
- if(mouseListener != null)
- a.addEventListener('mousedown',mouseListener, true);
- return a;
- }
- return null;
- }
- Tabs.Website = {
- tabOrder: 2,
- tabDisabled: false,
- tabLabel: 'Website',
- myDiv: null,
- timer: null,
- init: function(div){
- var t = Tabs.Website;
- t.myDiv = div;
- var str = '<div class="row">';
- str = str + ' <div class="large-12 columns end text-center">';
- str = str + ' <button id="'+kb.elemPrefix+'-website-visit"><span>Visit Site</span></button><br />';
- str = str + ' <button id="'+kb.elemPrefix+'-website-updateinfo"><span>Send Info</span></button><br /><br />';
- str = str + ' <br />';
- str = str + ' The buttons below are now in production.<br />There may be some errors, but they are safe to use.<br /><br/>';
- str = str + ' <button id="'+kb.elemPrefix+'-website-mapscan"><span>Light Scan</span></button><br />';
- str = str + ' This will send your data to the server to perform a quick (center of province) scan of the map.<br /><br />';
- str = str + ' <button id="'+kb.elemPrefix+'-website-deepscan"><span>Deep Scan</span></button><br />';
- str = str + ' This will send your data to the server to perform a deep scan of the map.<br />(Scans each province and around your cities)<br /><br />';
- str = str + ' <button id="'+kb.elemPrefix+'-website-scouter"><span>Run Scouts</span></button><br />';
- str = str + ' This will help KoCByte.com identify misted cities. Please make sure there are scouts in your first city and, <br />preferrably, no marches going.<br /><strong>Please note that while you will not see marches in-game,<br />they will run on the KofC server. This will take a long time,<br />and you will probably need to refresh after data is returned to the Log tab.</strong>';
- str = str + ' </div>';
- str = str + '</div>';
- t.myDiv.innerHTML = str;
- $('#'+kb.elemPrefix+'-website-updateinfo').click(function(){
- kb.sendInfo(1);
- });
- $('#'+kb.elemPrefix+'-website-visit').click(function(){
- GM_openInTab(kb.urlSite);
- });
- $('#'+kb.elemPrefix+'-website-mapscan').click(function(){
- kb.performScan();
- });
- $('#'+kb.elemPrefix+'-website-deepscan').click(function(){
- kb.performScan(1);
- });
- $('#'+kb.elemPrefix+'-website-scouter').click(function(){
- kb.performScouts();
- });
- },
- hide: function(){ // called whenever the main window is hidden, or another tab is selected
- var t = Tabs.Website;
- },
- show: function(){ // called whenever this tab is shown
- var t = Tabs.Website;
- },
- };
- Tabs.Log = {
- tabOrder: 3,
- tabDisabled: false,
- tabLabel: 'Log',
- myDiv: null,
- timer: null,
- init: function(div){
- var t = Tabs.Log;
- t.myDiv = div;
- var str = '';
- str = str + '<div class="row">';
- str = str + ' <div class="large-12 columns">';
- str = str + ' <pre id="'+kb.elemPrefix+'-log-result" style="height:500px;width:1000px;overflow-y:scroll;overflow-x:scroll"><div>Log text goes here</div></pre>';
- str = str + ' </div>';
- str = str + '</div>';
- t.myDiv.innerHTML = str;
- },
- hide: function(){ // called whenever the main window is hidden, or another tab is selected
- var t = Tabs.Log;
- },
- show: function(){ // called whenever this tab is shown
- var t = Tabs.Log;
- },
- };
- Tabs.Debug = {
- tabOrder: 4,
- tabDisabled: false,
- tabLabel: 'Debug',
- myDiv: null,
- timer: null,
- init: function(div){
- var t = Tabs.Debug;
- t.myDiv = div;
- var str = '';
- str = str + '<div class="row">';
- str = str + ' <div class="large-12 columns">';
- str = str + ' <pre id="'+kb.elemPrefix+'-debug-result" style="height:500px;width:1000px;overflow-y:scroll;overflow-x:scroll"><div>Debug text goes here</div></pre>';
- str = str + ' </div>';
- str = str + '</div>';
- t.myDiv.innerHTML = str;
- },
- hide: function(){ // called whenever the main window is hidden, or another tab is selected
- var t = Tabs.Debug;
- },
- show: function(){ // called whenever this tab is shown
- var t = Tabs.Debug;
- },
- };
- Tabs.Mod = {
- tabOrder: 1,
- tabDisabled: false,
- tabLabel: 'Mod',
- myDiv: null,
- timer: null,
- init: function(div){ // called once, upon script startup
- var t = Tabs.Mod;
- t.myDiv = div;
- var str = '';
- str = str + '<div class="row">';
- str = str + ' <div class="large-12 columns text-center">';
- str = str + ' <button id="'+kb.elemPrefix+'-main-update">Update</button> v<span id="'+kb.elemPrefix+'-main-version">'+kb.scriptVer+'</span><br />';
- str = str + ' <button id="'+kb.elemPrefix+'-main-debug"><span id="'+kb.elemPrefix+'-debug-toggle">Debug: '+((Options.debug) ? 'On' : 'Off')+'</span></button>';
- str = str + ' <br /><br />';
- str = str + ' <p>All this costs money. Server costs, security certificates, domain names, etc, etc. If you use KoCByte and find it helpful, and also find yourself in a position to help me out on supporting this thing, please, feel free to donate at the link below.</p>';
- str = str + ' <form style="height:100px;" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">';
- str = str + ' <input type="hidden" name="cmd" value="_s-xclick">';
- str = str + ' <input type="hidden" name="hosted_button_id" value="JTD8WMUCKEADU">';
- str = str + ' <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">';
- str = str + ' <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">';
- str = str + ' </form>';
- str = str + ' </div>';
- str = str + '</div>';
- t.myDiv.innerHTML = str;
- $('#'+kb.elemPrefix+'-main-update').click(function(){
- AutoUpdater.check(false);
- });
- $('#'+kb.elemPrefix+'-main-debug').click(function(){
- var debug = (Options.debug) ? false : true;
- $('#'+kb.elemPrefix+'-debug-toggle').html('Debug: '+((debug) ? 'On' : 'Off'));
- Options.debug = debug;
- var debugKey = kb.storagePrefix+'_debug';
- kb.setValue(debugKey, debug);
- });
- },
- hide: function(){ // called whenever the main window is hidden, or another tab is selected
- var t = Tabs.Mod;
- },
- show: function(){ // called whenever this tab is shown
- var t = Tabs.Mod;
- },
- };
- kb.elemPrefix = 'kb-'+kb.generateRandomNumber(0,65535);
- var now = new Date().getTime();
- var k = kb.storagePrefix+'lastsent_map_data';
- var lastsent = kb.getValue(k, 0);
- kb.setValue(k, lastsent - (kb.sendMapDelay + 500));
- if(uW.AjaxCall){
- uW.AjaxCall.unwatch("gPostRequest");
- uW.AjaxCall.gPostRequest = aj2;
- }
- if(kb.currentUrl.match('src/main_src.php')){
- kb.init();
- }else if(kb.currentUrl.match('apps.facebook.com/kingdomsofcamelot/')){
- kb.init();
- }else if(kb.currentUrl.match('www.kabam.com/games/kingdoms-of-camelot/play')){
- kb.init();
- }else if(kb.currentUrl.match('www.kocbyte.com')){
- kb.initSite();
- }