Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

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

  • Автор темы Автор темы Pink Tea
  • Дата начала Дата начала
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
7 Апр 2016
Сообщения
349
Реакции
97
Знаю что по любому сольют сюда, поэтому лучше сам сделаю это.

Хукните m_flFlashDuration через прокси RecvVarProxyFn.
Код:
Expand Collapse Copy
Hook("DT_CSPlayer", "m_flFlashDuration",RecvProxy_FlashTime);
Установите m_flFlashBangTime во время ослепления
Код:
Expand Collapse Copy
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);
}
Проверьте оставшееся время до окончания ослепления.
Код:
Expand Collapse Copy
float FlashTime()
{
auto flash_value = this->m_flFlashBangTime - g_GlobalVars->curtime;
return flash_value > 0.0f ? flash_value : 0.0f;
}
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
m_flFlashBangTime можно найти как m_flFlashDuration - 0x14, ну а дальше уже просто
Код:
Expand Collapse Copy
    float CBaseEntity::GetFlashBangTime()
    {
        return *(float*)((DWORD)this + Offset::Entity::m_flFlashBangTime );
    }
Ну и if (GetFlashBangTime() - Interfaces::GlobalVars()->curtime > 2.0f) bla bla bla
На мой взгляд, самая простая и эффективная реализация.
 
Назад
Сверху Снизу