Перейти к содержимому
RU
Играть

Форум

[АПРГЕЙД ИНТЕРФЕЙСА] Убираем влево или вправо мешающие сообщения (лог битвы)


Рекомендованные сообщения

В 06.01.2023 в 18:42, GGman3000 сказал:

имеешь в виду что-то такое? 

 

[data-style="BattleMessagesComponentStyle-container"] {
    align-items: flex-start !important;
    padding-left: 1.1em;
}

 

сам элемент выглядит так:   <div class="sc-bwzfXH foIoi" data-style="BattleMessagesComponentStyle-container">

Да. Думаю, что такое правило имеет шансы прожить дольше

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

  • Ответы 61
  • Создано
  • Последний ответ

Топовые авторы в этой теме

У меня не работает :( Обьясните для чайника) Очень мешают эти уведомления 
8ppd9Yv.png

Что я сделал не так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 06.01.2023 в 17:29, KOHCTAHTUH сказал:

Убрал эту функцию по решению разработчиков 

Так ты верни хотя бы увеличить, а то у меня уменьшилось окно, а обратно не увеличить... Я уже и клиент переустанавливал...

 

5c270384a4042358dcba5da6d3d9ccc0.jpg

Видишь?

Изменено пользователем Takcuct78Rus

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 08.01.2023 в 00:27, Takcuct78Rus сказал:

Так ты верни хотя бы увеличить, а то у меня уменьшилось окно, а обратно не увеличить... Я уже и клиент переустанавливал...

 

5c270384a4042358dcba5da6d3d9ccc0.jpg

Видишь?

Если функцию убрали, а окно не поменялось, значит где-то это сохранено.  А сохраняет оно  в куках.  Удали у клиента  куки, правда настройки слетят. 

Что интересно,  изменение размеров убрали, но в настройках клавиши оставили. Как обычно.

  • Спасибо 1
  • Хаха 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 08.01.2023 в 05:07, RUSTY_NUTS сказал:

Если функцию убрали, а окно не поменялось, значит где-то это сохранено.  А сохраняет оно  в куках.  Удали у клиента  куки, правда настройки слетят. 

Что интересно,  изменение размеров убрали, но в настройках клавиши оставили. Как обычно.

Ок, спасибо.  :ok:

А в браузнре? Тоже куки? Там то уже более проблематично, если все настройки слетят, замучаюсь вписывать обратно пароли...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 08.01.2023 в 11:10, Takcuct78Rus сказал:

Ок, спасибо.  :ok:

А в браузнре? Тоже куки? Там то уже более проблематично, если все настройки слетят, замучаюсь вписывать обратно пароли...

  В браузере можно удалить куки для одного сайта.  Правда для разных браузеров по-разному, но не сложно погуглить )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 22.12.2022 в 13:47, Bullock69 сказал:

а в танковый клиент можно этот код как-то встроить?

 

Можно. Самый простой вариант - это запустить клиент с параметром "--openDevTools", в открывшемся окне перейти на вкладку "Console" или "Консоль", ввести туда это:

window.document.head.appendChild(window.document.createElement('style')).innerHTML = '[data-style="BattleMessagesComponentStyle-container"] { align-items: flex-start !important; padding-left: 1.1em; }';

 

Потом окно можно закрыть. Из плюсов - это никак не модифицирует клиент игры и полностью аналогично различным расширениям Chrome, из минусов - нужно делать каждый раз при запуске.

 

Вообще, описанные действия никак не противоречат правилам игры. Согласно им, запрещено только "использование ботов, стороннего ПО, программных ошибок Игры", а данные действия к ним не относятся. Также, они полностью аналогичны различным userscript'ам.

Но на всякий случай скажу, что описанные действия я не предпринимал. Далее идут только умозрительные ситуации, которые на практике я, разумеется не применял. И даже не пытался. И вообще, написал все это не я.

 

Скрытый текст

  

В 12.09.2022 в 19:42, Opex-Rah сказал:

Если менять ресурсы игры для автоматического применения стилей без участия пользователя, нужно распаковать ресурсы игры (файл "resources/app.asar" переименовать и распаковать в созданную папку с аналогичным названием. Для распаковки проще всего использовать 7-zip с плагином "Asar"). Далее, редактируем файл "resources/app.asar/main.js".

Ищем эти строчки:

function createGameWindow() {
	let gameWindow = new BrowserWindow({
		width: 1024,
		height: 1024,
		show: false,
		fullscreenable: true,
		frame: true,
		toolbar: true,
		backgroundColor: '#565769',
		webPreferences: {
			nodeIntegration: false, // без этого не будут работать некоторые платежные методы (Нидерланды -> Visa)
			nativeWindowOpen: true // без этого не будут работать google и facebook авторизация
		}
	});
	gameWindow.loadURL(argv['loadURL'] + "&rnd=" + Date.now() + "&desktop=true");

Сразу после них вставляем код:

gameWindow.webContents.insertCSS('[data-style="BattleMessagesComponentStyle-container"] { align-items: flex-start !important; padding-left: 1.1em; }');

 

Сохраняем файл и запускаем игру.


 

Изменено пользователем Purgamentum-exit
  • Нравится 2
  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 09.01.2023 в 11:39, Entropy сказал:

за такое же не банят? а то бесят уведомления по центру экрана, мешает целиться

 

Нет. Не банят. Более того, такие действия никто не отслеживает. Чтобы отследить такие действия нужно сравнить результирующие стили для каждого элемента с эталонными, а это - очень много проблем. Ведь в каждом браузере, все по разному. При этом выявленное расхождение может означать, по факту, что угодно. Так что такой ерундой никто не занимается.

 

Но модераторы форума, не разобравшись, могут наказать конкретно меня, за "распространение". Поэтому и перестраховался.

  • Нравится 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 08.01.2023 в 00:27, Takcuct78Rus сказал:

Так ты верни хотя бы увеличить, а то у меня уменьшилось окно, а обратно не увеличить... Я уже и клиент переустанавливал...

 

5c270384a4042358dcba5da6d3d9ccc0.jpg

Видишь?

Я обычный помощник) Пишите в техподдержку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

On 1/9/2023 at 11:39 AM, Entropy said:

за такое же не банят? а то бесят уведомления по центру экрана, мешает целиться

Не банят, тема висит уже месяц, я на всех акках юзаю, не могу с надписями по центру играть вообще

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 14.01.2023 в 10:06, Purgamentum-exit сказал:

В принципе, пропатчить можно что угодно, в том числе внутреннюю логику, "надежно" спрятанную внутри react-модулей. Например, сократить анимацию открытия контейнеров до минимума:

 

такое в основном на тесте нужно) анимация сделана чтоб на основах хоть чуть чуть ожидания от ящиков были

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 22.12.2022 в 03:00, Alexandr сказал:

 

Зачем так париться? Качаешь расширение "User Java Script and CSS" по ссылке: https://chrome.google.com/webstore/detail/user-javascript-and-css/nbhcbdghjpllgmfilhnhkllmkecfmpld (для хрома), для других браузеров тоже куча похожих имеется.

Заходишь в игру, чтобы ссылка сразу встроилась, где будет работать код, но в принципе и вручную можешь задать адрес сайта (в нашем случае https://tankionline.com/)

Тыкаешь кнопку "добавить":

image.png

и закидываешь туда этот код в правую колонку:

  Показать содержимое

image.png

Потом сохраняешь, обновляешь страницу и все, оно будет работать всегда, и не придется каждый раз после обновления страницы постоянно лезть в консоль или заморачиваться с созданием расширения, что неопытному пользователю будет сделать достаточно тяжело. Код само собой рабочий, смысла его как-то переделывать не вижу, @GGman3000 и @KissesKisses красавчики, реально полезную тему развили и предложили свои рабочие варианты, мне лично тоже эти уведомления бросаются в глаза.

 

Результат:

  Показать содержимое

image.png

 

парни вы лучшие, может вместо альтернативы будете пилить код?

кстати а нельзя ли как то достать инфу о возврате флага? она сейчас не отображается, потому что нафиг же не нужна)

  • Нравится 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

On 1/14/2023 at 10:43 AM, Entropy said:

парни вы лучшие, может вместо альтернативы будете пилить код?

кстати а нельзя ли как то достать инфу о возврате флага? она сейчас не отображается, потому что нафиг же не нужна)

 

On 1/14/2023 at 10:06 AM, Purgamentum-exit said:

В принципе, пропатчить можно что угодно, в том числе внутреннюю логику, "надежно" спрятанную внутри react-модулей. Например, сократить анимацию открытия контейнеров до минимума:

 

 

Сам фокус простой:

react.webpackRequire(searchEngine(react).ruleCompareKotlinMetadata('simpleName', 'AnimationOpenContainerComponent').getModuleIds());
let AnimationOpenContainerComponent = react.tree.getOnce('tanks.clients.html5.lobby.containers.AnimationOpenContainerComponent');
AnimationOpenContainerComponent.prototype.accelerate_0 = function (t) {	return 1; };

Проблема в том, что за переменными react и searchEngine стоит много-много кода, не рискну подобное никуда выкладывать.

 

Забавно, что разработчики вполне могли бы сделать именно такое, "быстрое" открытие по клике мышью вместо небольшого ускорения. Это влияет только на анимацию на стороне клиенты, все выпавшие предметы определяются одномоментно на стороне сервера.

Чуваки, я на С пишу обычно, а JS не знаю
Что нужно скачать чтоб вот такой react код нормально вытаскивать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

On 1/14/2023 at 4:26 PM, Purgamentum-exit said:

О, Вас ждет сюрприз :)

В C (по крайней мере, для Windows) можно подняться по стеку и плясать от него, можно переопределить WinAPI или другие функции библиотек. Можно заморочится с секциями или функцией импорта (переопределить LoadLibrary), и сделать области памяти с кодом доступными для записи. А тут они всю "начинку" прячут внутри "анонимной" функции. То есть туда извне не попасть, никак.

Наружу выведены какие-то элементы через react, но это совсем малая часть. И работает, когда уже все загружено, не переопределить.

Да что с С делать я знаю, я веб-технологиями не занимаюсь

Ну, хех, спасибо, я посмотрю как желание чем-то новым заняться вдруг возникнет

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

On 1/20/2023 at 2:39 PM, Purgamentum-exit said:

 

Ага, как же, исправят они. Два раза исправят.

 

MEI7Q6X_o.png

 

Разобрался с событиями CTF "notifyFlagDropped" (при сбросе флага) и "notifyFlagReturned" (при возврате флага).

Причем я еще не понял, что за остальные неохваченные события "notifyFlagFacedOff", "notifyFlagExiled" и "notifyReadyToFaceOff".

 

Теперь нужно найти оригинальные сообщения, сделать то же самое для всех режимов, и можно будет как-нибудь запаковать в расширение. Лично мне действительно этого не хватало. Слышишь звук, а что произошло. Раньше флаги мигали на панели, теперь это тоже убрали.

А можешь мне в личку код скинуть? :smiling-face-with-heart-eyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Немного информации по поводу имен классов. Генерируемые имена классов именуются хешем от содержимого. То есть даже небольшое изменение стилей ведет к полному изменению генерируемого класса. Так что тем, кто пишет "темы" и userscript'ы для проекта, особенно рассчитывать на них не стоит.

 

Алгоритм генерации:

/**
 * Алгоритм получения имени генерируемого класса
 */

const __hash_a = function (t) {
	for (var e, n = 0 | t.length, o = 0 | n, i = 0; n >= 4; ++i, n -= 4) {
		e = 1540483477 * (65535 & (e = 255 & t.charCodeAt(i) | (255 & t.charCodeAt(++i)) << 8 | (255 & t.charCodeAt(++i)) << 16 | (255 & t.charCodeAt(++i)) << 24)) + ((1540483477 * (e >>> 16) & 65535) << 16);
		o = 1540483477 * (65535 & o) + ((1540483477 * (o >>> 16) & 65535) << 16) ^ (e = 1540483477 * (65535 & (e ^= e >>> 24)) + ((1540483477 * (e >>> 16) & 65535) << 16));
    }
	switch (n) {
	case 3:
		o ^= (255 & t.charCodeAt(i + 2)) << 16;
	case 2:
		o ^= (255 & t.charCodeAt(i + 1)) << 8;
	case 1:
		o = 1540483477 * (65535 & (o ^= 255 & t.charCodeAt(i))) + ((1540483477 * (o >>> 16) & 65535) << 16);
	}
	return o = 1540483477 * (65535 & (o ^= o >>> 13)) + ((1540483477 * (o >>> 16) & 65535) << 16), (o ^= o >>> 15) >>> 0;
};
const __hash_b = function(t) {
	return String.fromCharCode(t + (t > 25 ? 39 : 97));
};
const __hash_c = function (r) {
	var e = "", n = void 0;
	for (n = r; n > 52; n = Math.floor(n / 52)) {
        e = __hash_b(n % 52) + e;
    }
	return __hash_b(n % 52) + e;
};
const __hash = function(e) {
	return __hash_c(__hash_a(e));
};
function __hash_componentId_prefix(t) {
	return t.replace(/[[\].#*$><+~=|^:(),"'`-]+/g, "-").replace(/(^-|-$)/g, "")
}

function __hash_componentId(i, s, n) {
    let p = ("string" != typeof n ? "sc" : __hash_componentId_prefix(n));
	return p = p + '-' + __hash(p + i.toString()), s ? s + '-' + p : p;
}

(() => {
    console.log('[@] Тестирование выведенного алгоритма');

    const hash_battle_stattable_entry_gun = function(v, e) {
        return __hash(v + [
            "background: url('" + e +"');",
            'background-position: center;',
            'background-repeat: no-repeat;',
            'background-size: contain;',
            'width: 1em;',
            'height: 1em;',
            'margin-right: 0.25em;'
        ].join("\n") + "\n");
    };

    const consoleComponent = __hash_componentId(2);
    console.assert(consoleComponent == 'sc-bwzfXH');
    console.assert(hash_battle_stattable_entry_gun(consoleComponent, '/play/static/images/resistances/firebird_resistance.168ef5d8.svg') == 'dXMOUQ');
    console.assert(hash_battle_stattable_entry_gun(consoleComponent, '/play/static/images/resistances/scorpio_resistance.aefa178e.svg') == 'iCjKi');

    console.log('[@] Тестирование завершено');
})();

 

За генерацию отвечают kotlinx.css.CSSBuilder и styled.StyledDOMBuilder и неидентифицируемый webpacked-скрипт с экспортируемой функцией default.

Первый параметр в приведенном коде - componentId, получается перебором значений.

В приведенном примере я получаю названия класса для отображения в таблице статистике для пушек огнемет и скорпион.

 

Повторюсь, из-за наличия хешей в именах файлов с изображениями при изменении этих изображений название класса также будет изменено.

 

Взять и изменить загруженные стили также можно отсюда:

(() => {
	/**
	 * Пример получения имени класса для кнопки "Играть"
	 */
	let loadedRulesCSS = Array.from(globalThis.document.querySelector('style[data-styled-components]').sheet.cssRules)
		.filter((e) => (e.selectorText)) // Фильтр: наличие селектора
		.filter((e) => (e.style)); // Фильтр: наличие стилей
	let loadedImagesInCSS = loadedRulesCSS
		.filter((e) => ('background-image' in e.style)) // Фильтр: наличие фонового изображения
		.filter((e) => (e.style['background-image'])); // Фильтр: наличие фонового изображения
	// Для примера: поиск конкретного изменяемого изображения и отвечающего за него класса:
	console.log(loadedImagesInCSS
		.filter((e) => (e.style['background-image'].includes('.webp')))
		.map((e) => ({selectorText: e.selectorText, image: e.style['background-image']}))
		.filter((e) => e.image.includes('/play/static/images/menu/videoplay.'))
	);
	/* Результат: [{
		selectorText: ".hIGTCJ",
		image: 'url("/play/static/images/menu/videoplay.28a9af84.webp")'
	}] */
})()
Изменено пользователем Purgamentum-exit
  • Нравится 4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 03.03.2023 в 07:57, BOBACb сказал:

уже не работает....o.O

 

Используйте селектор с поиском по атрибуту:

[data-style*="BattleMessagesComponentStyle-container"] {
    align-items: flex-start !important;
    padding-left: 1.1em;
}

 

 

Изменено пользователем Purgamentum-exit
  • Нравится 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 03.03.2023 в 07:00, Purgamentum-exit сказал:

 

Используйте полный селектор:

[data-style*="BattleMessagesComponentStyle-container"] {
    align-items: flex-start !important;
    padding-left: 1.1em;
}

 

 

это куда ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 03.03.2023 в 08:01, BOBACb сказал:

это куда ?

 

Туда же, куда и раньше. Можно в приложение, отредактировав main.js. Можно в браузере через расширение "User Java Script and CSS" (см. выше), или userscript's.

Можно ввести в консоли (если на один раз):

  

document.head.appendChild(document.createElement('style'))?.sheet?.addRule('[data-style*="BattleMessagesComponentStyle-container"]', 'align-items: flex-start !important; padding-left: 1.1em;');

 

Изменено пользователем Purgamentum-exit
  • Нравится 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пожалуйста, войдите для комментирования

Вы сможете оставить комментарий после входа



Войти сейчас
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×
×
  • Создать...