// ==UserScript== // @name CCE+ // @namespace http://www.dvdmypictures.com // @source http://userscripts.org/scripts/show/6982 // @identifier http://userscripts.org/scripts/source/6982.user.js // @version 2.0 // @date 2007-01-19 // @include http://ev5.neondragon.net/* // @include http://evo-dev.neondragon.net/* // @include http://ev5.neondragon.net/* // @include http://evo-dev.neondragon.net/* // @author Pipes // ==/UserScript== // *************************************************************************** // ** Global Variables // *************************************************************************** const scriptversion = '0.1'; const scriptversionID = '[CCE]evo+ ' + scriptversion; const scriptTag = 'Play The Piper'; GM_log(scriptversionID + " start"); // safegard if(! unsafeWindow.evo_plus ) { alert("Improper installation. Please uninstall evo+ AND nEvo+, then install:\n- evo+\n- nEvo+\nIn that order."); return; } // page handlers var pageHandlers = new Array(); var contents = null; // pointer to the 'content' node in the page // imported vars var units = unsafeWindow.evo_plus.units; // units :P var pMetal = unsafeWindow.evo_plus.pMetal; var pMineral = unsafeWindow.evo_plus.pMineral; var pFood = unsafeWindow.evo_plus.pFood; var pScore = unsafeWindow.evo_plus.pScore; var eeb = Number(GM_getValue('eeb', 1)); // efficient breeding center ratio // constants var FOODCOST = 91; // evo, devo? var dEvo = /^http:\/\/evo-dev\./.test(document.location.href); // // *************************************************************************** // ** Page handlers // *************************************************************************** const boostally = boostally; (function() { var words = new Array(); var bgColors = new Array(); var fgColors = new Array(); /* Add your own "words" to this "list", in the same format. The next word would be * words[2] = "some word or phrase" * add more colors, too * if there is no color corresponding to the word (no bgColors[4] for words[4]) the first (bgColors[0]) will be used * The words are should be written in all caps, but the word matching is not case sensitive */ var ally = "[CCE]|[NOD]"; var allyColor = "skyblue"; var enemy = "[PHI]|[{rnb}]"; var enemyColor = "red"; var nap = "[KWH]|[WTF]"; var napColor = "orange"; theAllies = ally.split("|"); for (z = 0; z <= theAllies.length; z++){ if (theAllies[z] == undefined) continue; words[words.length] = theAllies[z].toUpperCase(); bgColors[bgColors.length] = allyColor; } theNAPs = nap.split("|"); for (z = 0; z <= theNAPs.length; z++){ if (theNAPs[z] == undefined) continue; words[words.length] = theNAPs[z].toUpperCase(); bgColors[bgColors.length] = napColor; } theEnemys = enemy.split("|"); for (z = 0; z <= theEnemys.length; z++){ if (theEnemys[z] == undefined) continue; words[words.length] = theEnemys[z].toUpperCase(); bgColors[bgColors.length] = enemyColor; } words[words.length] = "[CCE]"; bgColors[bgColors.length] = ""; fgColors[fgColors.length] = "yellowgreen"; words[words.length] = "---"; bgColors[bgColors.length] = "lightGreen"; fgColors[fgColors.length] = "Black"; // Leaders words[words.length] = "BEREFT OF"; bgColors[bgColors.length] = "lightblue"; fgColors[fgColors.length] = "Black"; words[words.length] = "DRACON7"; bgColors[bgColors.length]= "lightblue"; fgColors[fgColors.length] = "Black"; words[words.length] = "MUNCH OF"; bgColors[bgColors.length] = "lightblue"; fgColors[fgColors.length] = "Black"; // Rebel Guard words[words.length] = "MURF OF CATHAL"; bgColors[bgColors.length] = "White"; fgColors[fgColors.length] = "Black"; words[words.length] = "SCORPATTARIUS OF"; bgColors[bgColors.length] = "White"; fgColors[fgColors.length] = "Black"; words[words.length] = "GEARJAMMER OF"; bgColors[bgColors.length] = "White"; fgColors[fgColors.length] = "Black"; words[words.length] = "PIPES6969"; bgColors[bgColors.length] = "White"; fgColors[fgColors.length] = "Black"; words[words.length] = "THE1STVOICE"; bgColors[bgColors.length] = "White"; fgColors[fgColors.length] = "Black"; for(var i = 0; i < words.length; i++) { var xpath = "//a[contains(translate(.,'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'),'"+words[i]+"')]"; var results = document.evaluate(xpath, document, null, XPathResult.UNORDERED_SNAPSHOT_TYPE, null); var items = new Array(); var thisItem = results.iterateNext(); while(thisItem) { items.push(thisItem); thisItem = results.iterateNext(); } for(var ii = 0; ii < items.length; ii++) { items[ii].style.backgroundColor = bgColors[i]?bgColors[i]:bgColors[0]; items[ii].style.color = fgColors[i]?fgColors[i]:fgColors[0]; } } })() function do_platypus_script() { html_insert_it(window.document,document.evaluate('/HTML[1]/BODY[1]/DIV[1]/DIV[1]/DIV[4]/DIV[2]/UL[1]/LI[1]/A[1]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,'
  • Off Site Forum
  • Mas.Msg (High Guard)
  • Mas.Msg (Alliance)
  • ',true,false); html_insert_it(window.document,document.evaluate('/HTML[1]/BODY[1]/DIV[1]/DIV[1]/DIV[3]/DIV[2]/UL[1]/LI[4]/A[1]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue,'
  • Att / Def Calc
  • Launch Table Calc
  • ',false,false); html_insert_it(window.document,document.getElementById('gametime'),'',false,false); }; // Ends do_platypus_script window.addEventListener("load", function() { do_platypus_script() }, false); // // Mon Dec 19 15:59:37 2005 -- Scott R. Turner // Short, uncommented file containing all the code to implement Platypus // actions. Can be "included" into the Platypus script. // // // function walk_down(node, func) { if (node.nodeType == 1) { if (node.tagName != "IMG") func(node); if (node.childNodes.length != 0) for (var i=0; i 0) { doc.body.removeChild(doc.body.childNodes[0]); }; var replacement_div = doc.createElement ("DIV"); replacement_div.setAttribute('style', "margin: 0 2%; text-align: left"); replacement_div.appendChild(node); doc.body.appendChild(replacement_div); }; function set_style_script(doc, element, new_style) { element.setAttribute('style', new_style); }; function modify_single_url(doc, match_re, replace_string, node) { if (node.href) { node.href = node.href.replace(match_re, replace_string); }; }; function do_modify_url_it(doc, node, match_re, replace_string, global_flag) { match_re = new RegExp(match_re); if (global_flag) { var allurls = doc.getElementsByTagName('A'); for(var i = 0, url; url = allurls[i]; i++) modify_single_url(doc, match_re, replace_string, url); } else { modify_single_url(doc, match_re, replace_string, node); }; }; function do_modify_html_it(doc, element, match_re, replace_string) { match_re = new RegExp(match_re); if (element.innerHTML) { element.innerHTML = element.innerHTML.replace(match_re, replace_string); }; }; function relax(doc, node) { walk_down(node, function (node) { node.style.width = 'auto'; node.style.marginLeft = '0pt'; node.style.marginRight = '0pt'; if (node.width) node.width = null; }); } function fix_page_it(doc, node) { doc.background = null; doc.bgColor = "white"; if (doc.style) { doc.style.backgroundColor = "white"; doc.style.backgroundImage = "none"; if (doc.style.color == "white") { doc.style.color = "black"; }; if (doc.text == "white") { doc.text = "black"; }; }; doc.body.background = null; doc.body.bgColor = "white"; if (doc.body.style) { doc.body.style.backgroundColor = "white"; doc.body.style.backgroundImage = "none"; if (doc.body.style.color == "white") { doc.body.style.color = "black"; }; if (doc.body.text == "white") { doc.body.text = "black"; }; }; }; function insertAfter(newNode, target) { var parent = target.parentNode; var refChild = target.nextSibling; if(refChild != null) parent.insertBefore(newNode, refChild); else parent.appendChild(newNode); }; function html_insert_it(doc, element, new_html, before, insert_as_block) { var new_element; if (insert_as_block) { new_element = doc.createElement ("DIV"); } else { new_element = doc.createElement ("SPAN"); }; new_element.innerHTML = new_html; if (before) { element.parentNode.insertBefore(new_element, element); } else { insertAfter(new_element, element); }; }; function auto_repair_it(doc, node) { var biggest_elem = find_biggest_elem(doc); isolate(doc, biggest_elem); relax(doc, biggest_elem); make_bw(doc, biggest_elem); fix_page_it(doc, biggest_elem); }; function find_biggest_elem(doc) { const big_element_limit = 0.25; var size_of_doc = doc.documentElement.offsetHeight * doc.documentElement.offsetWidth; var body = doc.body; var size_of_body = body.offsetHeight * body.offsetWidth; if (size_of_body < (0.80 * size_of_doc)) { size_of_body = size_of_doc; }; var max_size = 0; var max_elem = doc; var allElems = document.evaluate("//*", doc.body, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0; i < allElems.snapshotLength; i++) { var thisElem = allElems.snapshotItem(i); var thisElem_size = thisElem.offsetHeight * thisElem.offsetWidth; if (thisElem_size < size_of_body && thisElem_size > max_size && !contains_big_element(thisElem, size_of_body * big_element_limit)) { max_size = thisElem_size; max_elem = thisElem; }; }; return max_elem; }; function contains_big_element(node, limit) { if (node.childNodes.length != 0) for (var i=0; i limit) return true; }; return false; }; function platypus_do(win, func_name, o, other, other2, other3) { var func = eval(func_name); var doc = null; if (func == null) return; if (!o) { Warning("Platypus couldn't find a page element when executing the command "+ func_name+". This usually happens when running a script -- maybe the"+ " web page the script is running on has changed."); }; doc = win.document; func(doc, o, other, other2, other3); }; // // *************************************************************************** // ** MAIN // *************************************************************************** // (function () { var node; // Initialization // ----------------------------------------------------------------------- // contents node contents = document.getElementById("content"); // get out of the bloody forums message editor if( contents == null ) return; // Dispatch // ----------------------------------------------------------------------- for(var i = 0; i < pageHandlers.length; i++ ) { if( pageHandlers[i].urlRegEx == null || pageHandlers[i].urlRegEx.test(document.location.pathname) ) pageHandlers[i].handler(); } node = document.getElementById('evomagik'); if (node){ node.appendChild(document.createElement('br')); node.appendChild(document.createTextNode(scriptversionID)); } // fix a bug in evo with non existent adverts that prevent the use of the top panel if(! (node = document.getElementById('advert')) ) { node = document.createElement('span'); node.id = 'advert'; contents.appendChild(node); } }) (); // *************************************************************************** // ** Helper functions // *************************************************************************** function evoLayoutChanged() { alert('Oops.. Page layout was not recognized, Neon probably changed the page :('); } function evoNumber2String(num) { var re = /(\d+)(\d{3})/g; num = String(num); var decimalIdx = num.indexOf('.'); var part1 = '1', part2=""; if( decimalIdx != -1 ) { part1 = num.substring(0, decimalIdx); part2 = num.substring(decimalIdx + 1, num.length); } else part1 = num; while( re.test(part1) ) part1 = part1.replace(re, '$1,$2'); return part2 == "" ? part1 : part1 + "." + part2; } function evoString2Number(num) { return Number(num.replace(/,/g,'')); } function evoFromatNumberZ(num, zeros) { var str = "0000" + Math.floor(Math.abs(num)); return str.substr(-zeros); } // // *************************************************************************** // ** Objects // *************************************************************************** // // Page Handler hooks function pageHandler(urlRegEx, handler) { this.urlRegEx = urlRegEx; this.handler = handler; } function regPageHandler(urlRegEx, handler) { pageHandlers.push(new pageHandler(urlRegEx, handler)); } // // *************************************************************************** // ** MISC // *************************************************************************** // GM implementation of cookies :) function evoSetCookie(name, value, hours) { GM_setValue('cv_' + name, value); var expire = new Date(); expire.setUTCHours(expire.getUTCHours() + hours); GM_setValue('cx_' + name, expire.toGMTString()); } function evoGetCookie(name) { var value = GM_getValue('cv_' + name); var expire = GM_getValue('cx_' + name); if( value != null && expire != null ) { expire = new Date(expire); if( expire.valueOf() >= Date.now() ) return value; } return null; }