您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
View zones, editor unlock
// ==UserScript== // @name Spacom addons // @namespace http://tampermonkey.net/ // @version 0.1 // @description View zones, editor unlock // @author segrey // @match https://spacom.ru/?act=map // @match https://spacom.ru/?act=design* // @run-at document-end // ==/UserScript== (function (w) { function waitFor(obj, prop, callback) { var token = setInterval(function () { if (obj[prop] !== undefined) { clearInterval(token); callback(obj[prop]); } }, 0); } function createMapButton (css) { var last = $("#radar + div"); var next = $('<div><i class="fa '+css+' fa-2x"></i></div>').css({ "z-index": last.css("z-index"), "position": last.css("position"), "cursor": last.css("cursor"), "color": last.css("color"), "right": last.css("right"), "bottom": (parseInt(last.css("bottom")) + 40) + "px" }); last.before(next); return next; } if (!w.Addons) { w.Addons = {}; } Addons.ViewZones = { button: null, circles: null, enabled: false, createCircles: function () { this.circles = {}; for (var id in map.fleets) { var fleet = map.fleets[id]; if (fleet.owner == "own" && (fleet.turn == 0 || fleet.start_turn - fleet.turn == 0)) { var center; if (fleet.turn == 0) { center = getCenterXY(fleet.x, fleet.y); } else { center = {x: fleet.start_x, y: fleet.start_y}; } this.circles[id] = new fabric.Circle({ left: center.x, top: center.y, radius: fleet.view_radius * box_size, fill: 'rgb(40,100,40)', opacity: 0.2, originX: 'center', originY: 'center', selectable: false, visible:false }); scene.add(this.circles[id]); scene.sendToBack(this.circles[id]); } } }, draw: function () { if (!this.circles) { if (this.enabled) { this.createCircles(); } else { return; } } var left = current_x; var top = current_y; var right = current_x + base_width / current_scale; var bottom = current_y + base_height / current_scale; for (var id in this.circles) { var circle = this.circles[id]; var show = this.enabled; if (show) { var raduis = circle.getRadiusX(); show = this.inBox( circle.getLeft(), circle.getTop(), left - raduis, top - raduis, right + raduis, bottom + raduis ); } circle.set({visible:show}); } }, show: function (flag) { this.enabled = flag; this.draw(); scene.renderAll(); }, toggle: function () { this.show(!this.enabled); }, inBox: function (x, y, left, top, right, bottom) { return (x > left && x < right && y > top && y < bottom); }, init: function () { var self = this; this.button = createMapButton("fa-eye"); this.button.on("click", this.toggle.bind(this)); var renewMap = map.renewMap; map.renewMap = function () { renewMap(); self.draw(); }; } }; Addons.AllLevels = { enable: function () { for (var i in design.template_components) { design.template_components[i].max_level = 100; } design.draw(); }, disable: function () { for (var i in design.template_components) { design.template_components[i].max_level = design.template_components[i]._max_level; } design.draw(); }, init: function () { var self = this; $("#details_list").prepend('<span><input id="all_levels" type="checkbox"> все уровни</span>'); $("#all_levels").on("change", function () { if ($(this).is(":checked")) { self.enable(); } else { self.disable(); } }); for (var i in design.template_components) { design.template_components[i]._max_level = design.template_components[i].max_level; } } }; if (w.map) { Addons.ViewZones.init(); } else if (w.Design) { waitFor(w, "design", function (design) { Addons.AllLevels.init(); }); } })(unsafeWindow);