Bestmoba_FastBattle

Ускорение боев без благославленя валькирий (доната) в игре Хроники Хаоса

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name			Bestmoba_FastBattle
// @namespace		Bestmoba_FastBattle
// @version			0.16
// @description		Ускорение боев без благославленя валькирий (доната) в игре Хроники Хаоса
// @author			ZingerY
// @homepage		http://ilovemycomp.narod.ru/Bestmoba_FastBattle.user.js
// @icon			http://ilovemycomp.narod.ru/VaultBoyIco16.ico
// @icon64			http://ilovemycomp.narod.ru/VaultBoyIco64.png
// @encoding		utf-8
// @include			https://*.nextersglobal.com/*
// @include			https://*.hero-wars.com/*
// ==/UserScript==

(function() {
	/** Стартуем скрипт */
	console.log('Start ' + GM_info.script.name + ', v' + GM_info.script.version);

	const originalOpen = XMLHttpRequest.prototype.open;
	const originalSend = XMLHttpRequest.prototype.send;

	let apiUrl = '';
	let sNetwork = '';
	let socials = {
		vk: 1, // vk.com
		ok: 2, // ok.ru
		mm: 3, // my.mail.ru
		mg: 5, // store.my.games
		fb: 4, // apps.facebook.com
		wb: 6, // hero-wars.com
	}

	XMLHttpRequest.prototype.open = function (method, url, async, user, password) {
		this.checkOn = false;
		if (url.includes('.nextersglobal.com/api/')) {
			this.checkOn = true;
			if (!apiUrl) {
				apiUrl = url;
				socialInfo = /heroes-(.+?)\./.exec(apiUrl);
				sNetwork = socialInfo ? socialInfo[1] : 'vk';
			}
		}
		return originalOpen.call(this, method, url, async, user, password);
	};

	XMLHttpRequest.prototype.send = function (data) {
		if (this.checkOn) {
			var oldReady = this.onreadystatechange;
			this.onreadystatechange = function (e) {
				if(this.readyState == 4) {
					var responseText = this.responseText;
					Object.defineProperty(this, 'responseText', {writable: true});
					var ctime = Math.round(Date.now()/1000);
					var renewTime = ctime + 100 * 24 * 60 * 60;
					var endTime = ctime + 100 * 24 * 60 * 60;
					var seach = /{"ident":"subscriptionGetInfo","result":{"response":{.+?(}}}})/;
					var replace ='{"ident":"subscriptionGetInfo","result":{"response":{"subscription":{"level":1,"status":1,"type":'+socials[sNetwork]+',"endTime":'+endTime+',"lastFarm":"20214","ctime":'+ctime+',"daysLeft":100,"mayRenew":false,"renewTime":'+renewTime+',"pendingCancel":0,"endLoginTime":0,"vkSubscriptionId":"715870"},"dailyReward":{"availableFarm":false,"currentReward":{"coin":{"14":"400"}},"notFarmedDays":0}}}}';
					// Активируем вальку
					responseText = responseText.replace(seach, replace);
					// Фикс экспедиции вальки
					responseText = responseText.replace(/("id":5.+?status":)0/, '$13');
					this.responseText = responseText;
				}
				if (oldReady) {
					return oldReady.apply(this, arguments);
				}
			}
		}
		return originalSend.call(this, data);
	};
})();