您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
automatically releases hospitals and cells in the alliance
// ==UserScript== // @name shareBuildings // @version 1.1.3 // @description automatically releases hospitals and cells in the alliance // @author DrTraxx and translated by Mibzzer15 // @match https://www.missionchief.com/ // @grant none // @namespace https://greasyfork.org/users/981346 // ==/UserScript== /* global $, user_id, I18n */ (async function () { 'use strict'; var aBuildings = []; var beds = []; var cells = []; async function loadApi() { aBuildings = await $.getJSON('/api/buildings'); for (var i in aBuildings) { var e = aBuildings[i]; if (e.building_type === 2) beds.push(e); if (e.building_type === 5 || e.building_type === 10) cells.push(e); } console.debug("aBuildings", aBuildings); console.debug("beds", beds); console.debug("cells", cells); } $("body") .prepend(`<div class="modal fade bd-example-modal-lg" id="shBuModal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true"> <div class="modal-dialog modal-lg" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">❌</span> </button> <h3 class="modal-title"><center>release buildings</center></h3> </div> <div class="modal-body" id="shBuModalBody"> <div class="form-check hidden"> <input class="form-check-input" type="checkbox" value="" id="shBuCheckShare"> <label class="form-check-label" for="shBuCheckShare"> release buildings </label> </div> <select class="custom-select hidden" id="shBuSelPercentage" style="width:15em"> <option selected value="0">0 Percent</option> <option value="1">10 Percent</option> <option value="2">20 Percent</option> <option value="3">30 Percent</option> <option value="4">40 Percent</option> <option value="5">50 Percent</option> </select> <br> <br> <div class="btn-group"> <a class="btn btn-primary" id="shBuShareCells">police stations</a> <a class="btn btn-primary" id="shBuShareHospitals">hospitals</a> </div> <br> <br> <div class="hidden" id="shBuDivHospitals"> <h4>Hospitals:</h4> <div class="progress"> <div class="progress-bar bg-success" role="progressbar" style="width: 0%" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" id="shBuPrgsBeds"></div> </div> </div> <div class="hidden" id="shBuDivCells"> <h4>police stations:</h4> <div class="progress"> <div class="progress-bar bg-success" role="progressbar" style="width: 0%" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" id="shBuPrgsCells"></div> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-danger" data-dismiss="modal">Conclude</button> <div class="pull-left">v ${GM_info.script.version}</div> </div> </div> </div>`); $("ul .dropdown-menu[aria-labelledby='menu_profile'] >> a[href='/missionSpeed']") .parent() .after(`<li role="presentation"><a data-toggle="modal" data-target="#shBuModal" id="shBuOpenModal" style="cursor:pointer"><span class="glyphicon glyphicon-ok-sign"></span> release buildings</a></li>`); async function shareBuildings(array, modalElement) { var count = 0; for (var i in array) { count++; var percent = Math.round(count / array.length * 100); var e = array[i]; modalElement .attr("aria-valuenow", count) .css({ "width": percent + "%" }) .text(count + " / " + array.length.toLocaleString()); if ($("#shBuCheckShare")[0].checked) { if (!e.is_alliance_shared) { await $.get("/buildings/" + e.id + "/alliance"); //e.is_alliance_shared = true; aBuildings.filter((obj) => e.id === obj.id)[0].is_alliance_shared = true; } await $.get("/buildings/" + e.id + "/alliance_costs/" + $("#shBuSelPercentage").val()); } else { if (e.is_alliance_shared) { await $.get("/buildings/" + e.id + "/alliance"); //e.is_alliance_shared = false; aBuildings.filter((obj) => e.id === obj.id)[0].is_alliance_shared = false; } } } } $("body").on("click", "#shBuOpenModal", async function () { if (!$("#shBuCheckShare").parent().hasClass("hidden")) $("#shBuCheckShare").parent().addClass("hidden"); beds.length = 0; cells.length = 0; await loadApi(); $("#shBuPrgsBeds").attr("aria-valuemax", beds.length); $("#shBuPrgsCells").attr("aria-valuemax", cells.length); $("#shBuCheckShare").parent().removeClass("hidden"); }); $("body").on("click", "#shBuShareHospitals", function () { $("#shBuDivHospitals").removeClass("hidden"); $("#shBuPrgsBeds") .attr("aria-valuenow", 0) .css({ "width": "0%" }) .text("0 / " + beds.length.toLocaleString()); shareBuildings(beds, $("#shBuPrgsBeds")); }); $("body").on("click", "#shBuShareCells", function () { $("#shBuDivCells").removeClass("hidden"); $("#shBuPrgsCells") .attr("aria-valuenow", 0) .css({ "width": "0%" }) .text("0 / " + cells.length.toLocaleString()); shareBuildings(cells, $("#shBuPrgsCells")); }); $("body").on("click", "#shBuCheckShare", function () { if ($("#shBuCheckShare")[0].checked) { $("#shBuSelPercentage").removeClass("hidden"); } else { $("#shBuSelPercentage").addClass("hidden"); } }); })();