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

Defuse Timer

  • Автор темы Автор темы 364847
  • Дата начала Дата начала
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
6 Авг 2017
Сообщения
81
Реакции
44
В общем, решил я тут добавить таймер дефуза в свою сборку индиго, чтобы не смотря на противника было понятно, дефузит ли он и сколько ему еще дефузить. Таймер то я запилил, он перехватывает события bomb_begindefuse и bomb_abortdefuse и, в общем, отлично работает, одна только вот проблема: не могу сделать проверку на наличие китов. Подскажите, как и откуда вытаскивать это значение? И нужно ведь, наверное, еще как-то проверку делать на то, кто дефузит, чтобы делать проверку на наличие китов именно у него.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
GetBool->("has_defuser")
 
if (Settings::ESP::defusing && player->IsDefusing())
stringsToShow.push_back("Defusing");
//offsets.DT_CSPlayer.m_bIsDefusing = NetVarManager::GetOffset("DT_CSPlayer", "m_bIsDefusing");
//bool IsDefusing()
//{
//return *(bool*)((uintptr_t)this + offsets.DT_CSPlayer.m_bIsDefusing);
//}
 
if (Settings::ESP::defusing && player->IsDefusing())
stringsToShow.push_back("Defusing");
//offsets.DT_CSPlayer.m_bIsDefusing = NetVarManager::GetOffset("DT_CSPlayer", "m_bIsDefusing");
//bool IsDefusing()
//{
//return *(bool*)((uintptr_t)this + offsets.DT_CSPlayer.m_bIsDefusing);
//}
Спасибо большое за помощь! А игрока брать из EntityList? А то я попробовал, но крашнуло.
 
if (Settings::ESP::defusing && player->IsDefusing())
stringsToShow.push_back("Defusing");
//offsets.DT_CSPlayer.m_bIsDefusing = NetVarManager::GetOffset("DT_CSPlayer", "m_bIsDefusing");
//bool IsDefusing()
//{
//return *(bool*)((uintptr_t)this + offsets.DT_CSPlayer.m_bIsDefusing);
//}
Пытаюсь сделать проверку таким образом, но по ходу как раз тут у меня и ошибка, из-за которой крашит при включении бомб есп
Код:
Expand Collapse Copy
    for (int EntIndex = 0; EntIndex < Interfaces::EntityList()->GetHighestEntityIndex(); EntIndex++)
    {
        CBaseEntity* pEntity = (CBaseEntity*)Interfaces::EntityList()->GetClientEntity(EntIndex);

        if (Settings::Esp::esp_Bomb && pEntity->IsDefusing())
        {
            g_pRender->Text(5, 5, true, true, Color::Yellow(),
                "Is Defusing!");
        }
    }
Я просто не знаю, где находятся игроки: в EntityList? Если так, то почему тогда крашит?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Для таких проверок обычно нормальные люди использую нетвар HasDefuser.
DT_CSPlayerResource->m_bHasDefuser
либо же

Код:
Expand Collapse Copy
class DT_PlantedC4 : DT_BaseAnimating
{
3408 0xD50 Int m_bBombTicking
3420 0xD5C Float m_flC4Blow
3424 0xD60 Float m_flTimerLength
3440 0xD70 Float m_flDefuseLength
3444 0xD74 Float m_flDefuseCountDown
3448 0xD78 Int m_bBombDefused
}
 
Для таких проверок обычно нормальные люди использую нетвар HasDefuser.
DT_CSPlayerResource->m_bHasDefuser
либо же

Код:
Expand Collapse Copy
class DT_PlantedC4 : DT_BaseAnimating
{
3408 0xD50 Int m_bBombTicking
3420 0xD5C Float m_flC4Blow
3424 0xD60 Float m_flTimerLength
3440 0xD70 Float m_flDefuseLength
3444 0xD74 Float m_flDefuseCountDown
3448 0xD78 Int m_bBombDefused
}
C HasDefuser точно так же крашит, тестил уже) Просто я не нормальный человек, а новичок :D
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C HasDefuser точно так же крашит, тестил уже) Просто я не нормальный человек, а новичок :D
крашит? Вот если я сейчас сделаю и не закрашит,ты будешь жопу жевать.
 
крашит? Вот если я сейчас сделаю и не закрашит,ты будешь жопу жевать.
Ну, во-первых, так со мной разговаривать не нужно, причину краша я уже нашел, и она была в том коде, что я писал выше.
Теперь вопрос в другом. Если я делаю проверку таким кодом (т. е. для всех игроков)
Код:
Expand Collapse Copy
    for (int EntIndex = 0; EntIndex < Interfaces::EntityList()->GetHighestEntityIndex(); EntIndex++)
    {
        CBaseEntity* pPlayer = (CBaseEntity*)Interfaces::EntityList()->GetClientEntity( EntIndex );

        if (!pPlayer)
            return;

        if (Settings::Esp::esp_Bomb && pPlayer->IsDefusing())
        {
            g_pRender->Text(5, 5, true, true, Color::Yellow(),
                "Is Defusing!");
            if (!pPlayer)
                return;
        }
    }
То он вечно показывает "Is defusing", а не когда кто-то реально дефузит.
Но если я делаю проверку только для себя
Код:
Expand Collapse Copy
    for (int EntIndex = 0; EntIndex < Interfaces::EntityList()->GetHighestEntityIndex(); EntIndex++)
    {
        CBaseEntity* pEntity = (CBaseEntity*)Interfaces::EntityList()->GetClientEntity( Interfaces::Engine()->GetLocalPlayer() );
        if (!pPlayer)
            return;
        if (Settings::Esp::esp_Bomb && pEntity->IsDefusing())
        {
            g_pRender->Text(5, 5, true, true, Color::Yellow(),
                "Is Defusing!");
        if (!pPlayer)
            return;
        }
    }
то все равботает ок, показывает только тогда, когда я дефужу (только фпс почему-то во время дефуза ооочень ж0стко проседает сразу).
 
В общем, поправил я свой кривой код, проблема решена, даже несколько способов получается есть таймер сделать.
 
Последнее редактирование:
Назад
Сверху Снизу