- Статус
- Оффлайн
- Регистрация
- 4 Июн 2021
- Сообщения
- 329
- Реакции
- 114
Пишу (ну.. пытаюсь) экстернал пасту на доту, почему-то на некоторых героях при чтении выдаёт 299 (ERROR_PARTIAL_COPY), не могу понять с чем это связано...
У алхимика не читается m_vecAbilities, у дизраптора m_iszUnitName, других пока не замечал
У алхимика не читается m_vecAbilities, у дизраптора m_iszUnitName, других пока не замечал
shit code:
const auto controller = entity_system->get_entity_by_index( i );
if ( !controller || !controller->valid( ) )
continue;
const auto m_iszPlayerName = controller->read< std::array< char, 128 > >( 0x6c8 );
const auto m_hAssignedHero = controller->read< std::uintptr_t >( 0x8e4 );
const auto m_bIsLocalPlayerController = controller->read< bool >( 0x758 );
const auto assigned_hero = entity_system->get_entity_by_handle( m_hAssignedHero );
if ( !assigned_hero || !assigned_hero->valid( ) )
continue;
std::cout << "[1] GET SOME HERO DATA\n";
try
{
const auto m_iHealth = assigned_hero->m_iHealth( );
const auto m_iMaxHealth = assigned_hero->m_iMaxHealth( );
const auto m_flMana = assigned_hero->m_flMana( );
const auto m_flMaxMana = assigned_hero->m_flMaxMana( );
const std::string unit_name = assigned_hero->m_iszUnitName( );
std::cout << std::format(
"[{}] name: {} {}\n"
" unit: {}\n"
" HP: {} / {}\n"
" MP: {} / {}\n",
i,
m_iszPlayerName.data( ),
m_bIsLocalPlayerController ? "(local player)" : "",
unit_name,
m_iHealth, m_iMaxHealth,
static_cast< int >( m_flMana ), static_cast< int >( m_flMaxMana )
);
}
catch ( const std::exception& e )
{
std::cerr << "[1] FAILED (" << e.what( ) << ") ===============================\n";
}
// abilities
std::cout << "[2] GET ABILITIES\n";
try
{
const auto m_vecAbilities = assigned_hero->m_vecAbilities( );
for ( int k = 0; k < m_vecAbilities.size( ); k++ )
{
const auto ability_handle = m_vecAbilities [ k ];
if ( !ability_handle )
continue;
const auto ability_entity = entity_system->get_entity_by_handle( ability_handle );
if ( !ability_entity || !ability_entity->valid( ) )
continue;
//const auto m_iLevel = ability_entity->read< int >( 0x618 );
//const auto m_fCooldown = ability_entity->read< float >( 0x628 );
//const auto m_flCooldownLength = ability_entity->read< float >( 0x62C );
const auto ability_name = entity_system->get_unit_name( ability_entity );
std::cout << std::format( " ability[{}] = {}\n", k, ability_name );
}
}
catch ( const std::exception& e )
{
std::cerr << "[2] FAILED (" << e.what( ) << ") ===============================\n";
}
// items
std::cout << "[3] GET ITEMS\n";
try
{
// либо кальве либо хуй знает почему, но мой CUtlVector который я использую в m_vecAbilities тут не работает
const auto m_hItems = assigned_hero->read< std::array< int, 25 > >( 0x1128 + 0x20 + 0x4 );
for ( int k = 0; k < m_hItems.size( ); k++ )
{
const auto item_handle = m_hItems [ k ];
if ( !item_handle )
continue;
const auto item_entity = entity_system->get_entity_by_handle( item_handle );
if ( !item_entity || !item_entity->valid( ) )
continue;
const auto item_name = entity_system->get_unit_name( item_entity );
std::cout << std::format( " item[{}] = {}\n", k, item_name );
}
}
catch ( const std::exception& e )
{
std::cerr << "[3] FAILED (" << e.what( ) << ") ===============================\n";
}