// ==UserScript== // @name Ogame - 1.x - Fleet // @author Sherbrow // @namespace Ogame // @include http://*.ogame.*/game/index.php?page=fleet* // // @version v0.4.1b // @description Script for OGame with the new graphic interface. Add some fleet features and shortcuts. // @downloadURL none // ==/UserScript== var DEBUG = true; // set to true if you want to see the errors (alert nagging) --> will be handled by the Config Panel when implemented var conf_slider = false; // deactivate by default as no longer necessary (and broken) var OFH = new Object(); // global object (window.OFH) OFH.errors = new Array(); // errors are stored there if you want to see / report try { // Global exception handler, because we never know =) // Static images var img_ship_mov = 'http://gf2.geo.gfsrv.net/cdnd9/f9cb590cdf265f499b0e2e5d91fc75.gif'; var img_ships = 'http://gf3.geo.gfsrv.net/cdn5e/8210a229031b77ea51100242538347.png'; var img_ecke = 'http://gf2.geo.gfsrv.net/cdn42/e3d481656bab1b216428a98a2e022e.gif'; var img_starstreak = 'http://gf1.geo.gfsrv.net/cdnf5/6006050db8c19f1d3734c7f1ee4c89.gif'; var universe,lang,sublang,fleetLocation,fleetLocationActual; var t_array = /http:\/\/s([0-9]+)-([a-z]+)\.ogame\.gameforge\.com\/game\/index\.php\?page=fleet([0-9]+)/.exec(document.location.href); universe = t_array[1]; sublang = t_array[2]; lang = t_array[2]; fleetLocation = t_array[3]; fleetLocationActual = /fleet([0-9])/.exec(document.getElementsByTagName("body")[0].getAttribute("id"))[1]; if(!fleetLocationActual) { // who kows ... may be deleted in a future version if(fleetLocation=="2" && document.getElementById("allornone")) // Cuz' when you switch from fleet2 to another planet, you don't automatically return to fleet 1 >< fleetLocation = "1"; fleetLocationActual = fleetLocation; } if(fleetLocationActual == "1") { try { // SC/LC buttons var fleetIsAvailable = true; var AoN; // All or none buttons container (original) try { AoN = document.getElementById("allornone").firstElementChild.firstElementChild; } catch (e) { fleetIsAvailable = false; } if(fleetIsAvailable) { var RSB; // Ressources shrorcut buttons var LC_available,SC_available,LC_required,SC_required; var a,img,div,span,span2,span3,t_class; //-- Compute cargos for ressources (not dynamic) LC_required = Math.ceil((unsafeWindow.resourceTickerMetal.available+unsafeWindow.resourceTickerCrystal.available+unsafeWindow.resourceTickerDeuterium.available)/25000); LC_available = parseInt(document.getElementById("button203").firstElementChild.firstElementChild.firstElementChild.firstElementChild.childNodes[1].nodeValue.replace(/[.,]/,"")); SC_required = Math.ceil((unsafeWindow.resourceTickerMetal.available+unsafeWindow.resourceTickerCrystal.available+unsafeWindow.resourceTickerDeuterium.available)/5000); SC_available = parseInt(document.getElementById("button202").firstElementChild.firstElementChild.firstElementChild.firstElementChild.childNodes[1].nodeValue.replace(/[.,]/,"")); RSB = document.createElement("DIV"); RSB.setAttribute("class",AoN.getAttribute("class")+" OFH"); a = document.createElement("A"); // Small Cargos a.setAttribute("title","|"+addDotsToInt(SC_required)); a.setAttribute("href","#SC_ressources"); t_class = (SC_available>0)?"on":"off"; (SC_required>SC_available)?a.setAttribute("class","tipsStandard RSB SC less "+t_class):a.setAttribute("class","tipsStandard RSB SC enough "+t_class); a.setAttribute("onclick",'shipsChosen.am202.value='+SC_required+'; checkIntInput("ship_202", 0, '+SC_required+'); checkShips("shipsChosen");event.preventDefault();'); span = document.createElement("span"); span.setAttribute("class","ecke"); a.appendChild(span); span = document.createElement("span"); span.setAttribute("class","number"); span.appendChild(document.createTextNode(addDotsToInt(SC_required))); a.appendChild(span); RSB.appendChild(a); a = document.createElement("A"); // Large Cargos a.setAttribute("title","|"+addDotsToInt(LC_required)); a.setAttribute("href","#LC_ressources"); t_class = (LC_available>0)?"on":"off"; (LC_required>LC_available)?a.setAttribute("class","tipsStandard RSB LC less "+t_class):a.setAttribute("class","tipsStandard RSB LC enough "+t_class); a.setAttribute("onclick",'shipsChosen.am203.value='+LC_required+'; checkIntInput("ship_203", 0, '+LC_required+'); checkShips("shipsChosen");event.preventDefault();'); span1 = document.createElement("span"); span1.setAttribute("class","ecke"); a.appendChild(span1); span2 = document.createElement("span"); span2.setAttribute("class","number"); span2.appendChild(document.createTextNode(addDotsToInt(LC_required))); a.appendChild(span2); RSB.appendChild(a); div = document.createElement("DIV"); // Clear div.setAttribute("class","clearfloat"); RSB.appendChild(div); AoN.parentNode.insertBefore(RSB,AoN.nextElementSibling); GM_addStyle(".OFH."+AoN.getAttribute("class").replace(' ','.')+" {width:auto!important;}"); GM_addStyle(".OFH a.RSB {display:block;position:relative;width:76px;height:32px;cursor:pointer;float:left;margin:0px 1px;}"); GM_addStyle(".OFH a.RSB.SC.on {background:url(\""+img_ships+"\") no-repeat scroll 0px -36px transparent;}"); GM_addStyle(".OFH a.RSB.SC.off {background:url(\""+img_ships+"\") no-repeat scroll 0px -196px transparent;}"); GM_addStyle(".OFH a.RSB.LC.on {background:url(\""+img_ships+"\") no-repeat scroll -80px -23px transparent;}"); GM_addStyle(".OFH a.RSB.LC.off {background:url(\""+img_ships+"\") no-repeat scroll -80px -183px transparent;}"); GM_addStyle(".OFH a.RSB .ecke {display:block;opacity:0.8;width:100%;height:100%;background:url(\""+img_ecke+"\") no-repeat scroll left bottom transparent;}"); GM_addStyle(".OFH a.RSB .number {position:absolute;bottom:0px;right:0px;margin-right:2px;}"); GM_addStyle(".OFH a.RSB.enough .number {color:#FF9600}"); GM_addStyle(".OFH a.RSB.less .number {color:#FF0000}"); } // If fleet is available } catch(e){if(DEBUG) alert("OFH Error(LC/SC)\n"+e.toString());OFH.errors.push("OFH Error(LC/SC)\n"+e.toString());} try { // SC/LC buttons unsafeWindow.$('.fleetValues').attr('onfocus',''); // Shame on me unsafeWindow.toggleMaxShips = function(h,g,f){var e=$(h).find("#ship_"+g);if(parseInt(e.val())!==f){e.val(f)}else{e.val("")}e.get(0).setSelectionRange(0,99);} } catch(e){if(DEBUG) alert("OFH Error(fixes sel input)\n"+e.toString());OFH.errors.push("OFH Error(fixes sel input)\n"+e.toString());} } // fleet 1 else if(fleetLocationActual == "2") { try{ // First of all, transform the planet on the right var planets = document.getElementById("myPlanets").getElementsByClassName("smallplanet"); for(i=0;i([^\[]+) /.exec(planet.getAttribute("title"))[1]; } catch (e) { // name = planet.children[1].firstChild.nodeValue; name = "Shortcut does not work"; } target+=name; planet.setAttribute('data-sl_target',target); // planet.setAttribute("onclick","document.getElementById(\"slbox\").value = \""+target+"\";shortLinkChange();updateVariables();event.preventDefault();return false;"); planet.addEventListener("click",function(e) { e.preventDefault();document.getElementById("slbox").value = this.getAttribute('data-sl_target');shortLinkChange();updateVariables();return false;}, true); planet.setAttribute("ondblclick","document.location.href=this.href;"); // A lil' bit ugly, but it works ^-^ planet.setAttribute("title","Change destination to:
"+name+" "+koord[0]+""); planet.setAttribute("onmouseover","this.firstElementChild._src=this.firstElementChild.src;this.firstElementChild.src=\""+img_ship_mov+"\";this.firstElementChild.style.width='16px';this.firstElementChild.width=16;this.firstElementChild.height=16;this.firstElementChild.style.padding='7px';"); planet.setAttribute("onmouseout","this.firstElementChild.src=this.firstElementChild._src;this.firstElementChild.style.width='30px';this.firstElementChild.width=30;this.firstElementChild.height=30;this.firstElementChild.style.padding='0px';"); moon = planet.nextElementSibling; if(moon) { // If there is a sibling (moon or construction) if(/moonlink/.test(moon.getAttribute("class"))) { target=koord[1]+"#"+koord[2]+"#"+koord[3]+"#3#"; //the 3 is for moon try { // Some traduction may have problems, in case, let's just forget the moon =S name = /([^\[]+) /.exec(moon.getAttribute("title"))[1]; } catch (e) { name = "Shortcut does not work"; } target+=name; moon.setAttribute('data-sl_target',target); // moon.setAttribute("onclick","document.getElementById(\"slbox\").value = \""+target+"\";shortLinkChange();updateVariables();event.preventDefault();return false;"); moon.addEventListener("click",function(e) { e.preventDefault();document.getElementById("slbox").value = this.getAttribute('data-sl_target');shortLinkChange();updateVariables();return false;}, true); moon.setAttribute("ondblclick","document.location.href=this.href;"); // A lil' bit ugly, but it works ^-^ moon.setAttribute("title","Change destination to:
"+name+" "+koord[0]+" (moon)"); moon.setAttribute("onmouseover","this.firstElementChild._src=this.firstElementChild.src;this.firstElementChild.src=\""+img_ship_mov+"\""); moon.setAttribute("onmouseout","this.firstElementChild.src=this.firstElementChild._src"); } } } GM_addStyle("#myPlanets .planetPic {width:30px;}"); } catch(e) {if(DEBUG) alert("OFH Error(planet shortcuts)\n"+e.toString());OFH.errors.push("OFH Error(planet shortcuts)\n"+e.toString());} try{ // Then speed slider (that sounds awesome !) if(conf_slider) { OFH.slider = new Object(); var speedSelect = document.getElementById("speed"); OFH.slider.updatePosition = function() { var speed = speedSelect.value; document.getElementById("OFH_speedSlider").style.left = (2+(16*(speed-1)))+"px"; } OFH.slider.updateSpeed = function(e) { speedSelect.value = Math.round(((parseInt(document.getElementById("OFH_speedSlider").style.left)-2)/16))+1; // I know, I know ... unsafeWindow.updateVariables(); if(e) e.stopPropagation(); } OFH.slider.moveCursor = function(e) { var t_object=slider,positionSlider = 0; var positionCursor = e.clientX; while(t_object.offsetParent) { positionSlider += t_object.offsetLeft; t_object = t_object.offsetParent; } speedSelect.value=Math.floor(parseInt((positionCursor-positionSlider)/16))+1; OFH.slider.updatePosition(); unsafeWindow.updateVariables(); e.preventDefault(); } OFH.slider.startSliding = function(e) { document.getElementsByTagName("body")[0].addEventListener("mousemove",OFH.slider.moveCursor,false); document.getElementsByTagName("body")[0].addEventListener("mouseup",OFH.slider.stopSliding,false); e.preventDefault(); } OFH.slider.stopSliding = function(e) { document.getElementsByTagName("body")[0].removeEventListener("mousemove",OFH.slider.moveCursor,false); document.getElementsByTagName("body")[0].removeEventListener("mouseup",OFH.slider.stopSliding,false); e.preventDefault(); } var speedLine = document.getElementById("fleetBriefingPart1").children[0]; var i,slider,pointer; speedLine.parentNode.parentNode.removeChild(speedLine.parentNode.nextElementSibling.nextElementSibling); // remove the BE clearfloat which mess the view speedLine.appendChild(document.createElement("br")); slider = document.createElement("span"); slider.setAttribute("class","OFH slider"); slider.addEventListener("click",OFH.slider.moveCursor,false); slider.addEventListener("mousedown",OFH.slider.startSliding,false) pointer = document.createElement("img"); pointer.setAttribute("class","sliderPointer"); pointer.setAttribute("id","OFH_speedSlider"); pointer.setAttribute("alt","|"); pointer.setAttribute("src",img_ship_mov); pointer.addEventListener("click",OFH.slider.updateSpeed,false); slider.appendChild(pointer); speedLine.appendChild(slider); speedSelect.addEventListener("change",OFH.slider.updatePosition,false); speedSelect.addEventListener("keyup",OFH.slider.updatePosition,false); GM_addStyle(".OFH.slider {display:block;margin-top:1px;height:20px;width:160px;position:relative;border:1px solid #DDD;border-radius:5px;background:url(\""+img_starstreak+"\") no-repeat scroll -108px -11px transparent;}"); GM_addStyle(".OFH.slider .sliderPointer {position:absolute;top:2px;left:146px;width:11px;transform: rotate(90deg);}"); try { // In case of a "back" action, we should update at the current speed OFH.slider.updatePosition(); document.getElementsByTagName("body")[0].addEventListener("load",function(e){alert('load');OFH.slider.updatePosition();},false); } catch(e) {} } } catch(e) {if(DEBUG) alert("OFH Error(speed slider)\n"+e.toString());OFH.errors.push("OFH Error(speed slider)\n"+e.toString());} try{ // Then Last target shortcut var lastTarCode = GM_getValue("OFH_"+universe+"."+lang+"_lastDestination"); if(lastTarCode) { var select = document.getElementById("slbox"), lastTar,tarButtonText,option; var lastTarValues = /([^#]+)#([^#]+)#([^#]+)#([^#]+)#([^#]+)/.exec(lastTarCode); var fullName = lastTarValues[5]+" ["+lastTarValues[1]+":"+lastTarValues[2]+":"+lastTarValues[3]+"]"+((lastTarValues[4]=="3")?" (moon)":""); option = document.createElement("option"); option.setAttribute("value",lastTarCode); option.appendChild(document.createTextNode(fullName)); select.appendChild(option); lastTar = document.createElement("button"); lastTar.setAttribute("type","button"); lastTar.setAttribute("class","lastTar OFH tipsStandard"); lastTar.setAttribute("onclick","event.preventDefault();document.getElementById(\"slbox\").value = \""+lastTarCode+"\";shortLinkChange();updateVariables();"); lastTar.setAttribute("title","Change destination to:
"+fullName+""); tarButtonText = document.createElement("span"); tarButtonText.setAttribute("style","width:100%;display:block;overflow:hidden;"); tarButtonText.appendChild(document.createTextNode(fullName)); lastTar.appendChild(tarButtonText); select.parentNode.appendChild(lastTar); GM_addStyle(".OFH.lastTar {position:relative;padding: 0 0 2px;font-size:1em;overflow:hidden;border:1px solid #191E23;width:144px;background:black;color:white;cursor:pointer;}"); GM_addStyle(".OFH.lastTar:hover {background:#000011;color:white;}"); GM_addStyle(".OFH.lastTar:active {background:#848484;color:white;}"); select.style.display = "none"; } } catch(e) {if(DEBUG) alert("OFH Error(Last target shortcut)\n"+e.toString());OFH.errors.push("OFH Error(Last target shortcut)\n"+e.toString());} } // fleet 2 else if(fleetLocationActual == "3") { try { // Last Target Save var save,t_res; t_res = /\[([0-9]+):([0-9]+):([0-9]+)\] (.*)/.exec(document.getElementById("roundup").firstElementChild.children[1].firstElementChild.textContent); save=t_res[1]+"#"; // Galaxy save+=t_res[2]+"#"; // System save+=t_res[3]+"#"; // Position save+=document.getElementsByName("type")[0].value+"#"; // Type save+=t_res[4]; // Name GM_setValue("OFH_"+universe+"."+lang+"_lastDestination",save); } catch(e) {if(DEBUG) alert("OFH Error(Last target save)\n"+e.toString());OFH.errors.push("OFH Error(Last target save)\n"+e.toString());} } // fleet 3 } catch(e) { // Global exception handler if(DEBUG) alert("OFH Error\n"+e.toString()); OFH.errors.push("OFH Error\n"+e.toString()); } unsafeWindow.OFH = OFH; //-- Utils (if anyone want to use this part for a "utils" script, feel free to do so)--// function addDotsToInt(num) { var str = new String(num); var res = new String; var count = 0; for(i=str.length-1;i>=0;--i && ++count) { res = str[i].concat(res); if(count==2) { count=0;res = String(".").concat(res);} } return res; }