您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Various improvements to Game of Thrones: Ascent
// ==UserScript== // @name GOTA Improvements // @description Various improvements to Game of Thrones: Ascent // @namespace https://greasyfork.org/users/1665-nolana // @include http://gota.disruptorbeam.com/ // @include http://gota-www.disruptorbeam.com/ // @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js // @require http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.6.0/moment.min.js // @version 5 // @grant GM_xmlhttpRequest // @grant unsafeWindow // ==/UserScript== this.$ = this.jQuery = jQuery.noConflict(true); // $('div.locked').remove(); $(window).bind("load", function() { init(); }); function init() { $('#page-wrap').css('max-width',$(window).width()+'px'); $('#holdings_container').width($(window).width()-10); // remove locked buildings // $(document).on('click','#navlink-buildings',function (e) { // $('#building_items div.locked').remove(); //}); fixChat(); observeChat(); addGlobalStyle(".attack_date { color: grey; margin-left: 4px; margin-top:2px; text-align: left}"); $(document).on('click', '#incomingtab', function() { getIncoming(); }); } var incomingAttacks; function getIncoming() { console.log('getting incoming'); window.setTimeout(function () { GM_xmlhttpRequest({ method: "GET", url: "http://gota.disruptorbeam.com/play/incoming_attacks", onload: function(response) { incomingAttacks = JSON.parse(response.responseText); insertAttackTimestamps(incomingAttacks); console.log("Incoming:"+response.responseText); } }); }, 2000); } function insertAttackTimestamps(a) { console.log('insert attack timestamps'); // alert('bubu'); $('div.perkscroll div.achiev-content').each(function() { $(this).remove('span.attack_date'); var id = /[0-9]+/.exec($(this).find('div.increspond').attr('onclick')) var attack = a.attacks.filter(function(e){ return e.camp_attack_id === null ? e.pvp_id == id : e.camp_attack_id == id; })[0]; console.log("last login:" + attack.attacker.updated_at); var text = 'Last seen:' + moment(attack.attacker.updated_at,"YYYY-MM-DD HH:mm:ss Z").local().format('MMMM Do YYYY, h:mm:ss a'); $('<div class="attack_date">'+ text + '</div>').appendTo($(this)); }); unsafeWindow.$('div.perkscroll').data("jsp").reinitialise(); //alert(unsafeWindow.$('div.perkscroll').data("jsp")); } function fixChat() { var chatWidth = $(window).width()/3; addGlobalStyle(".gamechat{bottom:auto;float:none;height:auto;left:auto;right:188px;margin-left:2px;margin-top:8px;padding:1px 10px 15px;position:absolute;top:3px;width:" + chatWidth +"px;"+ "background:url(http://disruptorbeamcdn-01.insnw.net/images/pvp/actionbg.png?t=e2e9110ff577) repeat-x scroll 0 0 #000;border:1px solid #444;border-radius:12px;color:#FFF;font-size:16px;text-align:left;z-index:3}"); addGlobalStyle("b {font-weight:bold}"); addGlobalStyle("sub {font-size:11px;color:grey}"); addGlobalStyle(".gamechat .chatscroll p { width: " + (chatWidth - 60) + "px;margin-bottom: 2px;font-size: 14px;"); addGlobalStyle("#building_items div.locked { display:none; }"); $('#combatlog').width(chatWidth - 10); $('#combatlog .jspPane p.pchat').each(function () { fixChatLine($(this)); }); } function observeChat() { var target = $('#combatlog .jspPane')[0]; // Create an observer instance var observer = new MutationObserver(function( mutations ) { mutations.forEach(function( mutation ) { var newNodes = mutation.addedNodes; // DOM NodeList if (newNodes !== null) { // If there are new nodes added var $nodes = $(newNodes); // jQuery set $nodes.each(function() { var $node = $(this); if ($node.hasClass( "pactivity" )) { console.log('act:'+$node.text()); // TODO, fix activity line } else if ($node.hasClass("pchat")) { console.log('chat:' + $node.text()); fixChatLine($node, new Date().toLocaleString()); } }); } }); }); var config = { attributes: false, childList: true, characterData: false }; observer.observe(target, config); } function fixChatLine(p, time) { var text = p.text(); var result = /([^:]+):(.*)/.exec(text); if (result === null) return; // already highlighted var author = result[1]; var line = result[2]; p.find('strong').replaceWith('<strong><b>' + author + '</b>' + line + (time ? ' <sub>' + time + '</sub>' : '')); } function addGlobalStyle(css) { try { var elmHead, elmStyle; elmHead = document.getElementsByTagName('head')[0]; elmStyle = document.createElement('style'); elmStyle.type = 'text/css'; elmHead.appendChild(elmStyle); elmStyle.innerHTML = css; } catch (e) { if (!document.styleSheets.length) { document.createStyleSheet(); } document.styleSheets[0].cssText += css; } }