Гайд CS2 Dynamic lights ( DLight's )

Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
499
Реакции[?]
310
Поинты[?]
100K
Как мы все знаем в старой версии CS 2, а именно CS:GO была такая прекрасная фича, как Dlight'ы. Мне лично она вкатывала и решив чуть проглядеть в строки игры, я увидел что там сохранилась команда для их создания. Для начала дам референс, в случае, если тема окажется outdated. Нам понадобится команда dlight_debug, там и будет функция, которая создаёт нам динамический свет, назовём эту функцию как CreateDlight. Перейдём сразу к делу, в игре существует класс CDynamicLightManager, указатель на который и берётся внутри функции CreateDlight. Сам по себе класс содержит внутри себя статический массив ( размер было лень считать ), указатель ( или же начало ) на который будет являться адрес: класса CDynamicLightManager + 0x18. Оттуда мы уже можем получить/записать любой элемент массива.
C++:
struct DynamicLight_t {
    float m_flUnk; //0x0000
    Vector3 m_vecOrigin; //0x0004
    float m_flRadius; //0x0010
    uint32_t m_nColor; //0x0014
    float m_flDie; //0x0018
    float m_flExponent; //0x001C
    char pad_0020[40]; //0x0020
    class N000004C0* m_pSceneLayer; //0x0048
}; //Size: 0x0050
Использование и запись нашего DLight'a. Я это вызывал в DXGI::Present хуке, но можете использовать любой другой, где производите рендер.
C++:
// Используйте это, если хотите создать что-нибудь наподобие светящегося следа
// client.dll "48 89 6C 24 18 56 41 56 41 57 48 83 EC 20 45"
auto nLightIdx = GetDynamicLightIdx(pDynamicLightManager, pDynamicLightManager + 0x18, 32, 1);

// client.dll "48 89 5C 24 18 48 89 6C 24 20 57 48 83 EC 20 48 8B 3D"
int pass_value = 0;
const auto flCurTime = *reinterpret_cast<float*>(GetCurrentTime(&pass_value, 0));
// Если хотите просто прилепить к определённой позиции то просто берите нулевой индекс
nLightIdx = 0;

vecAbsOrigin.z += 13.f;
DynamicLight_t* dymanicLight = reinterpret_cast<DynamicLight_t*>(pDynamicLightManager + 0x18 + (nLightIdx * sizeof(DynamicLight_t)));
dymanicLight->m_vecOrigin = vecAbsOrigin;
dymanicLight->m_flExponent = 40.f;
dymanicLight->m_flRadius = 350.f;
dymanicLight->m_nColor = 0xFF0000; // BGR mode Так же можно использовать ColorRGBExp32 из старой версии игры
dymanicLight->m_flDie = flCurTime + 0.1f;
Showcase:
Вот и всё. Спасибо за внимание !
 
🪐 saturn solutions
Пользователь
Статус
Оффлайн
Регистрация
7 Апр 2019
Сообщения
299
Реакции[?]
34
Поинты[?]
8K
это ведь можно использовать, как новый автопик
 
ЧВК EB_LAN
Забаненный
Статус
Оффлайн
Регистрация
12 Сен 2021
Сообщения
425
Реакции[?]
121
Поинты[?]
162K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Спасибо, полезная тема ! Сделать проверку на кнопку, написать код автопика и будет збс
 
Keep Ev0lving, Stay Fatal
Эксперт
Статус
Оффлайн
Регистрация
6 Фев 2018
Сообщения
1,550
Реакции[?]
586
Поинты[?]
102K
Хоть я и использовал это еще в 21 году для автопика, это стоит использовать как отдельную функцию.
Также для автора темы: глянь на эффект зевса, а ещё на иконку снизу при убийстве (гранатами или тем же зевсом).
Очень хороший релиз возможен.
 
Keep Ev0lving, Stay Fatal
Эксперт
Статус
Оффлайн
Регистрация
6 Фев 2018
Сообщения
1,550
Реакции[?]
586
Поинты[?]
102K
Сверху Снизу