Гайд Простой и рабочий Flash Check

Пользователь
Статус
Оффлайн
Регистрация
7 Апр 2016
Сообщения
335
Реакции[?]
96
Поинты[?]
1K
Знаю что по любому сольют сюда, поэтому лучше сам сделаю это.

Хукните m_flFlashDuration через прокси RecvVarProxyFn.
Код:
Hook("DT_CSPlayer", "m_flFlashDuration",RecvProxy_FlashTime);
Установите m_flFlashBangTime во время ослепления
Код:
void RecvProxy_FlashTime(const CRecvProxyData *pData, void *pStruct, void *pOut)
{
auto *pPlayerData = static_cast<C_BasePlayer *>(pStruct);
if (pPlayerData == LocalPlayer)
pPlayerData->m_flFlashBangTime = g_GlobalVars->curtime + pData->m_Value.m_Float;
original(pData, pStruct, pOut);
}
Проверьте оставшееся время до окончания ослепления.
Код:
float FlashTime()
{
auto flash_value = this->m_flFlashBangTime - g_GlobalVars->curtime;
return flash_value > 0.0f ? flash_value : 0.0f;
}
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Пользователь
Статус
Оффлайн
Регистрация
6 Авг 2017
Сообщения
81
Реакции[?]
44
Поинты[?]
0
m_flFlashBangTime можно найти как m_flFlashDuration - 0x14, ну а дальше уже просто
Код:
    float CBaseEntity::GetFlashBangTime()
    {
        return *(float*)((DWORD)this + Offset::Entity::m_flFlashBangTime );
    }
Ну и if (GetFlashBangTime() - Interfaces::GlobalVars()->curtime > 2.0f) bla bla bla
На мой взгляд, самая простая и эффективная реализация.
 
Сверху Снизу