您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
rewrites the information you get when you hover over a planet
当前为
// ==UserScript== // @name hoverTextbox // @description rewrites the information you get when you hover over a planet // @include http://play.planets.nu/* // @include http://test.planets.nu/* // @include http://planets.nu/* // @version 3.0.0 // @homepage https://greasyfork.org/en/users/32642-stephen-piper // @namespace https://greasyfork.org/en/users/32642-stephen-piper // ==/UserScript== function wrapper() { function hitText() { } hitText.prototype = { nativeTaxAmount : function(c, ntr) { var nt = 0; if (c.nativeclans > 0) { if (c.race == 6 && ntr > 20) { // borg == 6 ntr = 20; } var nt = (c.nativeclans / 100) * (ntr / 10) * (c.nativegovernment / 5); nt = c.nativetype == 5 ? 0 : nt; // amorphous == 5 nt = c.nativetype == 6 ? 2 * nt : nt; // insect == 6 nt = c.race == 1 ? 2 * nt : nt; // feds == 1 nt = Math.round(nt); } return nt; }, }; var oldHitTextBox = vgapMap.prototype.hitTextBox; vgapMap.prototype.hitTextBox = function(c) { var q = ""; q += "<div class='ItemSelectionBox minCorrection'>"; if (c.isPlanet) { if (c.id < 0) { c = vgap.getPlanet(-c.id); } q += "<table class='CleanTable'>"; q += "<tr><td colspan='2'>" + c.id + ":" + c.name + "</td>"; if (c.clans > 0) { q += "<td align='right' colspan='2'> " + c.clans + "</td>"; q += "<td align='right'> " + c.friendlycode + "</td><td align='right'> " + c.temp + "</td>"; } q += "</tr>"; if (c.nativeclans > 0) { q += "<tr><td colspan='2'>" + c.nativeracename + "</td>"; q += "<td align='right' colspan='2'> " + c.nativeclans + "</td>" if (c.ownerid == vgap.player.id) { q += "<td align='right'> " + c.nativehappypoints + "%</td>"; q += "<td align='right'> " + c.nativetaxrate + "%</td>"; } q += "</tr>"; } // if (vgap.player.status == 7 && !c) { // var e = ["None", "Colonization", "Build Starbase", "Supply // Starbase", "Exploration", "Build Special", "Attack", "Defend", // "Move Fuel"]; // return "<tr><td colspan='" + a + "' class='WarnText'>" + // e[b.goal] + "-" + b.goaltarget + "</td></tr>" // } if (c.infoturn != 0 && !vgap.godmode) { // q += this.hitText(c, c.isPlanet).replace(" ", ""); var sp = c.factories; var cs = 0; var nt = 0; var cs20 = 0; var nt20 = 0; var sps = 0; if (c.nativeclans > 0) { if (c.nativetype == 2) { // bovinoid spn = Math.floor(c.nativeclans / 100); sps = c.clans - spn; sp += sps > 0 ? spn : c.clans; } nt = hitText.prototype.nativeTaxAmount(c, c.nativetaxrate); ns = c.clans; ns *= c.race == 1 ? 2 : 1; // feds == 1 ns *= c.nativetype == 6 ? 2 : 1; // insect == 6 ns = Math.floor(ns); cs = ns - nt; nt = cs > 0 ? nt : ns; nt20 = hitText.prototype.nativeTaxAmount(c, 20); ns20 = c.clans; ns20 *= c.race == 1 ? 2 : 1; // feds == 1 ns20 *= c.nativetype == 6 ? 2 : 1; // insect == 6 ns20 = Math.floor(ns20); cs20 = ns20 - nt20; nt20 = cs20 > 0 ? nt20 : ns20; } ct = Math.round(c.clans * c.colonisttaxrate / 1000); mn = vgap.miningRate(c, c.densityneutronium); mn = mn > c.groundneutronium ? c.groundneutronium : Math .round(mn); md = vgap.miningRate(c, c.densityduranium); md = md > c.groundduranium ? c.groundduranium : Math.round(md); mt = vgap.miningRate(c, c.densitytritanium); mt = mt > c.groundtritanium ? c.groundtritanium : Math .round(mt); mm = vgap.miningRate(c, c.densitymolybdenum); mm = mm > c.groundmolybdenum ? c.groundmolybdenum : Math .round(mm); q += "</table><table class='CleanTable'>"; if (c.groundneutronium > 0) { q += "<tr><td>neu:</td><td align='right'>" + c.neutronium + "/ </td><td align='right'>" + c.groundneutronium + "+ </td><td align='right'>" + mn + "</td>"; q += "<td> sup:</td><td align='right'>" + c.supplies + "+ </td><td align='right'>" + sp if (sps < 0) q += "- </td><td class='WarnText' align='right'>" + (-sps); + "</td></tr>"; q += "<tr><td>dur:</td><td align='right'>" + c.duranium + "/ </td><td align='right'>" + c.groundduranium + "+ </td><td align='right'>" + md + "</td>"; q += "<td> mc:</td><td align='right'>" + c.megacredits + "+ </td><td align='right'>" + (nt + ct); if (cs < 0) q += "- </td><td class='WarnText' align='right'>" + (-cs); q+= "</td></tr>"; q += "<tr><td>tri:</td><td align='right'>" + c.tritanium + "/ </td><td align='right'>" + c.groundtritanium + "+ </td><td align='right'>" + mt + "</td>"; if (c.nativeclans > 0) { q += "<td> 20%:</td><td> </td><td align='right'>" + nt20; if (cs20 < 0) q += "- </td><td class='WarnText' align='right'>" + (-cs20) ; } q += "</td></tr>"; q += "<tr><td>mol:</td><td align='right'>" + c.molybdenum + "/ </td><td align='right'>" + c.groundmolybdenum + "+ </td><td align='right'>" + mm + "</td>"; var n = vgap.getStarbase(c.id); if (n != null && vgap.accountsettings.hoverstarbasestatus && (c.ownerid == vgap.player.id || vgap .fullallied(c.ownerid))) { q += "<td> fgtr:</td><td>" + n.fighters + "</td>"; if (n.starbasetype != 2) { q += "</tr><tr><td colspan='3'>H-" + n.hulltechlevel + " E-" + n.enginetechlevel + " B-" + n.beamtechlevel + " T-" + n.torptechlevel + "</td>"; if (n.isbuilding) { q += "<td colspan='4'>Bld: " + vgap.getHull(n.buildhullid).name + "</td>" } } } q += "</tr>"; } if (c.ownerid != vgap.player.id && c.ownerid != 0) { var k = vgap.getPlayer(c.ownerid); var l = vgap.getRace(k.raceid); q += "<tr><td colspan='4'>" + l.name + " (" + k.username + ")</td></tr>" } // q += this.hitText(c, c.isPlanet).replace(" ", "") } q += "</table>"; } else { if (c.id < 0) { c = vgap.getShip(-c.id) } var m = c; var e = vgap.getHull(m.hullid); var k = vgap.getPlayer(m.ownerid); var d = "<span>" + m.id + ": " + e.name + "</span>"; // var o = m.ammo + m.duranium + m.tritanium + m.molybdenum + // m.supplies + m.clans; if (m.ownerid == vgap.player.id || vgap.fullallied(m.ownerid)) { // if ((m.ownerid == vgap.player.id && // vgap.accountsettings.hoverownshiphull) || // (vgap.fullallied(m.ownerid) && // vgap.accountsettings.hoverallyshiphull)) { // d = "<div>" + m.id + ": " + e.name + "</div>" // } d += "<table class='CleanTable'>"; if (!vgap.accountsettings.hovershortform) { if (m.duranium == 0 && m.tritanium == 0 && m.molybdenum == 0) { d += "<tr><td>neu:</td><td> " + gsv(m.neutronium) + "/" + e.fueltank + " </td>"; d += " <td> clns:</td><td> " + gsv(m.clans) + "</td></tr>"; d += " <td>sup:</td><td> " + gsv(m.supplies) + "</td>"; d += " <td> mc:</td><td> " + gsv(m.megacredits) + "</td></tr>"; } else { d += "<tr><td>neu:</td><td> " + gsv(m.neutronium) + "/" + e.fueltank + " </td>"; d += " <td> clns:</td><td> " + gsv(m.clans) + "</td></tr>"; d += "<tr><td>dur:</td><td> " + gsv(m.duranium) + "</td>"; d += " <td> sup:</td><td> " + gsv(m.supplies) + "</td></tr>"; d += "<tr><td>tri:</td><td> " + gsv(m.tritanium) + "</td>"; d += " <td> mc:</td><td> " + gsv(m.megacredits) + "</td></tr>"; d += "<tr><td>mol:</td><td> " + gsv(m.molybdenum) + "</td>"; } if (m.torps > 0 || m.bays > 0) { d += "</tr><td>fc:</td><td>" + m.friendlycode + "</td>"; var a = "fghtr"; if (m.torps > 0) { a = "torp" } d += "<td>" + a + ":</td><td> " + gsv(m.ammo) + "</td>"; } else { d += "<td> fc:</td><td> " + m.friendlycode + "</td>"; } d += "</tr>"; if (vgap.accountsettings.hovershipstatus) { if (c.ownerid != vgap.player.id) { if (m.iscloaked) { d += "<tr><td colspan='2' class='GoodText'>Cloaked</td></tr>" } } else { d += "<tr>"; // if (m.ownerid == vgap.player.id) { // d += "<td colspan='2'>" + // vgap.getShipMissionShortText(m) + ((m.mission == // 6 || m.mission == 7 || m.mission == 15 || // m.mission == 20) && m.mission1target != 0 ? " " + // m.mission1target : "") + "</td>"; // } var ly = Math.round(Math.sqrt(Math.pow(m.y - m.targety, 2) + Math.pow(m.x - m.targetx, 2)) * 10) / 10; d += "<td>(" + m.targetx + ", " + m.targety + ")</td><td> " + ly + " ly</td>"; d += "<td> warp " + m.warp + "</td></tr>"; if (m.iscloaked) { d += "<td class='GoodText'>Cloaked</td>" } else { if (m.damage > 0) { d += "<td>dam:</td><td class='BadText'> " + m.damage + "</td>" } else { d += "<td/></td>" } } d += "</tr>" } } else { if (m.iscloaked) { d += "<tr><td colspan='2' class='GoodText'>Cloaked</td></tr>" } } if (c.ownerid != vgap.player.id && vgap.accountsettings.hoverallyplayer) { d += "<tr><td colspan='4'>" + l.name + " (" + k.username + ")</td></tr>" } d += this.hitText(c, c.isPlanet).replace(" ", "") } else { d += "<tr><td>Neu:</td><td> " + gsv(m.neutronium) + " / " + e.fueltank + " </td><td> Dur:</td><td> " + gsv(m.duranium) + "</td><td> Tri:</td><td> " + gsv(m.tritanium) + "</td><td> Mol:</td><td> " + gsv(m.molybdenum) + "</td></tr>"; d += "<tr><td>MC:</td><td> " + gsv(m.megacredits) + "</td><td> Cln:</td><td> " + gsv(m.clans) + "</td><td> Sup:</td><td> " + gsv(m.supplies) + "</td>"; if (m.torps > 0 || m.bays > 0) { var a = "Ftr"; if (m.torps > 0) { a = "Tor" } d += "<td> " + a + ":</td><td> " + gsv(m.ammo) + "</td>" } d += "</tr>"; if (vgap.accountsettings.hovershipstatus) { if (c.ownerid != vgap.player.id) { if (m.iscloaked) { d += "<tr><td colspan='2' class='GoodText'>Cloaked</td></tr>" } } else { d += "<tr>"; if (m.ownerid == vgap.player.id) { d += "<td colspan='2'>" + vgap.getShipMissionShortText(m) + ((m.mission == 6 || m.mission == 7 || m.mission == 15 || m.mission == 20) && m.mission1target != 0 ? " " + m.mission1target : "") + "</td>" } else { d += "<td/><td/>" } if (m.iscloaked) { d += "<td colspan='2' class='GoodText'> Cloaked</td>" } else { if (m.damage > 0) { d += "<td> Dmg:</td><td class='BadText'> " + m.damage + "</td>" } else { d += "<td/><td/>" } } d += "<td colspan='2'> Warp " + m.warp + "</td>"; if (m.ownerid == vgap.player.id) { d += "<td> FC:</td><td> " + m.friendlycode + "</td>" } d += "</tr>" } } else { if (m.iscloaked) { d += "<tr><td colspan='2' class='GoodText'>Cloaked</td></tr>" } } if (c.ownerid != vgap.player.id && vgap.accountsettings.hoverallyplayer) { d += "<tr><td colspan='8'>" + l.name + " (" + k.username + ")</td></tr>" } d += this.hitText(c, c.isPlanet, 8).replace(" ", "") } d += "</table>" } else { q += "<div>" + vgap.getRace(k.raceid).name + " (" + vgap.getPlayer(c.ownerid).username + ")</div>"; d += "<table class='CleanTable'>"; d += "<tr><td>Heading:</td><td> " + gsv(m.heading) + " at Warp: " + gsv(m.warp) + "</td></tr>"; d += "<tr><td>Mass: </td><td> " + gsv(m.mass) + "</td></tr>"; if (vgap.player.raceid == 7) { for (var f = 0; f < vgap.messages.length; f++) { var g = vgap.messages[f]; if (g.messagetype == 12 && g.target == m.id) { d += "<tr><td class='BadText'>OUT OF FUEL</td></tr>"; break } } } if (m.iscloaked) { d += "<tr><td colspan='2' class='GoodText'>Cloaked</td></tr>" } d += this.hitText(c, c.isPlanet).replace(" ", ""); d += "</table>" } q += d } q += "</div>"; return q }; var oldShoeInfo = vgapMap.prototype.showInfo; vgapMap.prototype.showInfo = function(a, b) { var h = Math.round(vgap.map.mapX(a)); var j = Math.round(vgap.map.mapY(b)); var c = null; if (h > 0 && h < 4000 && j > 0 && j < 4000) { c = vgap.map.checkForHit(h, j) } vgap.map.over = c; vgap.map.x = h; vgap.map.y = j; var f = "<span class='coordDisplay titleSelectionBox'> x: " + h + " y: " + j + " </span>"; if (c) { if (c.isPlanet) { f += vgap.map.hitTextBox(c) } var e = vgap.shipsAt(c.x, c.y); for (var d = 0; d < e.length; d++) { f += vgap.map.hitTextBox(e[d]) } } var g = ""; g += vgap.map.ionText(h, j); g += vgap.map.mineText(h, j); g += vgap.map.nebText(h, j); g += vgap.map.starText(h, j); g += vgap.map.debrisText(h, j); if (g != "undefined") { f += g; } if (vgap.map.zoom != 1) { f += "<div class='ItemSelectionBox minCorrection'>Zoom: " + Math.round(vgap.map.zoom * 100) + "% </div>" } vgap.map.loc.html("<div class='ItemSelection_border'>" + f + "</div>"); vgap.map.container.css("cursor", "inherit"); if (vgap.map.over) { if (vgap.map.activePlanet == null && vgap.map.activeShip == null) { vgap.map.container.css("cursor", "pointer") } else { vgap.map.container.css("cursor", "pointer") } } }; }; var script = document.createElement("script"); script.type = "application/javascript"; script.textContent = "(" + wrapper + ")();"; document.body.appendChild(script);