您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Supplies some wrapper functions for public use
- // ==UserScript==
- // @name infernal wrapper
- // @description Supplies some wrapper functions for public use
- // @namespace infernal_wrapper
- // @include https://prodgame*.alliances.commandandconquer.com/*/index.aspx*
- // @version 0.390737.5
- // @author infernal_me, KRS_L, krisan
- // ==/UserScript==
- (function () {
- var CCTAWrapper_main = function () {
- try {
- _log = function () {
- if (typeof console != 'undefined') console.log(arguments);
- else if (window.opera) opera.postError(arguments);
- else GM_log(arguments);
- }
- function createCCTAWrapper() {
- console.log('CCTAWrapper loaded');
- _log('wrapper loading' + PerforceChangelist);
- System = $I;
- SharedLib = $I;
- var strFunction;
- // SharedLib.Combat.CbtSimulation.prototype.DoStep
- for (var x in $I) {
- for (var key in $I[x].prototype) {
- if ($I[x].prototype.hasOwnProperty(key) && typeof($I[x].prototype[key]) === 'function') { // reduced iterations from 20K to 12K
- strFunction = $I[x].prototype[key].toString();
- if (strFunction.indexOf("().l;var b;for (var d = 0 ; d < c.length ; d++){b = c[d];if((b.") > -1) {
- $I[x].prototype.DoStep = $I[x].prototype[key];
- console.log("SharedLib.Combat.CbtSimulation.prototype.DoStep = $I." + x + ".prototype." + key);
- break;
- }
- }
- }
- }
- // ClientLib.Data.CityRepair.prototype.CanRepair
- for (var key in ClientLib.Data.CityRepair.prototype) {
- if (typeof ClientLib.Data.CityRepair.prototype[key] === 'function') {
- strFunction = ClientLib.Data.CityRepair.prototype[key].toString();
- if (strFunction.indexOf("DefenseSetup") > -1 && strFunction.indexOf("DamagedEntity") > -1) { // order important to reduce iterations
- ClientLib.Data.CityRepair.prototype.CanRepair = ClientLib.Data.CityRepair.prototype[key];
- console.log("ClientLib.Data.CityRepair.prototype.CanRepair = ClientLib.Data.CityRepair.prototype." + key);
- break;
- }
- }
- }
- // ClientLib.Data.CityRepair.prototype.UpdateCachedFullRepairAllCost
- for (var key in ClientLib.Data.CityRepair.prototype) {
- if (typeof ClientLib.Data.CityRepair.prototype[key] === 'function') {
- strFunction = ClientLib.Data.CityRepair.prototype[key].toString();
- if (strFunction.indexOf("Type==7") > -1 && strFunction.indexOf("var a=0;if") > -1) { // order important to reduce iterations
- ClientLib.Data.CityRepair.prototype.UpdateCachedFullRepairAllCost = ClientLib.Data.CityRepair.prototype[key];
- console.log("ClientLib.Data.CityRepair.prototype.UpdateCachedFullRepairAllCost = ClientLib.Data.CityRepair.prototype." + key);
- break;
- }
- }
- }
- // ClientLib.Data.CityUnits.prototype.get_OffenseUnits
- strFunction = ClientLib.Data.CityUnits.prototype.HasUnitMdbId.toString();
- var searchString = "for (var b in {d:this.";
- var startPos = strFunction.indexOf(searchString) + searchString.length;
- var fn_name = strFunction.slice(startPos, startPos + 6);
- strFunction = "var $createHelper;return this." + fn_name + ";";
- var fn = Function('', strFunction);
- ClientLib.Data.CityUnits.prototype.get_OffenseUnits = fn;
- console.log("ClientLib.Data.CityUnits.prototype.get_OffenseUnits = function(){var $createHelper;return this." + fn_name + ";}");
- // ClientLib.Data.CityUnits.prototype.get_DefenseUnits
- strFunction = ClientLib.Data.CityUnits.prototype.HasUnitMdbId.toString();
- searchString = "for (var c in {d:this.";
- startPos = strFunction.indexOf(searchString) + searchString.length;
- fn_name = strFunction.slice(startPos, startPos + 6);
- strFunction = "var $createHelper;return this." + fn_name + ";";
- fn = Function('', strFunction);
- ClientLib.Data.CityUnits.prototype.get_DefenseUnits = fn;
- console.log("ClientLib.Data.CityUnits.prototype.get_DefenseUnits = function(){var $createHelper;return this." + fn_name + ";}");
- // ClientLib.Vis.Battleground.Battleground.prototype.get_Simulation
- strFunction = ClientLib.Vis.Battleground.Battleground.prototype.StartBattle.toString();
- searchString = "=0;for(var a=0; (a<9); a++){this.";
- startPos = strFunction.indexOf(searchString) + searchString.length;
- fn_name = strFunction.slice(startPos, startPos + 6);
- strFunction = "return this." + fn_name + ";";
- fn = Function('', strFunction);
- ClientLib.Vis.Battleground.Battleground.prototype.get_Simulation = fn;
- console.log("ClientLib.Vis.Battleground.Battleground.prototype.get_Simulation = function(){return this." + fn_name + ";}");
- // GetNerfBoostModifier
- if (typeof ClientLib.Vis.Battleground.Battleground.prototype.GetNerfAndBoostModifier == 'undefined') ClientLib.Vis.Battleground.Battleground.prototype.GetNerfAndBoostModifier = ClientLib.Base.Util.GetNerfAndBoostModifier;
- _log('wrapper loaded');
- }
- } catch (e) {
- console.log("createCCTAWrapper: ", e);
- }
- function CCTAWrapper_checkIfLoaded() {
- try {
- if (typeof qx !== 'undefined') {
- createCCTAWrapper();
- } else {
- window.setTimeout(CCTAWrapper_checkIfLoaded, 1000);
- }
- } catch (e) {
- CCTAWrapper_IsInstalled = false;
- console.log("CCTAWrapper_checkIfLoaded: ", e);
- }
- }
- if (/commandandconquer\.com/i.test(document.domain)) {
- window.setTimeout(CCTAWrapper_checkIfLoaded, 1000);
- }
- }
- try {
- var CCTAWrapper = document.createElement("script");
- CCTAWrapper.innerHTML = "var CCTAWrapper_IsInstalled = true; (" + CCTAWrapper_main.toString() + ")();";
- CCTAWrapper.type = "text/javascript";
- if (/commandandconquer\.com/i.test(document.domain)) {
- document.getElementsByTagName("head")[0].appendChild(CCTAWrapper);
- }
- } catch (e) {
- console.log("CCTAWrapper: init error: ", e);
- }
- })();