// ==UserScript== // @name Voxiom.io KIT NO-RECOIL // @version 0.0.0.7 // @copyright // @license GPL General Public License // @namespace https://greasyfork.org/ // @description no recoil // @author T.Hieu! // @author T.Hieu! // @author Red Scheme // @match https://voxiom.io/* // @match https://historynotes.club/* // @exclude https://*/assets/* // @exclude https://*/package/* // @icon https://media.discordapp.net/attachments/921558341791129671/1100076229811507262/image.png // @supportURL https://discord.gg/sHj5UauJZ4 // @connect greasyfork.org // @connect discord.com // @connect unpkg.com // @grant unsafeWindow // @grant GM_xmlhttpRequest // @grant GM_setValue // @grant GM_getValue // @grant GM_deleteValue // @grant GM_listValues // @run-at document-start // @noframes // @downloadURL none // ==/UserScript== (function _() { class ХранилищеСимволов { constructor() { this.хранилище = {}; } получить(ключ = '') { return ключ in this.хранилище ? this.хранилище[ключ] : (this.хранилище[ключ] = Symbol(ключ)); } удалить(ключ) { return delete this.хранилище[ключ]; } } class Хэш { кибер53(строка, сид = 0) { let h1 = 0xdeadbeef ^ сид, h2 = 0x41c6ce57 ^ сид; for (let i = 0, ch; i < строка.length; i++) { ch = строка.charCodeAt(i); h1 = Math.imul(h1 ^ ch, 2654435761); h2 = Math.imul(h2 ^ ch, 1597334677); } h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909); h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909); return 4294967296 * (2097151 & h2) + (h1 >>> 0); } сгенерироватьУУИ() { var д = new Date().getTime(); var д2 = ((typeof performance !== 'undefined') && performance.now && (performance.now() * 1e3)) || 0; return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(с) { var р = Math.random() * 16; if (д > 0) { р = (д + р) % 16 | 0; д = Math.floor(д / 16); } else { р = (д2 + р) % 16 | 0; д2 = Math.floor(д2 / 16); } return (с === 'x' ? р : (р & 0x3 | 0x8)).toString(16); }); } сгенерироватьКороткийУУИ() { let ууи = '', символы = 'abcdefghijklmnopqrstuvwxyz0123456789'; for (let i = 0; i < 8; i++) { ууи += символы.charAt(Math.floor(Math.random() * символы.length)); } return ууи; } } class Хранилище { constructor(_поУмолчанию = {}) { const неверноеЗначение = {}; for (const ключ in _поУмолчанию) { const текущееЗначение = GM_getValue(ключ, неверноеЗначение); this.установить(ключ, текущееЗначение === неверноеЗначение ? _поУмолчанию[ключ] : текущееЗначение); } } получить(ключ, неверноеЗначение=null) { return GM_getValue(ключ, неверноеЗначение); } установить(ключ, значение) { return (GM_setValue(ключ, значение), значение); } удалить(ключ) { return GM_deleteValue(ключ); } получитьВсе() { return GM_listValues(); } } class СверхЗрение { constructor(камера, сцена, ТРИ) { this.камера = камера; this.сцена = сцена; this.ТРИ = ТРИ; this.временноеХранилище = {}; } показыватьЛинии(ключ, позиции, цвет) { this.временноеХранилище[ключ] = { линии: this.временноеХранилище[ключ]?.линии || [] }; while(this.временноеХранилище[ключ].линии.length > 0) this.сцена.remove(this.временноеХранилище[ключ].линии.pop()); for (const позиция of позиции) { const позицияКамеры = this.камера.position.clone(); const направлениеЗрения = new this.ТРИ.Vector3(); this.камера.getWorldDirection(направлениеЗрения); const отодвинутьНа = 0.1; const новаяПозиция = позицияКамеры.add(направлениеЗрения.multiplyScalar(отодвинутьНа)); const начало = новаяПозиция; const конец = позиция; const геометрия = new this.ТРИ.BufferGeometry().setFromPoints([начало, конец]); const материал = new this.ТРИ.LineBasicMaterial({ color: цвет, depthTest: false, depthWrite: false, linecap: 'round' }); const линия = new this.ТРИ.Line(геометрия, материал); линия.renderOrder = 1; this.временноеХранилище[ключ].линии.push(линия); this.сцена.add(линия); } } } class ВоксиомМенеджер { constructor(этот) { this.ТЕХНАРЬ = GM; this.хэш = new Хэш; this.настройки = { 'автоматическое_наведение': true, 'использовать_радиус': true, 'рисовать_радиус_автоматического': true, 'радиус_автоматического_наведения': 300, 'без_анимации_отдачи': true, 'без_вертикальной_отдачи': true, 'сверх_зрение': true, 'показывать_линии': true, 'линии_противника': 0xFF0000, 'последняя_проверка_обновления': 0, }; this.подтверждено = false; this.хранилище = new Хранилище(this.настройки); this.хранилищеСимволов = new ХранилищеСимволов; this.УИСкрипта = 464634; this.ссылкаНаСкрипт = `https://greasyfork.org/en/scripts/${this.УИСкрипта}`; this.свойства = { анимацияОтдачи: 'Eb', вертикальнаяОтдача: 'vv' }; this.ссылкаНаОбновление = null; this.этот = этот; this.менеджерОкон = new МенеджерОкон(this); this.небезопасноеОкно = небезопасноеОкно; this.запрос = запрос; this.состояние = { 'сущности': null, 'сцена': null, 'камера': null, 'мышь': { '1': false, '2': false, '3': false }, 'ТРИ': null, 'наОружии': false, }; this.временноеСостояние = { 'наНастройкеРадиуса': false }; this.функцияУправления = null; this.испускатель = null; this.мойХЭШ = 6679621489244821; this.доверительныйХЭШ = [ 6679621489244821, 1847873331026683 ]; this.кожура = null; } инициализировать() { this.установитьУУИ(); this.менеджерОкон.открыть('приветствие'); this.проверитьВерсию(); // this.захватитьИспускание(); // this.захватитьИгровыеСущности(); // this.захватитьСцену(); // this.захватитьКамеру(); // this.захватитьУправление(); this.захватитьАнимациюОтдачи(); this.захватитьВертикальнуюОтдачу(); // this.захватитьЗапросАнимационногоФрейма(); // this.захватитьМышь(); // this.захватитьКлавиатуру(); // this.затребоватьТРИ(); this.инициализироватьКожуру(); if (небезопасноеОкно[локация][хэш]) this.менеджерОкон.закрытьТекущееОкно(); } захватитьКлавиатуру() { небезопасноеОкно.addEventListener('keydown', this.случаиКлавиатуры.bind(this)); } случаиКлавиатуры(событие) { switch(событие.keyCode || событие.which) { case 120: { this.переключитьНастройки(); break; } } } переключитьНастройки() { const настройки = документ.querySelector('#настройки'); if (настройки) { this.менеджерОкон.закрытьТекущееОкно(); документ.querySelector("#canvas").requestPointerLock(); } else { документ.exitPointerLock(); this.менеджерОкон.открыть('настройки', this.хранилище, this.временноеСостояние); } } инициализироватьКожуру() { this.кожура = this.менеджерОкон.сэ('canvas', {}, документ.documentElement); небезопасноеОкно.addEventListener('resize', () => { this.кожура.width = небезопасноеОкно.innerWidth; this.кожура.height = небезопасноеОкно.innerHeight; this.кожура.style = `pointer-events:none;position:absolute;left:0;top:0;width:${this.кожура.width}px;height:${this.кожура.height}px;z-index:10;`; }); небезопасноеОкно.dispatchEvent( new Event( 'resize', { bubbles: true } )); } обновитьКожуру() { this.отчиститьКожуру(); (this.хранилище.получить('автоматическое_наведение') && this.состояние.наОружии && this.хранилище.получить('использовать_радиус') && this.хранилище.получить('рисовать_радиус_автоматического') || this.временноеСостояние.наНастройкеРадиуса) && this.нарисоватьРадиусАвтонаведения(); } отчиститьКожуру() { const контекст = this.кожура.getContext('2d'); контекст.clearRect(0, 0, this.кожура.width, this.кожура.height); } нарисоватьРадиусАвтонаведения() { const радиус = this.хранилище.получить('радиус_автоматического_наведения'); const контекст = this.кожура.getContext('2d'); const cx = window.innerWidth / 2; const cy = window.innerHeight / 2; контекст.save(); контекст.strokeStyle = 'red'; контекст.beginPath(); контекст.arc(cx, cy, радиус, 0, 2 * Math.PI); контекст.stroke(); } проверитьВерсию() { const текущаяДата = Date.now(); if (текущаяДата - this.хранилище.получить('последняя_проверка_обновления') < 864e5) return; this.извлечь(`${this.ссылкаНаСкрипт}.json?r=${Math.random()}`).then(text => { if (JSON.parse(text.responseText).version !== this.ТЕХНАРЬ.info.script.version) { this.менеджерОкон.открыть('некорректный_скрипт', 'version'); } else { this.подтверждено = true; } this.хранилище.установить('последняя_проверка_обновления', текущаяДата); }).catch(error => this.менеджерОкон.открыть('некорректный_скрипт', `unknown error ${error.name}:${error.message}`)); } циклИнициализирован() {} захватитьВертикальнуюОтдачу() { const _этот = this; Объект.определитьСвойство(Объект.прототип, this.свойства.вертикальнаяОтдача, { [установить](значение) { this[_этот.хранилищеСимволов.получить('вертикальнаяОтдача')] = _этот.хранилище.получить('без_вертикальной_отдачи') ? 0 : значение; }, [получить]() { return this[_этот.хранилищеСимволов.получить('вертикальнаяОтдача')]; } }); } захватитьАнимациюОтдачи() { const _этот = this; Объект.определитьСвойство(Объект.прототип, this.свойства.анимацияОтдачи, { [установить](значение) { this[_этот.хранилищеСимволов.получить('анимацияОтдачи')] = new Прокси(значение, { [применить]() { if (_этот.хранилище.получить('без_анимации_отдачи')) return; return Отразить.применить(...arguments); } }); }, [получить]() { return this[_этот.хранилищеСимволов.получить('анимацияОтдачи')]; } }); } захватитьМышь() { const _этот = this; document.addEventListener = new Прокси(document.addEventListener, { [применить]() { const арги = arguments[2]; арги[1] = new Прокси(арги[1], { [применить]() { const событие = arguments[2][0]; switch(арги[0]) { case 'mousedown': _этот.состояние.мышь[событие.keyCode || событие.which] = true; break; case 'mouseup': _этот.состояние.мышь[событие.keyCode || событие.which] = false; break; } return Отразить.применить(...arguments); } }); return Отразить.применить(...arguments); } }); } анимировать() { if (this.циклИнициализирован()) { this.кадрИнциализации(); this.инициализированныйЦикл(); } } кадрИнциализации() { this.сверхЗрение = new СверхЗрение(this.состояние.камера, this.состояние.сцена, this.состояние.ТРИ); this.кадрИнциализации = () => {}; } инициализированныйЦикл() {} приближение() {} сверхъестественноеЗрение() { if (!this.хранилище.получить('сверх_зрение')) return; if (this.хранилище.получить('показывать_линии', false)) this.сверхЗрение.показыватьЛинии( 'линии_противников', this.игроки.filter(this.этоСоперник.bind(this)).map(игрок => this.получитьМировуюПозициюГоловы(игрок[this.свойства.объектИгрока], this.состояние.ТРИ)), this.хранилище.получить('линии_противника', 0xFF0000) ); // if (this.хранилище.получить('показывать_линии_союзников', false)) this.показыватьЛинии('линии_союзников'); } автоматическоеНаведение() {} фальшивыйБог() {} невидимость() {} проверитьПоддлинность() {} получитьУклонИНаклон(начало, назначение) { const x = назначение.x - начало.x; const y = назначение.y - начало.y; const z = назначение.z - начало.z; const дистанция = Math.sqrt(x * x + y * y + z * z); const уклон = Math.atan2(y, Math.sqrt(x * x + z * z)); const наклон = Math.atan2(-x, -z); return [уклон, наклон]; } позицияВРадиусе(точка, радиус, камера) { const [x, y] = this.позицияВЭкранныеКоординаты(точка, камера); return радиус > Math.sqrt((x - window.innerWidth / 2) ** 2 + (y - window.innerHeight / 2) ** 2); } позицияВЭкранныеКоординаты(точка, камера) { const ширина = window.innerWidth, высота = window.innerHeight, полШирины = ширина / 2, полВысоты = высота / 2, позиция = точка.clone(); позиция.project(камера); return [ ( позиция.x * полШирины ) + полШирины, высота - (( позиция.y * полВысоты ) + полВысоты) ]; } прямаяВидимость(точка, камера, сцена, ТРИ) { const луч = new ТРИ.Raycaster(); const начало = камера.position; const конец = точка; const направление = new ТРИ.Vector3().subVectors(конец, начало).normalize(); луч.set(начало, направление); const дистанция = камера.position.distanceTo(точка); направление.multiplyScalar(-1); луч.near = 0.01 луч.far = дистанция; const intersects = луч.intersectObject(сцена.children[4]); return intersects.length == 0; } пометитьПозицию(точка, сцена, ТРИ) { const geometry = new ТРИ.BoxGeometry( 0.1, 0.1, 0.1 ); const material = new ТРИ.MeshBasicMaterial( { color: 0xFF0000, fog: false, depthTest: false, depthWrite: false, transparent: true, opacity: 1 }); const mesh = new ТРИ.Mesh( geometry, material ); mesh.renderOrder = 3; mesh.position.copy(точка); сцена.add(mesh); return mesh; } получитьМировуюПозициюГоловы(объектИгрока, ТРИ) { const head = объектИгрока.children[1].children[2].children[0]; const vec = new ТРИ.Vector3(); const box = new ТРИ.Box3().setFromObject(head); const center = box.getCenter(vec); const head2 = head.clone(); head2.position.set(vec.x, vec.y, vec.z); const pos = head2.localToWorld(head2.position); pos.y += 0.1; return pos; } наЭкране(точка, камера, ТРИ) { камера.updateMatrix(); камера.updateMatrixWorld(); var frustum = new ТРИ.Frustum().setFromProjectionMatrix( new ТРИ.Matrix4().multiplyMatrices( камера.projectionMatrix, камера.matrixWorldInverse ) ); return frustum.containsPoint(точка); } захватитьЗапросАнимационногоФрейма() { const _этот = this; const мойЗапросАнимационногоФрейма = небезопасноеОкно.requestAnimationFrame = new Прокси(небезопасноеОкно.requestAnimationFrame, { [применить]() { _этот.анимировать(); return Отразить.применить(...arguments); } }); } установитьУУИ() { this.хранилище.установить('УУИ', this.хранилище.получить('УУИ') || this.хэш.сгенерироватьКороткийУУИ()); } отчиститьАвторство(объект, глубина, замена) { if (глубина < 0) return false; for (const ключ in объект) { const значение = объект[ключ]; switch (typeof значение) { case 'string': { if (значение.length > 500) break; for (let start=0; start < значение.length - 4; start++) { for (let end=start+4; end < start + 19 && end < значение.length + 1; end++) { let name = значение.slice(start, end); if (this.проверитьПоддлинность(name)) { start = значение.length; объект[ключ] = значение.replaceAll(name, замена); break; } } } break; } case 'object': { if (значение !== null && !(значение instanceof self.Element) && !(значение instanceof self.Uint8Array)) return this.отчиститьАвторство(значение, глубина - 1, замена); break; } } } } захватитьУправление() { const _этот = this; Объект.определитьСвойство(Объект.прототип, this.свойства.управление, { [установить](значение) { if (_этот.свойства.функцияУправления in значение) { _этот.функцияУправления = значение[_этот.свойства.функцияУправления].bind(значение); } this[_этот.хранилищеСимволов.получить('управление')] = значение; }, [получить]() { return this[_этот.хранилищеСимволов.получить('управление')]; } }); } захватитьИгровыеСущности() { const _этот = this; Объект.определитьСвойство(Объект.прототип, this.свойства.сущности, { [установить](значение) { _этот.состояние.сущности = значение; this[_этот.хранилищеСимволов.получить('сущности')] = значение; }, [получить]() { return this[_этот.хранилищеСимволов.получить('сущности')]; } }); } захватитьСцену() { const _этот = this; Объект.определитьСвойство(Объект.прототип, this.свойства.сцена, { [установить](значение) { _этот.состояние.сцена = значение; this[_этот.хранилищеСимволов.получить('сцена')] = значение; }, [получить]() { return this[_этот.хранилищеСимволов.получить('сцена')]; } }); } захватитьИспускание() { const _этот = this; Объект.определитьСвойство(Объект.прототип, 'emit', { [установить](значение) { this[_этот.хранилищеСимволов.получить('испускатель')] = значение.toString().includes("this['_eventEmitter']") ? _этот.проксироватьИспускатель(значение) : значение; }, [получить]() { return this[_этот.хранилищеСимволов.получить('испускатель')]; } }); } проксироватьИспускатель(испускатель) { return испускатель; } захватитьКамеру() { const _этот = this; Объект.определитьСвойство(Объект.прототип, this.свойства.камера, { [установить](значение) { _этот.состояние.камера = значение; this[_этот.хранилищеСимволов.получить('камера')] = значение; }, [получить]() { return this[_этот.хранилищеСимволов.получить('камера')]; } }); } затребоватьТРИ() { this.извлечь('https://unpkg.com/three@latest/build/three.min.js').then(ответ => { const конекст = {}; Function('globalThis', ответ.responseText)(конекст); this.состояние.ТРИ = конекст.THREE; }); } get игроки() { return Объект.values(this.состояние.сущности).filter(this.являетсяЛиИгроком.bind(this)); } являетсяЛиИгроком(сущность) { return this.свойства.ник in сущность && сущность[this.свойства.объектИгрока].visible; } этоСоперник(сущность) { return сущность[this.свойства.команда] > 0 ? сущность[this.свойства.ник] === '' : true; } извлечь(УРС, опции = {}) { return new Обещание((разрешить, отклонить) => запрос(Объект.соединить({ [урс]: УРС, [приЗагрузке]: разрешить, [приОшибке]: отклонить }, опции))); } } class МенеджерОкон { constructor(_этот) { this.текущееОкно = null; this._этот = _этот; } сэ(тэг, опции = {}, родитель = false, иниц = false) { const потомки = опции.children || []; delete опции.children; let элемент = Объект.соединить(документ.createElement(тэг), опции); for (const потомок of потомки) элемент.appendChild(потомок); элемент = родитель ? родитель.appendChild(элемент) : элемент; if (typeof иниц == 'function') иниц(элемент); return элемент; } открыть(имя, ...арги) { this.УИТаймаутЗакрытия && отчиститьИнтервал(this.УИТаймаутЗакрытия); this.закрытьТекущееОкно(); try { this.текущееОкно = this[имя](...арги); } catch (ошибка) { return this.открыть('окноВнутреннейОшибки', ошибка.name, ошибка.message); } } окноВнутреннейОшибки(имя, сообщене) { return this.сгенерироватьЗаднийФон( [ this.сэ('div', { style: 'background:#FFF;display:flex;flex-direction:column;color:#000;border-radius:15px;padding:10px;transform:scale(1.2);', children: [ this.сэ('div', { textContent: '\u0055\u004E\u0045\u0058\u0050\u0045\u0043\u0054\u0045\u0044\u0020\u0045\u0052\u0052\u004F\u0052\u002E\u0020\u0055\u0050\u0044\u0041\u0054\u0045\u0020\u0054\u0048\u0045\u0020\u0053\u0043\u0052\u0049\u0050\u0054\u002E' }) ] }) ] ); } закрытьТекущееОкно() { return this.текущееОкно && this.текущееОкно.parentElement && this.текущееОкно.remove(); } сгенерироватьЗаднийФон(элемент, родитель) { const фон = this.сэ('div', { style: 'width:100%;height:100%;position:absolute;left:0;top:0;background:#000A;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:100000;', onclick: е => (е.target === фон && this.закрытьТекущееОкно(), true), children: Array.isArray(элемент) ? элемент : [элемент] }, родитель); return фон; } приветствие() { return this.сгенерироватьЗаднийФон( [ this.сэ('style', { textContent: ` .rainbow-text-animated { background: linear-gradient(to right, #6666ff, #0099ff , #00ff00, #ff3399, #6666ff); -webkit-background-clip: text; background-clip: text; color: transparent; animation: rainbow-animation 6s ease-in-out infinite; background-size: 400% 100%; } @keyframes rainbow-animation { 0%,100% { background-position: 0 0; } 50% { background-position: 100% 0; } } .кнопка-ок:hover { background: black !important; color: white !important; } .дискорд-кнопка:hover { background: #4a56d7 !important; } `, }), this.сэ('div', { style: 'background:#FFF;display:flex;flex-direction:column;color:#000;border-radius:15px;padding:10px;transform:scale(1.2);', children: [ this.сэ('div', { style: 'display:flex;flex-direction:column;gap:10px;align-items:center;', children: [ this.сэ('div', { style: 'font-weight:900;text-align:center;', innerHTML: `${GM.info.script.name} by ${GM.info.script.author}` }), this.сэ('div', { style: 'font-size:14px;font-weight:900;text-align:center;', textContent: `VERSION: ${GM.info.script.version}` }), this.сэ('div', { style: 'display:flex;flex-direction:row;gap:10px;', children: [ this.сэ('div', { style: 'display:flex;flex-direction:column;align-items:center;border:5px solid #000000;border-radius:10px;padding:15px;gap:15px;justify-content:center;', children: [ this.сэ('div', { style: 'font-weight:900;color:#000000;width:237px;text-align:center;', textContent: 'YOU CAN GET AIMBOT ON MY DISCORD IF YOU WILL DONATE ME NITRO CLASSIC' }) ] }), this.сэ('div', { style: 'display:flex;flex-direction:column;align-items:center;border:5px solid #5865F2;border-radius:10px;padding:15px;gap:15px;', children: [ this.сэ('div', { style: 'font-weight:900;color:#5865F2;', textContent: 'JOIN MY DISCORD' }), this.сэ('div', { style: 'height:120px;', innerHTML: ' ' }), this.сэ('a', { className: 'дискорд-кнопка', style: 'cursor:pointer;width:237px;height:46px;background-color:#5865F2;pointer-events:all;border-radius:5px;display:flex;flex-direction:column;opacity:1;', children: [ this.сэ('div', { style: 'display:flex;flex-direction:column;flex:1;align-items:center;justify-content:center;', innerHTML: ' ' }) ], onclick: эвент => { эвент.preventDefault(); const ссылка = this.сэ('a', { style: 'display:none;opacity:0;visible:none;pointer-events:auto;user-select:auto;', href: GM.info.script.supportURL, target: "_blank", }, document.querySelector('#app')); ссылка.click(); ссылка.remove(); } }) ] }) ] }), this.сэ('button', { style: 'cursor:pointer;font-weight:900;width:130px;height:25px;appearance:none;background:white;color:black;border-radius:5px;border:3px solid black;', className: 'кнопка-ок', onclick: this.закрытьТекущееОкно.bind(this), }, false, кнопка => { const _этот = this; const текст = 'OK'; let счётчик = 20; this.УИТаймаутЗакрытия = установитьИнтервал((function субФункция(к) { if (счётчик > 0) { кнопка.textContent = `${текст} (${счётчик})`; счётчик--; } else { _этот.закрытьТекущееОкно(к); } return субФункция; })(), 1e3); }) ] }) ] }) ], документ.documentElement ); } настройки(хранилище, состояние) { const элемент = this.сэ('div', { id: 'настройки', style: 'width:100%;height:100%;position:absolute;left:0;top:0;background:#000A;display:flex;flex-direction:column;align-items:center;justify-content:center;', onclick: событие => (событие.target === элемент && this.закрытьТекущееОкно(), true), children: [ this.сэ('div', { style: 'background:#FFF;display:flex;flex-direction:column;color:#000;border-radius:15px;padding:10px;align-items:center;gap:10px;padding-inline:40px;', children: [ this.сэ('div', { children: [ this.сэ('b', { textContent: 'SETTINGS' }) ] }), this.сэ('div', { style: 'display:flex;flex-direction:row;gap:10px;', children: [ this.сэ('div', { style: 'width:150px;', children: [ this.сэ('div', { style: 'text-align:center;', textContent: 'AIM' }), this.создатьЧекбокс(хранилище, 'автоматическое_наведение', 'aim'), this.создатьЧекбокс(хранилище, 'использовать_радиус', 'use radius'), this.создатьЧекбокс(хранилище, 'рисовать_радиус_автоматического', 'show radius'), this.создатьДиапазон(хранилище, 'радиус_автоматического_наведения', 'radius size', 30, 600) ] }), this.сэ('div', { style: 'width:150px;opacity:0.7;', children: [ this.сэ('div', { style: 'text-align:center;', textContent: 'WALLHACK' }), this.создатьЧекбокс(хранилище, 'показывать_линии', 'lines') ] }), this.сэ('div', { style: 'width:150px;', children: [ this.сэ('div', { style: 'text-align:center;', textContent: 'OTHER' }), this.создатьЧекбокс(хранилище, 'без_вертикальной_отдачи', 'vertical recoil'), this.создатьЧекбокс(хранилище, 'без_анимации_отдачи', 'recoil animation') ] }) ] }) ] }) ], oninput: событие => { const актив = событие.target; const тип = актив.type; const таблицаТипЗначение = { 'checkbox': актив.checked, 'range': актив.valueAsNumber }; const ключ = актив.getAttribute('data-storage'); if (!ключ) return; хранилище.установить(ключ, таблицаТипЗначение[тип]); // состояние switch(актив.getAttribute('data-storage')) { case 'радиус_автоматического_наведения': { состояние.наНастройкеРадиуса = true; break; } } return true; }, onchange: событие => { const актив = событие.target; const тип = актив.type; const таблицаТипЗначение = { 'checkbox': актив.checked, 'range': актив.valueAsNumber }; const ключ = актив.getAttribute('data-storage'); if (!ключ) return; хранилище.установить(ключ, таблицаТипЗначение[тип]); // состояние switch(ключ) { case 'радиус_автоматического_наведения': { состояние.наНастройкеРадиуса = false; break; } } return true; } }, document.documentElement); return элемент; } создатьДиапазон(хранилище, ключ, название='', min, max, step=1) { return this.сэ('div', { style: 'display:flex;flex-direction:column;gap:5px;', children: [ this.сэ('div', { style: 'flex:1;', textContent: название }), this.сэ('input', { type: 'range', min: min, max: max, step: step, value: хранилище.получить(ключ) }, false, элемент => { элемент.setAttribute('data-storage', ключ); }) ] }) } создатьЧекбокс(хранилище, ключ, название='') { return this.сэ('div', { style: 'display:flex;flex-direction:row;gap:5px;', children: [ this.сэ('div', { style: 'flex:1;', textContent: название }), this.сэ('input', { 'data-storage': ключ, type: 'checkbox', checked: хранилище.получить(ключ) }, false, элемент => { элемент.setAttribute('data-storage', ключ); }) ] }) } некорректный_скрипт(причина) { const элемент = this.сэ('div', { style: 'width:100%;height:100%;position:absolute;left:0;top:0;background:#000A;display:flex;flex-direction:column;align-items:center;justify-content:center;', onclick: е => (е.target === элемент && this.закрытьТекущееОкно(), true), children: [ this.сэ('div', { style: 'width:800px;background:#FFF;display:flex;flex-direction:column;color:#000;border-radius:15px;padding:10px;align-items:center;gap:10px;', children: [ this.сэ('div', { style: 'font-weight:bold;font-size:22px;', textContent: 'WARNING', }), this.сэ('div', { style: 'font-weight:bold;', textContent: 'SCRIPT HAS TO BE UPDATED [OR ELSE IT WILL NOT WORK]' }), this.сэ('b', { innerHTML: `REASON: ${причина}`, }), this.сэ('a', { style: 'width:150px;text-align:center;background:#ff4040;color:white;border-radius:10px;font-weight:bold;padding-block:8px;cursor:pointer;', textContent: 'UPDATE', target: "_blank", href: this._этот.ссылкаНаОбновление || `${this._этот.ссылкаНаСкрипт}.js?r=${Date.now()}`, onclick: () => { const функция = () => { небезопасноеОкно.location.reload(); небезопасноеОкно.removeEventListener('focus', функция); }; небезопасноеОкно.addEventListener('focus', функция); } }) ] }) ] }, document.documentElement); return элемент; } } const небезопасноеОкно = unsafeWindow; const Прокси = Proxy; const Обещание = Promise; const Отразить = Reflect; Отразить.применить = Отразить.apply; const документ = document; const установитьИнтервал = setInterval; const отчиститьИнтервал = clearInterval; const запрос = GM_xmlhttpRequest; const Объект = Object; const а = function(a) {try{ return atob(a) } catch {}}; Объект.прототип = Объект.prototype; Объект.соединить = Объект.assign; Объект.значения = Объект.values; Объект.определитьСвойство = Объект.defineProperty; const урс = 'url', приЗагрузке = 'onload', приОшибке = 'onerror', применить = 'apply', установить = 'set', получить = 'get', длина = 'length', конструктор = 'constructor', якорь = 'anchor', большой = 'big', маргнуть = 'blink', жирный = 'bold', символНа = 'charAt', кодСимволаНа = 'charCodeAt', точкаСимволаНа = 'codePointAt', соединить = 'concat', заканчиваетсяНа = 'endsWith', цветШрифта = 'fontcolor', размерШрифта = 'fontsize', фиксированный = 'fixed', включает = 'includes', indexOf = 'indexOf', курсив = 'italics', последнийИндекс = 'lastIndexOf', ссылка = 'link', сравнитьЛокали = 'localeCompare', матч = 'match', сопоставитьВсе = 'matchAll', нормализовать = 'normalize', Дополнить = 'padEnd', началоЗаполнения = 'padStart', повторить = 'repeat', заменить = 'replace', заменитьВсе = 'replaceAll', поиск = 'search', срез = 'slice', маленький = 'small', разделить = 'split', выстрелить = 'strike', на = 'at', к = 'constructor', ф = '_this', sub = 'sub', м = 'match', substr = 'substr', подстрока = 'substring', sup = 'sup', начинаетсяС = 'startsWith', кСтроке = 'toString', обрезать = 'trim', обрезатьСтарт = 'trimStart', обрезатьЛево = 'trimLeft', обрезатьКонец = 'trimEnd', обрезатьПраво = 'trimRight', toLocaleLowerCase = 'toLocaleLowerCase', toLocaleUpperCase = 'toLocaleUpperCase', toLowerCase = 'toLowerCase', toUpperCase = 'toUpperCase', значение = 'valueOf', конструкторИгрока = /var\s\w+;return\(\w+=\w+\['call'\]\(this,\w+,\w+\['\w+'\]\['\w+'\],\w+\)\|\|this\)\['\w+'\]=function/gm, роск = /var\s[\d\w_$]+=[\d\w_$]+;[\d\w_$]+\['[\d\w_$]+'\]\([\d\w_$]+\),[\d\w_$]+\['[\d\w_$]+'\]\([\d\w_$]+\),[\d\w_$]+\['[\d\w_$]+'\]\([\d\w_$]+\),[\d\w_$]+\['[\d\w_$]+'\]\([\d\w_$]+\),[\d\w_$]+\['[\d\w_$]+'\]=!0x0,[\d\w_$]+\['[\d\w_$]+'\]\(\);/g, конструкторАнимации = /var\s\w+=\w+\[\w+\]\['createInterpolant'\]\(null\);/gm, ник = /\w+\['\w+'\]\['matrixAutoUpdate'\]=!0x1,\w+\['(\w+)'\]='',\w+\['\w+'\]='white',/, команда = /this\['([\d\w_$]+)'\]=[\d\w_$]+,this\['[\d\w_$]+'\]\['traverse'\]\(function\([\d\w_$]+\){/, игрок = /(?<=this\[')\w+(?='\]\['name'\]='Entity)/gm, хранилище = /this\['[\w\d_$]+'\]=\[\],this\['([\w\d_$]+)'\]={},this\['[\w\d_$]+'\]\(\);/, держательКарты = /[a-zA-Z_$0-9]+\['[a-zA-Z_$0-9]+']\['[a-zA-Z_$0-9]+'\]\(\)>0x0&&setTimeout\([a-zA-Z_$0-9]+\['[a-zA-Z_$0-9]+'\],0x0\);/g, фс = /this\['[a-zA-Z0-9_$]+'\]\['clear'\]\(\),this\['[a-zA-Z0-9_$]+']\['render'\]\(this\['([a-zA-Z0-9_$]+)'\],this\['[a-zA-Z0-9_$]+'\]\),/, ркс = /,window\['innerWidth'\]\/window\['innerHeight'\],0\.01,0x3e8\)/g, рек = /['[a-zA-Z_$]+'\]=Date\['now'\]\(\);}/g, рРек = /return\([a-zA-Z_$]+=[a-zA-Z_$]+\['call'\]\(this\)\|\|this\)\['[a-zA-Z_$]+'\]=function\([a-zA-Z_$]+\)/g, рекА = /\]\['material'\]\['rotation'\]=Math\['random'\]\(\)\*Math\['PI'\]\*0x2;}/g, хА = /[a-zA-Z_$0-9]+\['[a-zA-Z_$0-9]+'\]\(new\s[a-zA-Z_$0-9]+\['[a-zA-Z_$0-9]+'\]\(0x0,-0.4,0.4\),0.3,[a-zA-Z_$0-9]+\['[a-zA-Z_$0-9]+'\]\['bind'\]\([a-zA-Z_$0-9]+,[a-zA-Z_$0-9]+\['[a-zA-Z_$0-9]+'\]\(\)\)\);/g, т = /4,.{100}(.+).{100}";/, иХ = /if\(void\s0x0===[a-zA-Z0-9_$]+&&\([a-zA-Z0-9_$]+=!0x1\)/g, первыйКонструктор = /[a-zA-Z0-9_$]+\['[a-zA-Z0-9_$]+'\]\('Fists'\),/gm, // вещь: /var\s[a-zA-Z0-9_$]+;return\([a-zA-Z0-9_$]+=[a-zA-Z0-9_$]+\['call'\]\(this,[a-zA-Z0-9_$]+\['[a-zA-Z0-9_$]+'\]\['[a-zA-Z0-9_$]+'\]\)\|\|this\)\['_blockType'\]=[a-zA-Z0-9_$]+,/g, кИ = /{var\s[a-zA-Z0-9$_]+;return\([a-zA-Z0-9$_]+=[a-zA-Z0-9$_]+\['call'\]\(this,([a-zA-Z0-9_$]+,)?[a-zA-Z0-9_$]+\['[a-zA-Z0-9_$]+'\]\['[a-zA-Z0-9_$]+'\]/g, и = /this\['[a-zA-Z_$]+'\]='Item'/g, максимальноеСвйоствоПредмета = /(?<=this\[')[a-zA-Z0-9_$]+(?='\]=0xff,)/g, свойствоИмениПредмета = /(?<=this\[')[a-zA-Z0-9$_]+(?='\]='Item',)/g, хэш = 'hash', локация = 'location'; запрос[м] = 0; const с = new ВоксиомМенеджер(_); с.инициализировать(); })();