HACKTIMER v1

oh hey, custom version

Από την 18/10/2025. Δείτε την τελευταία έκδοση.

Αυτός ο κώδικας δεν πρέπει να εγκατασταθεί άμεσα. Είναι μια βιβλιοθήκη για άλλους κώδικες που περιλαμβάνεται μέσω της οδηγίας meta // @require https://update.greasyfork.org/scripts/552983/1679678/HACKTIMER%20v1.js

// ==UserScript==
// @license      MIT
// @locale English
// @name HACKTIMER v1
// @description "oh hey custom version"

(function (workerScript) {
	if (!/MSIE 10/i.test(navigator.userAgent)) {
		try {
			var blob = new Blob([`
var fakeIdToId = {};
onmessage = function (event) {
	var data = event.data,
		name = data.name,
		fakeId = data.fakeId,
		time;
	if (data.hasOwnProperty('time')) {
		time = data.time;
	}
	switch (name) {
		case 'setInterval':
			fakeIdToId[fakeId] = setInterval(function () {
				postMessage({fakeId: fakeId});
			}, time);
			break;
		case 'clearInterval':
			if (fakeIdToId.hasOwnProperty(fakeId)) {
				clearInterval(fakeIdToId[fakeId]);
				delete fakeIdToId[fakeId];
			}
			break;
		case 'setTimeout':
			fakeIdToId[fakeId] = setTimeout(function () {
				postMessage({fakeId: fakeId});
				if (fakeIdToId.hasOwnProperty(fakeId)) {
					delete fakeIdToId[fakeId];
				}
			}, time);
			break;
		case 'clearTimeout':
			if (fakeIdToId.hasOwnProperty(fakeId)) {
				clearTimeout(fakeIdToId[fakeId]);
				delete fakeIdToId[fakeId];
			}
			break;
	}
}
`]);
			workerScript = window.URL.createObjectURL(blob);
		} catch (error) {
		}
	}
	var worker,
		fakeIdToCallback = {},
		lastFakeId = 0,
		maxFakeId = 0x7FFFFFFF,
		logPrefix = 'HackTimer.js by turuslan: ';
	if (typeof Worker !== 'undefined') {
		function getFakeId() {
			do {
				if (lastFakeId === maxFakeId) {
					lastFakeId = 0;
				} else {
					lastFakeId++;
				}
			} while (fakeIdToCallback.hasOwnProperty(lastFakeId));
			return lastFakeId;
		}
		try {
			worker = new Worker(workerScript);
			window.setInterval = function (callback, time) {
				var fakeId = getFakeId();
				fakeIdToCallback[fakeId] = {
					callback: callback,
					parameters: Array.prototype.slice.call(arguments, 2)
				};
				worker.postMessage({
					name: 'setInterval',
					fakeId: fakeId,
					time: time
				});
				return fakeId;
			};
			window.clearInterval = function (fakeId) {
				if (fakeIdToCallback.hasOwnProperty(fakeId)) {
					delete fakeIdToCallback[fakeId];
					worker.postMessage({
						name: 'clearInterval',
						fakeId: fakeId
					});
				}
			};
			window.setTimeout = function (callback, time) {
				var fakeId = getFakeId();
				fakeIdToCallback[fakeId] = {
					callback: callback,
					parameters: Array.prototype.slice.call(arguments, 2),
					isTimeout: true
				};
				worker.postMessage({
					name: 'setTimeout',
					fakeId: fakeId,
					time: time
				});
				return fakeId;
			};
			window.clearTimeout = function (fakeId) {
				if (fakeIdToCallback.hasOwnProperty(fakeId)) {
					delete fakeIdToCallback[fakeId];
					worker.postMessage({
						name: 'clearTimeout',
						fakeId: fakeId
					});
				}
			};
			worker.onmessage = function (event) {
				var data = event.data,
					fakeId = data.fakeId,
					request,
					parameters,
					callback;
				if (fakeIdToCallback.hasOwnProperty(fakeId)) {
					request = fakeIdToCallback[fakeId];
					callback = request.callback;
					parameters = request.parameters;
					if (request.hasOwnProperty('isTimeout') && request.isTimeout) {
						delete fakeIdToCallback[fakeId];
					}
				}
				if (typeof callback === 'string') {
					try {
						callback = new Function(callback);
					} catch (error) {
						console.log(logPrefix + 'Error parsing callback code string: ', error);
					}
				}
				if (typeof callback === 'function') {
					callback.apply(window, parameters);
				}
			};
			worker.onerror = function (event) {
				console.log(event);
			};
		} catch (error) {
			console.log(logPrefix + 'Initialisation failed');
			console.error(error);
		}
	} else {
		console.log(logPrefix + 'Initialisation failed - HTML5 Web Worker is not supported');
	}
})('HackTimerWorker.js');