m_iHideHUD и прицел наблюдателя

Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
Всем привет.

Собственно, у меня есть код, которым я скрываю прицел, и возвращаю потом обратно:
Код:
set_member(pPlayer, m_iHideHUD, get_member(pPlayer, m_iHideHUD) | HIDEHUD_CROSSHAIR);
// ...
set_member(pPlayer, m_iHideHUD, get_member(pPlayer, m_iHideHUD) & ~HIDEHUD_CROSSHAIR);
Проблема заключается в следующем: при возвращении прицела обратно, у меня появляется прицел наблюдателя вместе с ним, как будто бы я отключал еще и HIDEHUD_OBSERVER_CROSSHAIR

Так же у меня есть другой плагин, в котором при определённых условиях отключается и включается HIDEHUD_HEALTH. И вот когда я отключаю HIDEHUD_CROSSHAIR, прицел наблюдателя появляется, потом отключаю HIDEHUD_HEALTH, прицел наблюдателя пропадает.

Держа в голове совокупность этих фактов, я полез в ReGameDLL, и вот что я обнаружил:
C++:
#ifdef REGAMEDLL_FIXES
        if (m_iHideHUD && !(m_iHideHUD & HIDEHUD_OBSERVER_CROSSHAIR))
        {
            if (m_iClientHideHUD < 0)
                m_iClientHideHUD = 0;

            int hudChanged = m_iClientHideHUD ^ m_iHideHUD;
            if (hudChanged & (HIDEHUD_FLASHLIGHT | HIDEHUD_HEALTH | HIDEHUD_TIMER | HIDEHUD_MONEY))
            {
                MESSAGE_BEGIN(MSG_ONE, gmsgCrosshair, nullptr, pev);
                    WRITE_BYTE(0);
                MESSAGE_END();
            }
        }
#endif
( ReGameDLL_CS/player.cpp at master · s1lentq/ReGameDLL_CS (github.com) )

Т.е. как я понимаю, если m_iHideHUD поменялся и это было что-то из (HIDEHUD_FLASHLIGHT | HIDEHUD_HEALTH | HIDEHUD_TIMER | HIDEHUD_MONEY), то отправляется мессага на скрытие прицела наблюдателя. Как видим, здесь нет HIDEHUD_CROSSHAIR, судя по всему отсюда и баг, описанный мной выше.
Пересобрав ReGameDLL с такими правками: if (hudChanged & (HIDEHUD_FLASHLIGHT | HIDEHUD_HEALTH | HIDEHUD_TIMER | HIDEHUD_MONEY | HIDEHUD_CROSSHAIR)), баг действительно ушёл.

Теперь вопрос: там действительно не должно быть HIDEHUD_CROSSHAIR, или просто кто-то забыл его добавить?
 
Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
Посмотрел в истории коммитов на гитхабе, эти правки вносил s1lent. Может, он сможет ответить на мой вопрос
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу