-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
g_LocalPlayer->UpdateAnimationState(m_fake_state, globals::pCmd->viewangles);
Если коменчу эту строку, то перестает работать отображение (Что довольно логично )
В противном случае отображение работает нормально, но появляется краш на 2 карте.
Логичный вопрос: Что делать, как фиксить? Есть у кого нормальное отображение фейка, чтоб не улетать после смены мапы?
Скрин, если сторока с UpdateAnimationState закоменчена:
Сам код функции:
p.s База - csgosimple.
Если коменчу эту строку, то перестает работать отображение (Что довольно логично )
В противном случае отображение работает нормально, но появляется краш на 2 карте.
Логичный вопрос: Что делать, как фиксить? Есть у кого нормальное отображение фейка, чтоб не улетать после смены мапы?
Скрин, если сторока с UpdateAnimationState закоменчена:
Сам код функции:
Код:
void desynchams()
{
if ( !g_LocalPlayer || !g_LocalPlayer->IsAlive( ) ) {
m_should_update_fake = true;
return;
}
if (Variables.rageaimbot.desynctype == 0)
return;
if ( m_fake_spawntime != g_LocalPlayer->m_flSpawnTime( ) || m_should_update_fake )
{
init_fake_anim = false;
m_fake_spawntime = g_LocalPlayer->m_flSpawnTime( );
m_should_update_fake = false;
}
if ( !init_fake_anim )
{
m_fake_state = reinterpret_cast< CBasePlayerAnimState* > (g_pMemAlloc->Alloc( sizeof( CBasePlayerAnimState ) ));
if (m_fake_state != nullptr)
{
g_LocalPlayer->create_animation_state(m_fake_state);
init_fake_anim = true;
}
}
if ( globals::bSendPacket )
{
int OldFrameCount = g_pGlobalVars->framecount;
int OldTickCount = g_pGlobalVars->tickcount;
static auto host_timescale = g_CVar->FindVar( ("host_timescale") );
g_pGlobalVars->framecount = TIME_TO_TICKS( g_LocalPlayer->m_flSimulationTime( ) );
g_pGlobalVars->tickcount = TIME_TO_TICKS( g_LocalPlayer->m_flSimulationTime( ) );
std::memcpy( m_fake_layers.data( ), g_LocalPlayer->GetAnimOverlays( ), sizeof( m_fake_layers ) );
std::memcpy( m_fake_poses.data( ), g_LocalPlayer->m_flPoseParameter( ).data( ), sizeof( m_fake_poses ) );
if (GetKeyState(Variables.Visuals.thirdperson))
{
g_LocalPlayer->UpdateAnimationState(m_fake_state, globals::pCmd->viewangles); //crash
}
const auto backup_absangles = g_LocalPlayer->GetAbsAngles( );
/* invalidate bone cache */
g_LocalPlayer->GetMostRecentModelBoneCounter( ) = 0;
g_LocalPlayer->GetLastBoneSetupTime( ) = -FLT_MAX;
m_got_fake_matrix = g_LocalPlayer->SetupBones( m_fake_matrix, MAXSTUDIOBONES, BONE_USED_BY_ANYTHING & ~BONE_USED_BY_ATTACHMENT, g_pGlobalVars->curtime );
memcpy( m_fake_position_matrix, m_fake_matrix, sizeof( m_fake_position_matrix ) );
const auto org_tmp = g_LocalPlayer->GetRenderOrigin( );
if ( m_got_fake_matrix )
{
for ( auto& i : m_fake_matrix )
{
i [ 0 ][ 3 ] -= org_tmp.x;
i [ 1 ][ 3 ] -= org_tmp.y;
i [ 2 ][ 3 ] -= org_tmp.z;
}
}
g_LocalPlayer->SetAbsAngles( backup_absangles ); // restore real abs rotation
/* invalidate bone cache */
g_LocalPlayer->GetMostRecentModelBoneCounter( ) = 0;
g_LocalPlayer->GetLastBoneSetupTime( ) = -FLT_MAX;
std::memcpy( g_LocalPlayer->GetAnimOverlays( ), m_fake_layers.data( ), sizeof( m_fake_layers ) );
std::memcpy( g_LocalPlayer->m_flPoseParameter( ).data( ), m_fake_poses.data( ), sizeof( m_fake_poses ) );
g_pGlobalVars->framecount = OldFrameCount;
g_pGlobalVars->tickcount = OldTickCount;
}
}