Вопрос On shot chams

Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2020
Сообщения
466
Реакции[?]
102
Поинты[?]
3K
пожалуйста скажите как сделать on shot chams например как в неверлузе )

1605529563923.png

BigShmouk не бей меня )
 
ставь чайник, зажигай плиту
Эксперт
Статус
Оффлайн
Регистрация
22 Май 2020
Сообщения
1,442
Реакции[?]
1,092
Поинты[?]
10K
C++:
void CChams::AddHitmatrix( C_CSPlayer* player, matrix3x4_t* bones ) {
      auto& hit = m_Hitmatrix.emplace_back( );

      std::memcpy( hit.pBoneToWorld, bones, player->m_CachedBoneData( ).Count( ) * sizeof( matrix3x4_t ) );
      hit.time = Source::m_pGlobalVars->realtime + g_Vars.esp.hitmatrix_time;

      static int m_nSkin = Horizon::Memory::FindInDataMap( player->GetPredDescMap( ), XorStr( "m_nSkin" ) );
      static int m_nBody = Horizon::Memory::FindInDataMap( player->GetPredDescMap( ), XorStr( "m_nBody" ) );

      hit.info.origin = player->GetAbsOrigin( );
      hit.info.angles = player->GetAbsAngles( );

      auto renderable = player->GetClientRenderable( );

      if ( !renderable )
         return;

      auto model = player->GetModel( );

      if ( !model )
         return;

      auto hdr = *( studiohdr_t** ) ( player->m_pStudioHdr( ) );

      if ( !hdr )
         return;

      hit.state.m_pStudioHdr = hdr;
      hit.state.m_pStudioHWData = Source::m_pMDLCache->GetHardwareData( model->studio );
      hit.state.m_pRenderable = renderable;
      hit.state.m_drawFlags = 0;

      hit.info.pRenderable = renderable;
      hit.info.pModel = model;
      hit.info.pLightingOffset = nullptr;
      hit.info.pLightingOrigin = nullptr;
      hit.info.hitboxset = player->m_nHitboxSet( );
      hit.info.skin = ( int ) ( uintptr_t( player ) + m_nSkin );
      hit.info.body = ( int ) ( uintptr_t( player ) + m_nBody );
      hit.info.entity_index = player->m_entIndex;
      hit.info.instance = Memory::VCall<ModelInstanceHandle_t( __thiscall* )( void* ) >( renderable, 30u )( renderable );
      hit.info.flags = 0x1;

      hit.info.pModelToWorld = &hit.model_to_world;
      hit.state.m_pModelToWorld = &hit.model_to_world;

      hit.model_to_world.AngleMatrix( hit.info.angles, hit.info.origin );
   }
C++:
void CChams::OnPostScreenEffects( ) {
      if ( !g_Vars.globals.HackIsReady )
         m_Hitmatrix.clear( );

      if ( m_Hitmatrix.empty( ) )
         return;

      if ( !Source::m_pStudioRender.Xor( ) )
         return;

      auto drawed_shit = false;

      auto ctx = Source::m_pMatSystem->GetRenderContext( );

      if ( !ctx )
         return;

      auto it = m_Hitmatrix.begin( );
      while ( it != m_Hitmatrix.end( ) ) {
         if ( !it->state.m_pModelToWorld || !it->state.m_pRenderable || !it->state.m_pStudioHdr || !it->state.m_pStudioHWData ||
              !it->info.pRenderable || !it->info.pModelToWorld || !it->info.pModel ) {
            ++it;
            continue;
         }

         auto alpha = 1.0f;
         auto delta = Source::m_pGlobalVars->realtime - it->time;
         if ( delta > 0.0f ) {
            alpha -= delta;
            if ( delta > 1.0f ) {
               it = m_Hitmatrix.erase( it );
               continue;
            }
         }

         drawed_shit = true;

         auto color = g_Vars.esp.hitmatrix_color;
         color.a *= alpha;

         OverrideMaterial( true, g_Vars.esp.chams_hitmatrix_mat, color );
         Hooked::oDrawModelExecute( Source::m_pModelRender.Xor( ), ctx, it->state, it->info, it->pBoneToWorld );
         Source::m_pStudioRender->m_pForcedMaterial = nullptr;
         Source::m_pStudioRender->m_nForcedMaterialType = 0;

         ++it;
      }
   }
C++:
struct C_HitMatrixEntry {
      int ent_index;
      ModelRenderInfo_t info;
      DrawModelState_t state;
      matrix3x4_t pBoneToWorld[ 128 ] = {};
      float time;
      matrix3x4_t model_to_world;
   };
 
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2020
Сообщения
466
Реакции[?]
102
Поинты[?]
3K
C++:
void CChams::AddHitmatrix( C_CSPlayer* player, matrix3x4_t* bones ) {
      auto& hit = m_Hitmatrix.emplace_back( );

      std::memcpy( hit.pBoneToWorld, bones, player->m_CachedBoneData( ).Count( ) * sizeof( matrix3x4_t ) );
      hit.time = Source::m_pGlobalVars->realtime + g_Vars.esp.hitmatrix_time;

      static int m_nSkin = Horizon::Memory::FindInDataMap( player->GetPredDescMap( ), XorStr( "m_nSkin" ) );
      static int m_nBody = Horizon::Memory::FindInDataMap( player->GetPredDescMap( ), XorStr( "m_nBody" ) );

      hit.info.origin = player->GetAbsOrigin( );
      hit.info.angles = player->GetAbsAngles( );

      auto renderable = player->GetClientRenderable( );

      if ( !renderable )
         return;

      auto model = player->GetModel( );

      if ( !model )
         return;

      auto hdr = *( studiohdr_t** ) ( player->m_pStudioHdr( ) );

      if ( !hdr )
         return;

      hit.state.m_pStudioHdr = hdr;
      hit.state.m_pStudioHWData = Source::m_pMDLCache->GetHardwareData( model->studio );
      hit.state.m_pRenderable = renderable;
      hit.state.m_drawFlags = 0;

      hit.info.pRenderable = renderable;
      hit.info.pModel = model;
      hit.info.pLightingOffset = nullptr;
      hit.info.pLightingOrigin = nullptr;
      hit.info.hitboxset = player->m_nHitboxSet( );
      hit.info.skin = ( int ) ( uintptr_t( player ) + m_nSkin );
      hit.info.body = ( int ) ( uintptr_t( player ) + m_nBody );
      hit.info.entity_index = player->m_entIndex;
      hit.info.instance = Memory::VCall<ModelInstanceHandle_t( __thiscall* )( void* ) >( renderable, 30u )( renderable );
      hit.info.flags = 0x1;

      hit.info.pModelToWorld = &hit.model_to_world;
      hit.state.m_pModelToWorld = &hit.model_to_world;

      hit.model_to_world.AngleMatrix( hit.info.angles, hit.info.origin );
   }
C++:
void CChams::OnPostScreenEffects( ) {
      if ( !g_Vars.globals.HackIsReady )
         m_Hitmatrix.clear( );

      if ( m_Hitmatrix.empty( ) )
         return;

      if ( !Source::m_pStudioRender.Xor( ) )
         return;

      auto drawed_shit = false;

      auto ctx = Source::m_pMatSystem->GetRenderContext( );

      if ( !ctx )
         return;

      auto it = m_Hitmatrix.begin( );
      while ( it != m_Hitmatrix.end( ) ) {
         if ( !it->state.m_pModelToWorld || !it->state.m_pRenderable || !it->state.m_pStudioHdr || !it->state.m_pStudioHWData ||
              !it->info.pRenderable || !it->info.pModelToWorld || !it->info.pModel ) {
            ++it;
            continue;
         }

         auto alpha = 1.0f;
         auto delta = Source::m_pGlobalVars->realtime - it->time;
         if ( delta > 0.0f ) {
            alpha -= delta;
            if ( delta > 1.0f ) {
               it = m_Hitmatrix.erase( it );
               continue;
            }
         }

         drawed_shit = true;

         auto color = g_Vars.esp.hitmatrix_color;
         color.a *= alpha;

         OverrideMaterial( true, g_Vars.esp.chams_hitmatrix_mat, color );
         Hooked::oDrawModelExecute( Source::m_pModelRender.Xor( ), ctx, it->state, it->info, it->pBoneToWorld );
         Source::m_pStudioRender->m_pForcedMaterial = nullptr;
         Source::m_pStudioRender->m_nForcedMaterialType = 0;

         ++it;
      }
   }
C++:
struct C_HitMatrixEntry {
      int ent_index;
      ModelRenderInfo_t info;
      DrawModelState_t state;
      matrix3x4_t pBoneToWorld[ 128 ] = {};
      float time;
      matrix3x4_t model_to_world;
   };
КУДА тебя можно поцеловать ?
C++:
void CChams::AddHitmatrix( C_CSPlayer* player, matrix3x4_t* bones ) {
      auto& hit = m_Hitmatrix.emplace_back( );

      std::memcpy( hit.pBoneToWorld, bones, player->m_CachedBoneData( ).Count( ) * sizeof( matrix3x4_t ) );
      hit.time = Source::m_pGlobalVars->realtime + g_Vars.esp.hitmatrix_time;

      static int m_nSkin = Horizon::Memory::FindInDataMap( player->GetPredDescMap( ), XorStr( "m_nSkin" ) );
      static int m_nBody = Horizon::Memory::FindInDataMap( player->GetPredDescMap( ), XorStr( "m_nBody" ) );

      hit.info.origin = player->GetAbsOrigin( );
      hit.info.angles = player->GetAbsAngles( );

      auto renderable = player->GetClientRenderable( );

      if ( !renderable )
         return;

      auto model = player->GetModel( );

      if ( !model )
         return;

      auto hdr = *( studiohdr_t** ) ( player->m_pStudioHdr( ) );

      if ( !hdr )
         return;

      hit.state.m_pStudioHdr = hdr;
      hit.state.m_pStudioHWData = Source::m_pMDLCache->GetHardwareData( model->studio );
      hit.state.m_pRenderable = renderable;
      hit.state.m_drawFlags = 0;

      hit.info.pRenderable = renderable;
      hit.info.pModel = model;
      hit.info.pLightingOffset = nullptr;
      hit.info.pLightingOrigin = nullptr;
      hit.info.hitboxset = player->m_nHitboxSet( );
      hit.info.skin = ( int ) ( uintptr_t( player ) + m_nSkin );
      hit.info.body = ( int ) ( uintptr_t( player ) + m_nBody );
      hit.info.entity_index = player->m_entIndex;
      hit.info.instance = Memory::VCall<ModelInstanceHandle_t( __thiscall* )( void* ) >( renderable, 30u )( renderable );
      hit.info.flags = 0x1;

      hit.info.pModelToWorld = &hit.model_to_world;
      hit.state.m_pModelToWorld = &hit.model_to_world;

      hit.model_to_world.AngleMatrix( hit.info.angles, hit.info.origin );
   }
C++:
void CChams::OnPostScreenEffects( ) {
      if ( !g_Vars.globals.HackIsReady )
         m_Hitmatrix.clear( );

      if ( m_Hitmatrix.empty( ) )
         return;

      if ( !Source::m_pStudioRender.Xor( ) )
         return;

      auto drawed_shit = false;

      auto ctx = Source::m_pMatSystem->GetRenderContext( );

      if ( !ctx )
         return;

      auto it = m_Hitmatrix.begin( );
      while ( it != m_Hitmatrix.end( ) ) {
         if ( !it->state.m_pModelToWorld || !it->state.m_pRenderable || !it->state.m_pStudioHdr || !it->state.m_pStudioHWData ||
              !it->info.pRenderable || !it->info.pModelToWorld || !it->info.pModel ) {
            ++it;
            continue;
         }

         auto alpha = 1.0f;
         auto delta = Source::m_pGlobalVars->realtime - it->time;
         if ( delta > 0.0f ) {
            alpha -= delta;
            if ( delta > 1.0f ) {
               it = m_Hitmatrix.erase( it );
               continue;
            }
         }

         drawed_shit = true;

         auto color = g_Vars.esp.hitmatrix_color;
         color.a *= alpha;

         OverrideMaterial( true, g_Vars.esp.chams_hitmatrix_mat, color );
         Hooked::oDrawModelExecute( Source::m_pModelRender.Xor( ), ctx, it->state, it->info, it->pBoneToWorld );
         Source::m_pStudioRender->m_pForcedMaterial = nullptr;
         Source::m_pStudioRender->m_nForcedMaterialType = 0;

         ++it;
      }
   }
C++:
struct C_HitMatrixEntry {
      int ent_index;
      ModelRenderInfo_t info;
      DrawModelState_t state;
      matrix3x4_t pBoneToWorld[ 128 ] = {};
      float time;
      matrix3x4_t model_to_world;
   };
а зачем
void CChams::OnPostScreenEffects( )?

а точнее для чего ?
 
Пользователь
Статус
Оффлайн
Регистрация
19 Янв 2019
Сообщения
348
Реакции[?]
99
Поинты[?]
6K
C++:
void CChams::AddHitmatrix( C_CSPlayer* player, matrix3x4_t* bones ) {
      auto& hit = m_Hitmatrix.emplace_back( );

      std::memcpy( hit.pBoneToWorld, bones, player->m_CachedBoneData( ).Count( ) * sizeof( matrix3x4_t ) );
      hit.time = Source::m_pGlobalVars->realtime + g_Vars.esp.hitmatrix_time;

      static int m_nSkin = Horizon::Memory::FindInDataMap( player->GetPredDescMap( ), XorStr( "m_nSkin" ) );
      static int m_nBody = Horizon::Memory::FindInDataMap( player->GetPredDescMap( ), XorStr( "m_nBody" ) );

      hit.info.origin = player->GetAbsOrigin( );
      hit.info.angles = player->GetAbsAngles( );

      auto renderable = player->GetClientRenderable( );

      if ( !renderable )
         return;

      auto model = player->GetModel( );

      if ( !model )
         return;

      auto hdr = *( studiohdr_t** ) ( player->m_pStudioHdr( ) );

      if ( !hdr )
         return;

      hit.state.m_pStudioHdr = hdr;
      hit.state.m_pStudioHWData = Source::m_pMDLCache->GetHardwareData( model->studio );
      hit.state.m_pRenderable = renderable;
      hit.state.m_drawFlags = 0;

      hit.info.pRenderable = renderable;
      hit.info.pModel = model;
      hit.info.pLightingOffset = nullptr;
      hit.info.pLightingOrigin = nullptr;
      hit.info.hitboxset = player->m_nHitboxSet( );
      hit.info.skin = ( int ) ( uintptr_t( player ) + m_nSkin );
      hit.info.body = ( int ) ( uintptr_t( player ) + m_nBody );
      hit.info.entity_index = player->m_entIndex;
      hit.info.instance = Memory::VCall<ModelInstanceHandle_t( __thiscall* )( void* ) >( renderable, 30u )( renderable );
      hit.info.flags = 0x1;

      hit.info.pModelToWorld = &hit.model_to_world;
      hit.state.m_pModelToWorld = &hit.model_to_world;

      hit.model_to_world.AngleMatrix( hit.info.angles, hit.info.origin );
   }
C++:
void CChams::OnPostScreenEffects( ) {
      if ( !g_Vars.globals.HackIsReady )
         m_Hitmatrix.clear( );

      if ( m_Hitmatrix.empty( ) )
         return;

      if ( !Source::m_pStudioRender.Xor( ) )
         return;

      auto drawed_shit = false;

      auto ctx = Source::m_pMatSystem->GetRenderContext( );

      if ( !ctx )
         return;

      auto it = m_Hitmatrix.begin( );
      while ( it != m_Hitmatrix.end( ) ) {
         if ( !it->state.m_pModelToWorld || !it->state.m_pRenderable || !it->state.m_pStudioHdr || !it->state.m_pStudioHWData ||
              !it->info.pRenderable || !it->info.pModelToWorld || !it->info.pModel ) {
            ++it;
            continue;
         }

         auto alpha = 1.0f;
         auto delta = Source::m_pGlobalVars->realtime - it->time;
         if ( delta > 0.0f ) {
            alpha -= delta;
            if ( delta > 1.0f ) {
               it = m_Hitmatrix.erase( it );
               continue;
            }
         }

         drawed_shit = true;

         auto color = g_Vars.esp.hitmatrix_color;
         color.a *= alpha;

         OverrideMaterial( true, g_Vars.esp.chams_hitmatrix_mat, color );
         Hooked::oDrawModelExecute( Source::m_pModelRender.Xor( ), ctx, it->state, it->info, it->pBoneToWorld );
         Source::m_pStudioRender->m_pForcedMaterial = nullptr;
         Source::m_pStudioRender->m_nForcedMaterialType = 0;

         ++it;
      }
   }
C++:
struct C_HitMatrixEntry {
      int ent_index;
      ModelRenderInfo_t info;
      DrawModelState_t state;
      matrix3x4_t pBoneToWorld[ 128 ] = {};
      float time;
      matrix3x4_t model_to_world;
   };
Ебааа, а нахуя вопрос столько кода
 
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2020
Сообщения
466
Реакции[?]
102
Поинты[?]
3K
Ебааа, а нахуя вопрос столько кода
а можно разве короче код сделать ?)
C++:
void CChams::AddHitmatrix( C_CSPlayer* player, matrix3x4_t* bones ) {
      auto& hit = m_Hitmatrix.emplace_back( );

      std::memcpy( hit.pBoneToWorld, bones, player->m_CachedBoneData( ).Count( ) * sizeof( matrix3x4_t ) );
      hit.time = Source::m_pGlobalVars->realtime + g_Vars.esp.hitmatrix_time;

      static int m_nSkin = Horizon::Memory::FindInDataMap( player->GetPredDescMap( ), XorStr( "m_nSkin" ) );
      static int m_nBody = Horizon::Memory::FindInDataMap( player->GetPredDescMap( ), XorStr( "m_nBody" ) );

      hit.info.origin = player->GetAbsOrigin( );
      hit.info.angles = player->GetAbsAngles( );

      auto renderable = player->GetClientRenderable( );

      if ( !renderable )
         return;

      auto model = player->GetModel( );

      if ( !model )
         return;

      auto hdr = *( studiohdr_t** ) ( player->m_pStudioHdr( ) );

      if ( !hdr )
         return;

      hit.state.m_pStudioHdr = hdr;
      hit.state.m_pStudioHWData = Source::m_pMDLCache->GetHardwareData( model->studio );
      hit.state.m_pRenderable = renderable;
      hit.state.m_drawFlags = 0;

      hit.info.pRenderable = renderable;
      hit.info.pModel = model;
      hit.info.pLightingOffset = nullptr;
      hit.info.pLightingOrigin = nullptr;
      hit.info.hitboxset = player->m_nHitboxSet( );
      hit.info.skin = ( int ) ( uintptr_t( player ) + m_nSkin );
      hit.info.body = ( int ) ( uintptr_t( player ) + m_nBody );
      hit.info.entity_index = player->m_entIndex;
      hit.info.instance = Memory::VCall<ModelInstanceHandle_t( __thiscall* )( void* ) >( renderable, 30u )( renderable );
      hit.info.flags = 0x1;

      hit.info.pModelToWorld = &hit.model_to_world;
      hit.state.m_pModelToWorld = &hit.model_to_world;

      hit.model_to_world.AngleMatrix( hit.info.angles, hit.info.origin );
   }
C++:
void CChams::OnPostScreenEffects( ) {
      if ( !g_Vars.globals.HackIsReady )
         m_Hitmatrix.clear( );

      if ( m_Hitmatrix.empty( ) )
         return;

      if ( !Source::m_pStudioRender.Xor( ) )
         return;

      auto drawed_shit = false;

      auto ctx = Source::m_pMatSystem->GetRenderContext( );

      if ( !ctx )
         return;

      auto it = m_Hitmatrix.begin( );
      while ( it != m_Hitmatrix.end( ) ) {
         if ( !it->state.m_pModelToWorld || !it->state.m_pRenderable || !it->state.m_pStudioHdr || !it->state.m_pStudioHWData ||
              !it->info.pRenderable || !it->info.pModelToWorld || !it->info.pModel ) {
            ++it;
            continue;
         }

         auto alpha = 1.0f;
         auto delta = Source::m_pGlobalVars->realtime - it->time;
         if ( delta > 0.0f ) {
            alpha -= delta;
            if ( delta > 1.0f ) {
               it = m_Hitmatrix.erase( it );
               continue;
            }
         }

         drawed_shit = true;

         auto color = g_Vars.esp.hitmatrix_color;
         color.a *= alpha;

         OverrideMaterial( true, g_Vars.esp.chams_hitmatrix_mat, color );
         Hooked::oDrawModelExecute( Source::m_pModelRender.Xor( ), ctx, it->state, it->info, it->pBoneToWorld );
         Source::m_pStudioRender->m_pForcedMaterial = nullptr;
         Source::m_pStudioRender->m_nForcedMaterialType = 0;

         ++it;
      }
   }
C++:
struct C_HitMatrixEntry {
      int ent_index;
      ModelRenderInfo_t info;
      DrawModelState_t state;
      matrix3x4_t pBoneToWorld[ 128 ] = {};
      float time;
      matrix3x4_t model_to_world;
   };
а теперь перепиши под легендвар :LUL: пж)
 
Пользователь
Статус
Оффлайн
Регистрация
19 Янв 2019
Сообщения
348
Реакции[?]
99
Поинты[?]
6K
Я конечно понимаю, что этот способ рабочий, но кол-во символов меня пугает, я уже в это время дописал то, что хотел сюда отправить, видимо мой мега короткий код не увидит этот мир, спасибо за понимание :CoolStoryBob:
 
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2020
Сообщения
466
Реакции[?]
102
Поинты[?]
3K
Я конечно понимаю, что этот способ рабочий, но кол-во символов меня пугает, я уже в это время дописал то, что хотел сюда отправить, видимо мой мега короткий код не увидит этот мир, спасибо за понимание :CoolStoryBob:
дописывай дальше ) :kreygasm:
 
t.me/lnk1181shop
Участник
Статус
Оффлайн
Регистрация
16 Авг 2019
Сообщения
493
Реакции[?]
413
Поинты[?]
1K
C++:
void CChams::AddHitmatrix( C_CSPlayer* player, matrix3x4_t* bones ) {
      auto& hit = m_Hitmatrix.emplace_back( );

      std::memcpy( hit.pBoneToWorld, bones, player->m_CachedBoneData( ).Count( ) * sizeof( matrix3x4_t ) );
      hit.time = Source::m_pGlobalVars->realtime + g_Vars.esp.hitmatrix_time;

      static int m_nSkin = Horizon::Memory::FindInDataMap( player->GetPredDescMap( ), XorStr( "m_nSkin" ) );
      static int m_nBody = Horizon::Memory::FindInDataMap( player->GetPredDescMap( ), XorStr( "m_nBody" ) );

      hit.info.origin = player->GetAbsOrigin( );
      hit.info.angles = player->GetAbsAngles( );

      auto renderable = player->GetClientRenderable( );

      if ( !renderable )
         return;

      auto model = player->GetModel( );

      if ( !model )
         return;

      auto hdr = *( studiohdr_t** ) ( player->m_pStudioHdr( ) );

      if ( !hdr )
         return;

      hit.state.m_pStudioHdr = hdr;
      hit.state.m_pStudioHWData = Source::m_pMDLCache->GetHardwareData( model->studio );
      hit.state.m_pRenderable = renderable;
      hit.state.m_drawFlags = 0;

      hit.info.pRenderable = renderable;
      hit.info.pModel = model;
      hit.info.pLightingOffset = nullptr;
      hit.info.pLightingOrigin = nullptr;
      hit.info.hitboxset = player->m_nHitboxSet( );
      hit.info.skin = ( int ) ( uintptr_t( player ) + m_nSkin );
      hit.info.body = ( int ) ( uintptr_t( player ) + m_nBody );
      hit.info.entity_index = player->m_entIndex;
      hit.info.instance = Memory::VCall<ModelInstanceHandle_t( __thiscall* )( void* ) >( renderable, 30u )( renderable );
      hit.info.flags = 0x1;

      hit.info.pModelToWorld = &hit.model_to_world;
      hit.state.m_pModelToWorld = &hit.model_to_world;

      hit.model_to_world.AngleMatrix( hit.info.angles, hit.info.origin );
   }
C++:
void CChams::OnPostScreenEffects( ) {
      if ( !g_Vars.globals.HackIsReady )
         m_Hitmatrix.clear( );

      if ( m_Hitmatrix.empty( ) )
         return;

      if ( !Source::m_pStudioRender.Xor( ) )
         return;

      auto drawed_shit = false;

      auto ctx = Source::m_pMatSystem->GetRenderContext( );

      if ( !ctx )
         return;

      auto it = m_Hitmatrix.begin( );
      while ( it != m_Hitmatrix.end( ) ) {
         if ( !it->state.m_pModelToWorld || !it->state.m_pRenderable || !it->state.m_pStudioHdr || !it->state.m_pStudioHWData ||
              !it->info.pRenderable || !it->info.pModelToWorld || !it->info.pModel ) {
            ++it;
            continue;
         }

         auto alpha = 1.0f;
         auto delta = Source::m_pGlobalVars->realtime - it->time;
         if ( delta > 0.0f ) {
            alpha -= delta;
            if ( delta > 1.0f ) {
               it = m_Hitmatrix.erase( it );
               continue;
            }
         }

         drawed_shit = true;

         auto color = g_Vars.esp.hitmatrix_color;
         color.a *= alpha;

         OverrideMaterial( true, g_Vars.esp.chams_hitmatrix_mat, color );
         Hooked::oDrawModelExecute( Source::m_pModelRender.Xor( ), ctx, it->state, it->info, it->pBoneToWorld );
         Source::m_pStudioRender->m_pForcedMaterial = nullptr;
         Source::m_pStudioRender->m_nForcedMaterialType = 0;

         ++it;
      }
   }
C++:
struct C_HitMatrixEntry {
      int ent_index;
      ModelRenderInfo_t info;
      DrawModelState_t state;
      matrix3x4_t pBoneToWorld[ 128 ] = {};
      float time;
      matrix3x4_t model_to_world;
   };
спасибо за кволити пасту с еексоми :flushed: :flushed: :flushed: :flushed:
 
Модератор форума
Модератор
Статус
Оффлайн
Регистрация
26 Янв 2020
Сообщения
378
Реакции[?]
157
Поинты[?]
9K
C++:
void CChams::AddHitmatrix( C_CSPlayer* player, matrix3x4_t* bones ) {
      auto& hit = m_Hitmatrix.emplace_back( );

      std::memcpy( hit.pBoneToWorld, bones, player->m_CachedBoneData( ).Count( ) * sizeof( matrix3x4_t ) );
      hit.time = Source::m_pGlobalVars->realtime + g_Vars.esp.hitmatrix_time;

      static int m_nSkin = Horizon::Memory::FindInDataMap( player->GetPredDescMap( ), XorStr( "m_nSkin" ) );
      static int m_nBody = Horizon::Memory::FindInDataMap( player->GetPredDescMap( ), XorStr( "m_nBody" ) );

      hit.info.origin = player->GetAbsOrigin( );
      hit.info.angles = player->GetAbsAngles( );

      auto renderable = player->GetClientRenderable( );

      if ( !renderable )
         return;

      auto model = player->GetModel( );

      if ( !model )
         return;

      auto hdr = *( studiohdr_t** ) ( player->m_pStudioHdr( ) );

      if ( !hdr )
         return;

      hit.state.m_pStudioHdr = hdr;
      hit.state.m_pStudioHWData = Source::m_pMDLCache->GetHardwareData( model->studio );
      hit.state.m_pRenderable = renderable;
      hit.state.m_drawFlags = 0;

      hit.info.pRenderable = renderable;
      hit.info.pModel = model;
      hit.info.pLightingOffset = nullptr;
      hit.info.pLightingOrigin = nullptr;
      hit.info.hitboxset = player->m_nHitboxSet( );
      hit.info.skin = ( int ) ( uintptr_t( player ) + m_nSkin );
      hit.info.body = ( int ) ( uintptr_t( player ) + m_nBody );
      hit.info.entity_index = player->m_entIndex;
      hit.info.instance = Memory::VCall<ModelInstanceHandle_t( __thiscall* )( void* ) >( renderable, 30u )( renderable );
      hit.info.flags = 0x1;

      hit.info.pModelToWorld = &hit.model_to_world;
      hit.state.m_pModelToWorld = &hit.model_to_world;

      hit.model_to_world.AngleMatrix( hit.info.angles, hit.info.origin );
   }
C++:
void CChams::OnPostScreenEffects( ) {
      if ( !g_Vars.globals.HackIsReady )
         m_Hitmatrix.clear( );

      if ( m_Hitmatrix.empty( ) )
         return;

      if ( !Source::m_pStudioRender.Xor( ) )
         return;

      auto drawed_shit = false;

      auto ctx = Source::m_pMatSystem->GetRenderContext( );

      if ( !ctx )
         return;

      auto it = m_Hitmatrix.begin( );
      while ( it != m_Hitmatrix.end( ) ) {
         if ( !it->state.m_pModelToWorld || !it->state.m_pRenderable || !it->state.m_pStudioHdr || !it->state.m_pStudioHWData ||
              !it->info.pRenderable || !it->info.pModelToWorld || !it->info.pModel ) {
            ++it;
            continue;
         }

         auto alpha = 1.0f;
         auto delta = Source::m_pGlobalVars->realtime - it->time;
         if ( delta > 0.0f ) {
            alpha -= delta;
            if ( delta > 1.0f ) {
               it = m_Hitmatrix.erase( it );
               continue;
            }
         }

         drawed_shit = true;

         auto color = g_Vars.esp.hitmatrix_color;
         color.a *= alpha;

         OverrideMaterial( true, g_Vars.esp.chams_hitmatrix_mat, color );
         Hooked::oDrawModelExecute( Source::m_pModelRender.Xor( ), ctx, it->state, it->info, it->pBoneToWorld );
         Source::m_pStudioRender->m_pForcedMaterial = nullptr;
         Source::m_pStudioRender->m_nForcedMaterialType = 0;

         ++it;
      }
   }
C++:
struct C_HitMatrixEntry {
      int ent_index;
      ModelRenderInfo_t info;
      DrawModelState_t state;
      matrix3x4_t pBoneToWorld[ 128 ] = {};
      float time;
      matrix3x4_t model_to_world;
   };
хайд ставь, ща пастеры поналетят
 
t.me/lnk1181shop
Участник
Статус
Оффлайн
Регистрация
16 Авг 2019
Сообщения
493
Реакции[?]
413
Поинты[?]
1K
Модератор форума
Модератор
Статус
Оффлайн
Регистрация
26 Янв 2020
Сообщения
378
Реакции[?]
157
Поинты[?]
9K
а какой смысл в хайде на обычный рендер модельки
к тому же это есть в паблик дампе еексоми/фт......
то догадаться надо, да и дамп не каждый прочтет, а тут код готовый - бери и ешь как говорится
 
Сверху Снизу