Исходник Brushes Color Modulating

Модератор раздела «Создание читов CS2»
Забаненный
Забаненный
Статус
Оффлайн
Регистрация
21 Июн 2022
Сообщения
148
Реакции
368
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
До:
Screenshot_3.png

После:
9UGGdnj.png

hooks.cc:
Expand Collapse Copy
// Байты для патча с jz на jmp
constexpr std::array< std::uint8_t, 4 > patch_bytes{ 0xE9, 0x2F, 0x01, 0x00 };
// module: client.dll; sig: 0F 84 2E 01 00 00 8D 04 7F
static const auto sig = g_modules->client( ).get_address( _( "BrushCheck" ) ).as< std::uintptr_t* >( );

DWORD old_protect;
VirtualProtect( sig, 4, PAGE_EXECUTE_READWRITE, &old_protect );
std::memcpy( sig, patch_bytes.data( ), 4 );
VirtualProtect( sig, 4, old_protect, &old_protect );

 
а чо делает то? пропы некоторые только закрашивает?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
а чо делает то? пропы некоторые только закрашивает?
Когда люди используют хук GetColorModulation для окраски мира, они обычно проверяют несколько типов текстур: «World textures», «StaticProp textures», «SkyBox textures». Из названий этих групп текстур можно сделать вывод, что они окрашивают только определенные участки карты. Однако можно заметить, что не все объекты на карте окрашиваются, например — используя проверку на «World textures», не крассятся коробки на мираже (см. скриншот в теме) или вот эта доска (на карте много таких объектов и они называются брашами):
4x1bucV.png


Исследуя код игры, я заметил очень интересные строчки кода отвечающее за эти браши.
За их отрисовку отвечает функция
Пожалуйста, авторизуйтесь для просмотра ссылки.
.
Смотрим первую проверку на конвар, тестим ее непосредственно в игре, чтобы проверить на правильном пути ли мы.
1679509517394.png

Вводим кон. команду «r_drawbrushmodels 0» в консоль игры и проверяем результат.
Видим, что это то, что нужно.
1679509607626.png

Возвращаемся обратно к нашей функции и видим далее подобный код:
1679509778621.png

Данный участок кода проходится по всем брашам на карте и собирает информацию о каждом, далее, используя это информацию, вызывает функцию DrawBrushModels в которой, в свою очередь, идет установка цвета (
Пожалуйста, авторизуйтесь для просмотра ссылки.
) и добавление определенного браша в список для дальнейшей отрисовки (
Пожалуйста, авторизуйтесь для просмотра ссылки.
).

Следовательно, можно понять, что мы можем пропатчить чек на комманду «cl_brushfastpath», дабы не воспроизводился код, описанный выше, и вызывалась только легенькая функция
Пожалуйста, авторизуйтесь для просмотра ссылки.
. На самом деле, есть много реализаций, но эта одна из простейших (о другой реализации я написал в хайде).

Кто не понял как работает патч, то вот скрин, который должен вам помочь в понимании:
v8lHuaU.png


Результат после патча можно увидеть в теме. P.s использовался обычный nightmode (хук GetColorModulation и покраска текстур с именем группы «World textures»), о котором я писал в самом начале этого сообщения, т.е каких-то отдельных хуков для покраски брашей не нужны.
Так же забыл подметить, что цвет будет чуть чуть темнее, чем тот, который вы установили. В теории, это можно исправить, не передавая флаги в функцию DrawRenderable.
5ZtMtaC.png

zVydkKO.png
 
Назад
Сверху Снизу