Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Day of Defeat — Вылет на SetupBones при рендере ESP

Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
682
Реакции
18
Здарова, реверсеры. Пытаюсь накидать классический ESP для Day of Defeat (Source), но столкнулся с проблемой, которая уже выпила все нервы. Вроде база стандартная, типичный internal, но игра стабильно улетает в рабочий стол именно при попытке собрать скелет.

Суть такова: итерируюсь по энтити-листу, отсеиваю лишнее через ClassID, проверяю флаги, и как только дело доходит до вызова SetupBones — всё сыпется. Код в рендере выглядит примерно так:

Код:
Expand Collapse Copy
void CHacks_ESP::Render()
{
 if (!I::EngineClient->IsInGame())
  return;

 const int nLocalIndex = I::EngineClient->GetLocalPlayer();
 C_DODPlayer* plr = I::EntityList->GetClientEntity(nLocalIndex)->Cast<C_DODPlayer*>();

 for (int i = 1; i <= I::EntityList->GetMaxEntities(); i++)
 {
  if (nLocalIndex == i)
   continue;

  IClientEntity* ent = I::EntityList->GetClientEntity(i);
  if (!ent || ent->IsDormant())
   continue;

  ClientClass* pCC = ent->GetClientClass();
  if (!pCC || pCC->m_ClassID != EClientClass::CDODPlayer)
   continue;

  C_DODPlayer* otherPlr = ent->Cast<C_DODPlayer*>();
  if (otherPlr->deadflag())
   continue;

  matrix3x4_t bones[128];
  // Крашит именно здесь
  if (!otherPlr->SetupBones(bones, 128, 0x100, G::Vars->curtime))
   continue;

  // Рендер бокса и прочего мусора...
 }
}

Что уже проверял:
  1. Указатели на энтити валидные, каст проходит корректно.
  2. Индекс локального игрока и получение ClientClass в норме.
  3. Пробовал менять флаг маски костей (BONE_USED_BY_HITBOX и прочие) — результат нулевой.

Есть подозрение, что проблема в IClientRenderable или я вызываю это дело не в том потоке, хотя для Source-движка это база. Возможно, стоит попробовать юзать
Код:
Expand Collapse Copy
InvalidateBoneCache
перед вызовом или чекать, готов ли вообще объект к отрисовке через
Код:
Expand Collapse Copy
IsRenderable
.

Кто плотно сидел на DoD или старых версиях сурса, подскажите, может там есть какой-то специфичный прикол с оффсетами или структурами, которые я упустил из виду при реверсе. Самое странное, что краш не моментальный, иногда пару кадров успевает отрисовать.

Интересно, не конфликтовал ли у кого-то SetupBones с многопоточностью движка при отрисовке ESP прямо из хука PaintTraverse или Surface.
 
Назад
Сверху Снизу