您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds saving to and building from ship templates
// ==UserScript== // @name Planets.nu ship templates // @description Adds saving to and building from ship templates // @include http://planets.nu/* // @version 0.7 // @namespace https://greasyfork.org/users/2874 // ==/UserScript== /*------------------------------------------------------------------------------ 1. When at the Ship Assembly screen is displayed, if there is a hull selected, show a "Save Template" button. When selected, Save the currently ship config as a templatte. 2. If no hull is selected, display the list of available templates. Options to build (if mineral/tech requirements met) or delete template. Highlights deficiencies if unable to build. 3. (ver 0.3) Adds planet cash/minerals to display, tweaks formatting. 4. Modified display/etc to be more compact. 5. Added sorting by hulltech and hullid and a clear assembly button for the build screen. 6. Moved template storage to localStorage by race 7. Removed nameclash with save/load functions ------------------------------------------------------------------------------*/ function wrapper () { // wrapper for injection if (vgap.version < 3.0) { console.log("vgapShipTemplates plugin requires at least NU version 3.0. Plugin disabled." ); return; } var plugin_version = 0.6; console.log("vgapShipTemplates plugin version: v" + plugin_version ); vgaPlanets.prototype.setupAddOn = function (addOnName) { if (vgaPlanets.prototype.addOns == null) vgaPlanets.prototype.addOns = {}; vgaPlanets.prototype.addOns[addOnName] = {}; var settings = localStorage.getItem(addOnName + ".settings"); if (settings != null) vgaPlanets.prototype.addOns[addOnName].settings = JSON.parse(settings); else vgaPlanets.prototype.addOns[addOnName].settings = {}; vgaPlanets.prototype.addOns[addOnName].saveSettings = function () { localStorage.setItem(addOnName + ".settings", JSON.stringify(vgaPlanets.prototype.addOns[addOnName].settings)); } vgaPlanets.prototype.addOns[addOnName].current = {}; }; vgaPlanets.prototype.setupAddOn("vgapShipTemplates"); // Set to -USERSCRIPT_ID to try and prevent note type collisions vgaPlanets.prototype.addOns.vgapShipTemplates.notetype = 133678; vgaPlanets.prototype.addOns.vgapShipTemplates.sortTemplates = function (a, b) { var hulla = vgap.getHull(a.buildhullid); var hullb = vgap.getHull(b.buildhullid); if (hulla.techlevel == hullb.techlevel) { return a.buildhullid - b.buildhullid; } return hulla.techlevel - hullb.techlevel; } vgaPlanets.prototype.addOns.vgapShipTemplates.saveTemplate = function () { var src = vgap.starbaseScreen.starbase; //console.log(src); trg = {}; trg.buildhullid = src.buildhullid; trg.buildengineid = src.buildengineid; trg.buildbeamcount = src.buildbeamcount; trg.buildbeamid = src.buildbeamid; trg.buildtorpcount = src.buildtorpcount; trg.buildtorpedoid = src.buildtorpedoid; var hull = vgap.getHull(trg.buildhullid); var engine = vgap.getEngine(trg.buildengineid); var beam = vgap.getBeam(trg.buildbeamid); var torpedo = vgap.getTorpedo(trg.buildtorpedoid); trg.cost = hull.cost + (hull.engines * (engine != null ? engine.cost : 0)) + (trg.buildbeamcount * (beam != null ? beam.cost : 0))+ (trg.buildtorpcount * (torpedo != null ? torpedo.launchercost : 0)); trg.duranium = hull.duranium + (hull.engines * (engine != null ? engine.duranium : 0)) + (trg.buildbeamcount * (beam != null ? beam.duranium : 0))+ (trg.buildtorpcount * (torpedo != null ? torpedo.duranium : 0)); trg.tritanium = hull.tritanium + (hull.engines * (engine != null ? engine.tritanium : 0)) + (trg.buildbeamcount * (beam != null ? beam.tritanium : 0))+ (trg.buildtorpcount * (torpedo != null ? torpedo.tritanium : 0)); trg.molybdenum = hull.molybdenum + (hull.engines * (engine != null ? engine.molybdenum : 0)) + (trg.buildbeamcount * (beam != null ? beam.molybdenum : 0))+ (trg.buildtorpcount * (torpedo != null ? torpedo.molybdenum : 0)); console.log(trg); vgap.addOns.vgapShipTemplates.templates.push(trg); vgap.addOns.vgapShipTemplates.saveObjectLocal(vgap.addOns.vgapShipTemplates.templates); $("#SaveTemplate").hide(); }; vgaPlanets.prototype.addOns.vgapShipTemplates.deleteTemplate = function (index) { vgap.addOns.vgapShipTemplates.templates.splice(index, 1); vgap.addOns.vgapShipTemplates.saveObjectLocal(vgap.addOns.vgapShipTemplates.templates); }; vgaPlanets.prototype.addOns.vgapShipTemplates.buildFromTemplate = function (index) { // console.log("buildFromTemplate"); var template = vgap.addOns.vgapShipTemplates.templates[index]; var hull = vgap.getHull(template.buildhullid); vgap.starbaseScreen.buyHull(1, template.buildhullid); if (template.buildengineid > 0) vgap.starbaseScreen.buyEngine(hull.engines, template.buildengineid); if (template.buildbeamcount > 0) vgap.starbaseScreen.buyBeam(template.buildbeamcount, template.buildbeamid); if (template.buildtorpcount > 0) vgap.starbaseScreen.buyLauncher(template.buildtorpcount, template.buildtorpedoid); var src = template; var trg = vgap.starbaseScreen.starbase; trg.buildhullid = src.buildhullid; trg.buildengineid = src.buildengineid; trg.buildbeamcount = src.buildbeamcount; trg.buildbeamid = src.buildbeamid; trg.buildtorpcount = src.buildtorpcount; trg.buildtorpedoid = src.buildtorpedoid; vgap.starbaseScreen.showAssembly(); $("#SaveTemplate").hide(); }; vgaPlanets.prototype.addOns.vgapShipTemplates.clearAssembly = function () { vgap.starbaseScreen.clearAssembly(); console.log("Clear Assembly"); }; vgap.addOns.vgapShipTemplates.saveObjectLocal = function (obj) { localStorage.removeItem("vgapShipTemplates" + vgap.player.raceid); localStorage.setItem("vgapShipTemplates" + vgap.player.raceid, JSON.stringify(obj)); //console.log("setTemplates: " + "vgapShipTemplates" + vgap.player.raceid + " : " + localStorage.getItem("vgapShipTemplates" + vgap.player.raceid)); }; vgap.addOns.vgapShipTemplates.getObjectLocal = function () { //console.log("getTemplates"); return JSON.parse(localStorage.getItem("vgapShipTemplates" + vgap.player.raceid)); }; var old_processLoad = vgaPlanets.prototype.processLoad; vgaPlanets.prototype.processLoad = function (result) { // console.log("processLoad: " + result); // console.log(" apply: " + arguments); old_processLoad.apply(this, arguments); if (result.success) { var templates = vgap.addOns.vgapShipTemplates.getObjectLocal(); //console.log(" template: " + templates); if (templates == null) templates = []; this.addOns.vgapShipTemplates.templates = templates; } }; var old_showAssembly = vgapStarbaseScreen.prototype.showAssembly; vgapStarbaseScreen.prototype.showAssembly = function () { console.log("showAssembly"); old_showAssembly.apply(this, arguments); var starbase = this.starbase;7 if (starbase.buildhullid > 0) { var html = "<div><table class='CleanTable'>" + "<tr><td><div id='SaveTemplate' class='MoreActionButton' onclick='vgap.addOns.vgapShipTemplates.saveTemplate();'>Save Template</div></td></tr>" + "<tr><td><div id='ClearAssembly' class='MoreActionButton' onclick='vgap.addOns.vgapShipTemplates.clearAssembly();'>Clear Assembly</div></td></tr></table></div>"; $("#AssemblyBack").after(html); //console.log("showAssembly - Save"); } else{ //console.log("showAssembly - List"); var templist = "<div id='TemplateList'><table class='CleanTable'>"; vgap.addOns.vgapShipTemplates.templates.sort(vgaPlanets.prototype.addOns.vgapShipTemplates.sortTemplates); /*var temps = vgap.addOns.vgapShipTemplates.templates; if (temps.length > 1) { for (i=0; i < temps.length; i++) { for (j=0; j < temps.length -1; j++) { if (temps[j].buildhullid > temps[j+1].buildhullid) { var tempTemp = temps[j+1]; temps[j+1] = temps[j]; temps[j] = tempTemp; } } } }*/ for (i=0; i<vgap.addOns.vgapShipTemplates.templates.length; i++) { var template = vgap.addOns.vgapShipTemplates.templates[i]; var hull = vgap.getHull(template.buildhullid); var engine = vgap.getEngine(template.buildengineid); var beam = vgap.getBeam(template.buildbeamid); var torpedo = vgap.getTorpedo(template.buildtorpedoid); var planet = vgap.getPlanet(starbase.planetid); var ok_cost = planet.megacredits >= template.cost; var ok_duranium = planet.duranium >= template.duranium; var ok_tritanium = planet.tritanium >= template.tritanium; var ok_molybdenum = planet.molybdenum >= template.molybdenum; var ok_techhull = (starbase.hulltechlevel >= hull.techlevel); var ok_techengine = (engine == null || starbase.enginetechlevel >= engine.techlevel); var ok_techbeam = (beam == null || starbase.beamtechlevel >= beam.techlevel); var ok_techtorpedo = (torpedo == null || starbase.torptechlevel >= torpedo.techlevel); var ok_all = ok_cost && ok_duranium && ok_tritanium && ok_molybdenum && ok_techhull && ok_techengine && ok_techbeam && ok_techtorpedo; console.log(hull + engine + beam + torpedo); templist += "<tr>" + "<td>" + (ok_all ? "<div class='MoreActionButton' onclick='vgap.addOns.vgapShipTemplates.buildFromTemplate(" + i + ");'>Build </div>" : "<span class='BadText'>Can't Build </span>") + "</td>" + "<td colspan=4class='" + (!ok_techhull ? "BadText" : "") + "'>" + hull.name.toUpperCase() + "</td>" + "</tr>"; templist += "<tr>" + "<td><div class='MoreActionButton' onclick='vgap.addOns.vgapShipTemplates.deleteTemplate(" + i + ");vgap.starbaseScreen.showAssembly();'>Del </div></td>" + "<td class='" + (!ok_techengine ? "BadText" : "") + "'>" + (engine != null ? hull.engines + "x " + engine.name : "") + "</td>" + "<td class='" + (!ok_techbeam ? "BadText" : "") + "'>" + (beam != null ? template.buildbeamcount + "x " + beam.name : "") + "</td>" + "<td class='" + (!ok_techtorpedo ? "BadText" : "") + "'>" + (torpedo != null ? template.buildtorpcount + "x " + torpedo.name : (hull.fighterbays>0 ? hull.fighterbays + "x Fighter Bays" : "")) + "</td>" + "</tr>"; templist += "<tr>" + "<td></td>" + "<td class='" + (!ok_cost ? "BadText" : "") + "'> M: " + template.cost + "(" + planet.megacredits + ")</td>" + "<td class='" + (!ok_duranium ? "BadText" : "") + "'> D: " + template.duranium + "(" + planet.duranium + ")</td>" + "<td class='" + (!ok_tritanium ? "BadText" : "") + "'> T: " + template.tritanium + "(" + planet.tritanium + ")</td>" + "<td class='" + (!ok_molybdenum ? "BadText" : "") + "'> M: " + template.molybdenum + "(" + planet.molybdenum + ")</td>" + "</tr>"; templist += "<tr><td colspan=5><hr></td></tr>"; } templist += "</table></div>"; $(templist).appendTo("#MoreScreen"); $("#TemplateList td").attr("style", "padding-right: 10px;"); $("#TemplateList").height($(window).height() - 100); //console.log($("*").queue()); setTimeout(function () {$("#TemplateList").jScrollPane();}, 500); } }; } var script = document.createElement("script"); script.type = "application/javascript"; script.textContent = "(" + wrapper + ")();"; document.body.appendChild(script);