您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Relay your levels etc in a wink of an eye.
当前为
// ==UserScript== // @name C&C Tiberium Alliances Info - Updated Layout // @author Soera and TheStriker(OriginalAuthor) // @description Relay your levels etc in a wink of an eye. // @description Alt+Y - Insert to message/chat/post all your bases/cities info // @description Alt+N - Insert to message/chat/post ally support info // @namespace https://prodgame*.alliances.commandandconquer.com/*/index.aspx* // @include https://prodgame*.alliances.commandandconquer.com/*/index.aspx* // @version 1.0.5 // ==/UserScript== (function () { var TAI_main = function () { function createInstance() { qx.Class.define("TAI", { //TAS.main type : "singleton", extend : qx.core.Object, members : { initialize : function () { addEventListener("keyup", this.onKey, false); console.log("TA Info loaded."); }, onKey : function (ev) { var s = String.fromCharCode(ev.keyCode); var inputField = document.querySelector('input:focus, textarea:focus'); if (inputField != null) { // ALT+ if (ev.altKey && !ev.altGraphKey && !ev.ctrlKey && !ev.shiftKey && s == "Y") { // player bases info to share with others var apc = ClientLib.Data.MainData.GetInstance().get_Cities().get_AllCities().d;//all player cities var txt = "", c, unitData, bh, supp, type, df; for (var key in apc) { c = apc[key]; txt += "Def: [b]" + ('0' + c.get_LvlDefense().toFixed(2)).slice(-5) + "[/b] "; txt += "Off: [b]" + ('0' + c.get_LvlOffense().toFixed(2)).slice(-5) + "[/b] "; unitData = c.get_CityBuildingsData(); bh = unitData.GetUniqueBuildingByTechName(ClientLib.Base.ETechName.Construction_Yard); df = unitData.GetUniqueBuildingByTechName(ClientLib.Base.ETechName.Defense_Facility); supp = unitData.GetUniqueBuildingByTechName(ClientLib.Base.ETechName.Support_Ion); if (supp === null) supp = unitData.GetUniqueBuildingByTechName(ClientLib.Base.ETechName.Support_Art); if (supp === null) supp = unitData.GetUniqueBuildingByTechName(ClientLib.Base.ETechName.Support_Air); if (bh !== null) { txt += "CY: [b]" + bh.get_CurrentLevel() + "[/b] "; //txt += "[u]BaseRep:[/u] [b]" + (c.get_CityBuildingsData().GetFullRepairTime() / 3600).toFixed(2) + "h[/b] "; //txt += "[u]DefRep:[/u] [b]" + (c.get_CityUnitsData().GetRepairTimeFromEUnitGroup(ClientLib.Data.EUnitGroup.Defense) / 3600).toFixed(2) + "h[/b] "; } if (df !== null) { txt += "DF: [b]" + df.get_CurrentLevel() + "[/b] "; } else { txt += "DF: [b]NA[/b] "; } if (supp !== null) { txt += "" + supp.get_TechGameData_Obj().dn.slice(0, 3) + ": [b]" + supp.get_CurrentLevel() + "[/b] "; } else { txt += "SUP: [b]NA[/b] "; } txt += "--" + "[b][coords]"+ c.get_PosX() + ":" + c.get_PosY() + ":" + c.get_Name() + "[/b][/coords]"; txt += "[hr]"; } inputField.value += txt; } else if (ev.altKey && !ev.altGraphKey && !ev.ctrlKey && !ev.shiftKey && s == "N") { var bases = ClientLib.Data.MainData.GetInstance().get_AllianceSupportState().get_Bases().d; var base, keys = Object.keys(bases), len = keys.length, info = {}, avg = 0, high = 0, supBaseCount = len; while (len--) { base = bases[keys[len]]; if (!info.hasOwnProperty(base.get_Type())) { info[base.get_Type()] = 0; } info[base.get_Type()]++; if (base.get_Level() >= 30) high++; avg += base.get_Level(); } avg /= supBaseCount; var members = ClientLib.Data.MainData.GetInstance().get_Alliance().get_MemberData().d, member, baseCount = 0; keys = Object.keys(members); len = keys.length; while (len--) { member = members[keys[len]]; baseCount += member.Bases; } inputField.value += "Bases: " + baseCount + " SupCount: " + supBaseCount + "(" + (supBaseCount / baseCount * 100).toFixed(0) + "%) Avg: " + avg.toFixed(2) + " 30+: " + high + "(" + (high / baseCount * 100).toFixed(0) + "%)"; //for (var i in info) // console.log("Type: " + i + " Count: " + info[i]); } } } } // members }); } // Loading function TAI_checkIfLoaded() { try { if (typeof qx != 'undefined') { if (qx.core.Init.getApplication().getMenuBar() !== null) { createInstance(); TAI.getInstance().initialize(); } else setTimeout(TAI_checkIfLoaded, 1000); } else { setTimeout(TAI_checkIfLoaded, 1000); } } catch (e) { if (typeof console != 'undefined') { console.log(e); } else if (window.opera) { opera.postError(e); } else { GM_log(e); } } } if (/commandandconquer\.com/i.test(document.domain)) { setTimeout(TAI_checkIfLoaded, 1000); } }; // injecting, because there seem to be problems when creating game interface with unsafeWindow var TAIScript = document.createElement("script"); var txt = TAI_main.toString(); TAIScript.innerHTML = "(" + txt + ")();"; TAIScript.type = "text/javascript"; if (/commandandconquer\.com/i.test(document.domain)) { document.getElementsByTagName("head")[0].appendChild(TAIScript); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址