Исходник Overriding csgo alerts

Забаненный
Статус
Оффлайн
Регистрация
31 Дек 2021
Сообщения
12
Реакции[?]
13
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пожалуйста, авторизуйтесь для просмотра ссылки.

> module: client.dll
> sig: 55 8B EC A1 ? ? ? ? 83 EC 08 56 8B F1 57 A8 01

> function prototype:
> void __fastcall hkAlert ( void* a1, void* a2, const char* szText, int a4 );

Example hook:
C++:
void __fastcall hkAlert ( void* a1, void* a2, const char* szText, int a4 ) {
    if ( strcmp ( szText, "#CSGO_Notice_Alert_Warmup_Period" ) )
        return oAlert ( a1, a2, "<font color=\"#152D79\"> Custom warmup text {s:time_remaining} </font>", a4 );
    return oAlert ( a1, a2, szText, a4 );
}
 
Забаненный
Статус
Оффлайн
Регистрация
11 Май 2020
Сообщения
115
Реакции[?]
91
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пожалуйста, авторизуйтесь для просмотра ссылки.

> module: client.dll
> sig: 55 8B EC A1 ? ? ? ? 83 EC 08 56 8B F1 57 A8 01

> function prototype:
> void __fastcall hkAlert ( void* a1, void* a2, const char* szText, int a4 );

Example hook:
C++:
void __fastcall hkAlert ( void* a1, void* a2, const char* szText, int a4 ) {
    if ( strcmp ( szText, "#CSGO_Notice_Alert_Warmup_Period" ) )
        return oAlert ( a1, a2, "<font color=\"#152D79\"> Custom warmup text {s:time_remaining} </font>", a4 );
    return oAlert ( a1, a2, szText, a4 );
}
Another method :
Код:
enum PanelMode
  {
    PANEL_SHOW = 1,
    PANEL_FADE_OUT = 2
  };

  struct CPanel2D
  {
    void ShowAlert(const char* text, const int mode)
    {
      static auto fn = reinterpret_cast<void(__thiscall*)(CPanel2D*, const char*, int)>(
        Utils::PatternScan(GetModuleHandleA("client.dll"), "55 8B EC A1 ? ? ? ? 83 EC 08 56 8B F1 57 A8 01 75 26 8B 0D ? ? ? ? 83 C8 01 A3 ? ? ? ? 68 ? ? ? ? 8B 01 FF 90 ? ? ? ? 66 A3 ? ? ? ? A1")
        );

      return fn(this, text, mode);
    }

    void HidePanel()
    {
      static auto fn = reinterpret_cast<void(__thiscall*)(CPanel2D*, bool)>(
        Utils::PatternScan(GetModuleHandleA("client.dll"), "E8 ? ? ? ? 5F 5E 5B 8B E5 5D C2 04 00 8B D3 B9 ? ? ? ? E8 ? ? ? ? 85 C0 0F 85 ? ? ? ? 8B 44 24 14")
        );

      return fn(this, false);
    }
  };


  struct CHudElement
  {
    CPanel2D* GetPanel2D()
    {
      return reinterpret_cast<CPanel2D*>(uintptr_t(this) - 0x14);
    }

    BYTE pad[0x20];
    const char* m_pName;
  };

  struct CCSGO_HudUniqueAlerts : public CHudElement
  {

  };

  struct CHud
  {
    template< typename t >
    t* FindElement(const char* name)
    {
      static auto fn = reinterpret_cast<CHudElement * (__thiscall*)(CHud*, const char*)>(
        Utils::PatternScan(GetModuleHandleA("client.dll"), "55 8B EC 53 8B 5D 08 56 57 8B F9 33 F6 39 77 28 7E 1E 8B 47 1C 8B 0C B0 8B 01")
        );

      return reinterpret_cast<t*>(fn(this, name));
    }

  };

Код:
static CHud* hud = nullptr;
      if (!hud)
      {
        hud = *(CHud**)(Utils::PatternScan(GetModuleHandleA("client.dll"), ("B9 ? ? ? ? E8 ? ? ? ? 8B 5D 08")) + 1);
      }
      else
      {
        static CCSGO_HudUniqueAlerts* m_element = nullptr;
        if (!m_element)
          m_element = hud->FindElement<CCSGO_HudUniqueAlerts>("CCSGO_HudUniqueAlerts");
        else
        {
          if(g_InputSystem->IsButtonDown(KEY_V))
            m_element->GetPanel2D()->ShowAlert("<font color='#FF0000' size='100' face='Arial'>Hello from murkware</font>", PANEL_SHOW);
        }
      }
 
Сверху Снизу