Исходник Viewmodel glow

Забаненный
Статус
Оффлайн
Регистрация
11 Май 2020
Сообщения
115
Реакции[?]
91
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Делал давно ,работает криво,но работает.
В хуке DrawModel:
Код:
  static std::vector<std::pair<int, int>> CustomGlowEntities;


    if (auto renderable = pInfo->m_pClientEntity)
    {
      if (auto entity = reinterpret_cast<C_BasePlayer*>(uintptr_t(renderable) - 0x4))
      {
        auto i = entity->EntIndex();

        if (auto mdl = entity->GetModel())
        {
          bool is_arm = strstr(mdl->szName, "arms") != nullptr;
          bool is_player = strstr(mdl->szName, "models/player") != nullptr;
          bool is_sleeve = strstr(mdl->szName, "sleeve") != nullptr;
          bool is_weapon = strstr(mdl->szName, "weapons/v_") != nullptr;

          if ((is_sleeve || is_weapon) && !is_player)
          {
            //Entity is valid, check if we want to glow it
            if (!g_GlowObjManager->HasGlowEffect(entity))
            {
              auto pos = g_GlowObjManager->RegisterGlowObject(
                entity,
                g_Options.color_glow_enemy,
                1.0f,
                false,
                false,
                GlowObjectDefinition_t::END_OF_FREE_LIST
              );

              //Append it to the vector
              CustomGlowEntities.emplace_back(i, pos);
            }
          }
        }
        else {
          //
          // The entity is invalid.
          // Check if the entity on this index was glowing before it was removed by the game
          //
          auto it = std::find_if(
            CustomGlowEntities.begin(),
            CustomGlowEntities.end(),
            [&](const std::pair<int, int>& p) {
              return p.first == i;
            });

          if (it != CustomGlowEntities.end()) {
            // It was glowing. Unregister it and remove from our vector.
            g_GlowObjManager->UnregisterGlowObject(it->second);
            CustomGlowEntities.erase(it);
          }
        }
      }
    }
    for (auto i = 0; i < g_GlowObjManager->m_GlowObjectDefinitions.Count(); i++)
    {
      auto& glowObject = g_GlowObjManager->m_GlowObjectDefinitions[i];
      auto entity = reinterpret_cast<C_BasePlayer*>(glowObject.m_pEntity);

      if (!entity || glowObject.IsUnused())
      {
        continue;
      }

      if (auto mdl = entity->GetModel())
      {
        bool is_arm = strstr(mdl->szName, "arms") != nullptr;
        bool is_player = strstr(mdl->szName, "models/player") != nullptr;
        bool is_sleeve = strstr(mdl->szName, "sleeve") != nullptr;
        bool is_weapon = strstr(mdl->szName, "weapons/v_") != nullptr;

        if ((is_sleeve || is_weapon) && !is_player)
        {
          glowObject.m_flRed = g_Options.color_glow_enemy[0];
          glowObject.m_flGreen = g_Options.color_glow_enemy[1];
          glowObject.m_flBlue = g_Options.color_glow_enemy[2];
          glowObject.m_bRenderWhenOccluded = false;
          glowObject.m_bRenderWhenUnoccluded = false;
          glowObject.m_nRenderStyle = g_Options.glow_style;
        }
      }

    }
Если подогнать вьюмодел по хуz,то результат :
1639447567240.png
Иначе :
1639447578095.png

Есть еще баг что подсвечивает руки от 3 лица.
В прицнипе,если кто-нибудь пофиксит - дропайте работягам в комментах (дополню тему).
А так,можно сделать костыльно,чтобы при включении хуз менялся под нужный.
 
Сверху Снизу