Как правильнее будет в анимфиксе?

Участник
Статус
Оффлайн
Регистрация
27 Фев 2019
Сообщения
1,105
Реакции[?]
388
Поинты[?]
45K
1.
C++:
void AnimFix(C_BaseEntity* pEnt)
{
    auto backup_curtime = g_pGlobalVars->curtime;
    auto backup_frametime = g_pGlobalVars->frametime;
    
    g_pGlobalVars->curtime = pEnt->GetSimulatiomTime();
    g_pGlobalVars->frametime = g_pGlobalVars->intervalPerTick;
    
    if (pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount == g_pGlobalVars->framecount)
        pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount = g_pGlobalVars->framecount - 1;
    
    pEnt->ClientAnimations(true);
    resolver(pEnt);
    pEnt->UpdateClientAnimations();
    pEnt->ClientAnimations(false);
    
    g_pGlobalVars->curtime = backup_curtime;
    g_pGlobalVars->frametime = backup_frametime;
    
    pEnt->invalidate_bone_cache();
    pEnt->setup_bones(nullptr, -1, 0x7FF00, g_pGlobalVars->curtime);
}
2.
C++:
void AnimFix(C_BaseEntity* pEnt)
{
    auto backup_curtime = g_pGlobalVars->curtime;
    auto backup_frametime = g_pGlobalVars->frametime;
    
    pEnt->ClientAnimations(true);
    
    g_pGlobalVars->curtime = pEnt->GetSimulatiomTime();
    g_pGlobalVars->frametime = g_pGlobalVars->intervalPerTick;
    
    if (pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount == g_pGlobalVars->framecount)
        pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount = g_pGlobalVars->framecount - 1;
    
    resolver(pEnt);
    pEnt->UpdateClientAnimations();
    
    g_pGlobalVars->curtime = backup_curtime;
    g_pGlobalVars->frametime = backup_frametime;
    
    pEnt->invalidate_bone_cache();
    pEnt->setup_bones(nullptr, -1, 0x7FF00, g_pGlobalVars->curtime);
    
    pEnt->ClientAnimations(false);
}
 
ставь чайник, зажигай плиту
Эксперт
Статус
Оффлайн
Регистрация
22 Май 2020
Сообщения
1,442
Реакции[?]
1,092
Поинты[?]
10K
интернет закрыли
Пожалуйста, авторизуйтесь для просмотра ссылки.

1 (Логика построения, а не сам код)
 
Начинающий
Статус
Оффлайн
Регистрация
12 Май 2020
Сообщения
50
Реакции[?]
29
Поинты[?]
0
1.
C++:
void AnimFix(C_BaseEntity* pEnt)
{
    auto backup_curtime = g_pGlobalVars->curtime;
    auto backup_frametime = g_pGlobalVars->frametime;
   
    g_pGlobalVars->curtime = pEnt->GetSimulatiomTime();
    g_pGlobalVars->frametime = g_pGlobalVars->intervalPerTick;
   
    if (pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount == g_pGlobalVars->framecount)
        pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount = g_pGlobalVars->framecount - 1;
   
    pEnt->ClientAnimations(true);
    resolver(pEnt);
    pEnt->UpdateClientAnimations();
    pEnt->ClientAnimations(false);
   
    g_pGlobalVars->curtime = backup_curtime;
    g_pGlobalVars->frametime = backup_frametime;
   
    pEnt->invalidate_bone_cache();
    pEnt->setup_bones(nullptr, -1, 0x7FF00, g_pGlobalVars->curtime);
}
2.
C++:
void AnimFix(C_BaseEntity* pEnt)
{
    auto backup_curtime = g_pGlobalVars->curtime;
    auto backup_frametime = g_pGlobalVars->frametime;
   
    pEnt->ClientAnimations(true);
   
    g_pGlobalVars->curtime = pEnt->GetSimulatiomTime();
    g_pGlobalVars->frametime = g_pGlobalVars->intervalPerTick;
   
    if (pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount == g_pGlobalVars->framecount)
        pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount = g_pGlobalVars->framecount - 1;
   
    resolver(pEnt);
    pEnt->UpdateClientAnimations();
   
    g_pGlobalVars->curtime = backup_curtime;
    g_pGlobalVars->frametime = backup_frametime;
   
    pEnt->invalidate_bone_cache();
    pEnt->setup_bones(nullptr, -1, 0x7FF00, g_pGlobalVars->curtime);
   
    pEnt->ClientAnimations(false);
}
Весь код неверный, ты какую блять анимацию то здесь фиксишь наркоман?
 
Забаненный
Статус
Оффлайн
Регистрация
1 Июн 2020
Сообщения
9
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Два абсолютно безполезных кода, советую тебе первое выучить c++ и начать реверсить игру или хотя бы спрашивать у умных людей.
 
Последнее редактирование:
Эксперт
Статус
Оффлайн
Регистрация
17 Фев 2017
Сообщения
864
Реакции[?]
420
Поинты[?]
1K
Два абсолютно безполезных кода, советую тебе первое выучить c++ и начать реверсить игру или хотя бы спрашивать у умных людей.
тебя кстати никто не спрашивал))0
 
Забаненный
Статус
Оффлайн
Регистрация
1 Июн 2020
Сообщения
9
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Эксперт
Статус
Оффлайн
Регистрация
17 Фев 2017
Сообщения
864
Реакции[?]
420
Поинты[?]
1K
1.
C++:
void AnimFix(C_BaseEntity* pEnt)
{
    auto backup_curtime = g_pGlobalVars->curtime;
    auto backup_frametime = g_pGlobalVars->frametime;
  
    g_pGlobalVars->curtime = pEnt->GetSimulatiomTime();
    g_pGlobalVars->frametime = g_pGlobalVars->intervalPerTick;
  
    if (pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount == g_pGlobalVars->framecount)
        pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount = g_pGlobalVars->framecount - 1;
  
    pEnt->ClientAnimations(true);
    resolver(pEnt);
    pEnt->UpdateClientAnimations();
    pEnt->ClientAnimations(false);
  
    g_pGlobalVars->curtime = backup_curtime;
    g_pGlobalVars->frametime = backup_frametime;
  
    pEnt->invalidate_bone_cache();
    pEnt->setup_bones(nullptr, -1, 0x7FF00, g_pGlobalVars->curtime);
}
2.
C++:
void AnimFix(C_BaseEntity* pEnt)
{
    auto backup_curtime = g_pGlobalVars->curtime;
    auto backup_frametime = g_pGlobalVars->frametime;
  
    pEnt->ClientAnimations(true);
  
    g_pGlobalVars->curtime = pEnt->GetSimulatiomTime();
    g_pGlobalVars->frametime = g_pGlobalVars->intervalPerTick;
  
    if (pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount == g_pGlobalVars->framecount)
        pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount = g_pGlobalVars->framecount - 1;
  
    resolver(pEnt);
    pEnt->UpdateClientAnimations();
  
    g_pGlobalVars->curtime = backup_curtime;
    g_pGlobalVars->frametime = backup_frametime;
  
    pEnt->invalidate_bone_cache();
    pEnt->setup_bones(nullptr, -1, 0x7FF00, g_pGlobalVars->curtime);
  
    pEnt->ClientAnimations(false);
}
Это только маленькая часть кода.
Гладиаторз закрывай сразу нах, это шляпа коня. Нормальный анимфикс в слитом зевсе ( там урезанная версия кряка вантапа, некоторые части придется дописать )
Но 99,9999999% югейма не то что не в силах спастить код зевса, они даже понять его не смогут ибо лама кодер все делает через лютые костыли и говнокод. ( А Ледасир все это пастит )


Я когда реверсил вт знатно офигел, думал приколясы с Идой. А оказалось это такой лютый говнокод что тебе и не снилось
 
аллах велик
Забаненный
Статус
Оффлайн
Регистрация
24 Янв 2020
Сообщения
252
Реакции[?]
117
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
    if ( !local_player )
        return;

    static float sim_time;
    if ( sim_time != local_player->get_simulation_time( ) )
    {
        auto state = local_player->get_anim_state( ); if ( !state ) return;

        const float curtime = globals->curtime;
        const float frametime = globals->frametime;
        const float realtime = globals->real_time;
        const float absoluteframetime = globals->absolute_frametime;
        const float absoluteframestarttimestddev = globals->absolute_frame_start_time;
        const float interpolation_amount = globals->interpolation_amount;
        const float framecount = globals->frame_count;
        const float tickcount = globals->tickcount;

        static auto host_timescale = cvar->find_var( ( "host_timescale" ) );

        globals->curtime = local_player->get_simulation_time( );
        globals->real_time = local_player->get_simulation_time( );
        globals->frametime = globals->interval_per_tick * host_timescale->get_float( );
        globals->absolute_frametime = globals->interval_per_tick * host_timescale->get_float( );
        globals->absolute_frame_start_time = local_player->get_simulation_time( ) - globals->interval_per_tick * host_timescale->get_float( );
        globals->interpolation_amount = 0;
        globals->frame_count = time_to_ticks( local_player->get_simulation_time( ) );
        globals->tickcount = time_to_ticks( local_player->get_simulation_time( ) );

        int backup_flags = local_player->get_flags( );
        int backup_eflags = local_player->get_eflags( );

        animationlayer backup_layers [ 15 ];
        std::memcpy( backup_layers, local_player->get_anim_overlays( ), ( sizeof( animationlayer ) * 15 ) );

        if ( state->last_client_side_animation_update_framecount == globals->frame_count )
            state->last_client_side_animation_update_framecount = globals->frame_count - 1;
вот тебе анимфикс
 
Забаненный
Статус
Оффлайн
Регистрация
1 Июн 2020
Сообщения
9
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
    if ( !local_player )
        return;

    static float sim_time;
    if ( sim_time != local_player->get_simulation_time( ) )
    {
        auto state = local_player->get_anim_state( ); if ( !state ) return;

        const float curtime = globals->curtime;
        const float frametime = globals->frametime;
        const float realtime = globals->real_time;
        const float absoluteframetime = globals->absolute_frametime;
        const float absoluteframestarttimestddev = globals->absolute_frame_start_time;
        const float interpolation_amount = globals->interpolation_amount;
        const float framecount = globals->frame_count;
        const float tickcount = globals->tickcount;

        static auto host_timescale = cvar->find_var( ( "host_timescale" ) );

        globals->curtime = local_player->get_simulation_time( );
        globals->real_time = local_player->get_simulation_time( );
        globals->frametime = globals->interval_per_tick * host_timescale->get_float( );
        globals->absolute_frametime = globals->interval_per_tick * host_timescale->get_float( );
        globals->absolute_frame_start_time = local_player->get_simulation_time( ) - globals->interval_per_tick * host_timescale->get_float( );
        globals->interpolation_amount = 0;
        globals->frame_count = time_to_ticks( local_player->get_simulation_time( ) );
        globals->tickcount = time_to_ticks( local_player->get_simulation_time( ) );

        int backup_flags = local_player->get_flags( );
        int backup_eflags = local_player->get_eflags( );

        animationlayer backup_layers [ 15 ];
        std::memcpy( backup_layers, local_player->get_anim_overlays( ), ( sizeof( animationlayer ) * 15 ) );

        if ( state->last_client_side_animation_update_framecount == globals->frame_count )
            state->last_client_side_animation_update_framecount = globals->frame_count - 1;
вот тебе анимфикс
ne nu ti zachem animation fix fatality silvaesh((
 
Забаненный
Статус
Оффлайн
Регистрация
1 Июн 2020
Сообщения
9
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Это только маленькая часть кода.
Гладиаторз закрывай сразу нах, это шляпа коня. Нормальный анимфикс в слитом зевсе ( там урезанная версия кряка вантапа, некоторые части придется дописать )
Но 99,9999999% югейма не то что не в силах спастить код зевса, они даже понять его не смогут ибо лама кодер все делает через лютые костыли и говнокод. ( А Ледасир все это пастит )


Я когда реверсил вт знатно офигел, думал приколясы с Идой. А оказалось это такой лютый говнокод что тебе и не снилось
Может быть лютые костыли и говнокод, но проблема в том что код работает, не важно как твой код сделан, важно то что он работает
 
Эксперт
Статус
Оффлайн
Регистрация
17 Фев 2017
Сообщения
864
Реакции[?]
420
Поинты[?]
1K
C++:
    if ( !local_player )
        return;

    static float sim_time;
    if ( sim_time != local_player->get_simulation_time( ) )
    {
        auto state = local_player->get_anim_state( ); if ( !state ) return;

        const float curtime = globals->curtime;
        const float frametime = globals->frametime;
        const float realtime = globals->real_time;
        const float absoluteframetime = globals->absolute_frametime;
        const float absoluteframestarttimestddev = globals->absolute_frame_start_time;
        const float interpolation_amount = globals->interpolation_amount;
        const float framecount = globals->frame_count;
        const float tickcount = globals->tickcount;

        static auto host_timescale = cvar->find_var( ( "host_timescale" ) );

        globals->curtime = local_player->get_simulation_time( );
        globals->real_time = local_player->get_simulation_time( );
        globals->frametime = globals->interval_per_tick * host_timescale->get_float( );
        globals->absolute_frametime = globals->interval_per_tick * host_timescale->get_float( );
        globals->absolute_frame_start_time = local_player->get_simulation_time( ) - globals->interval_per_tick * host_timescale->get_float( );
        globals->interpolation_amount = 0;
        globals->frame_count = time_to_ticks( local_player->get_simulation_time( ) );
        globals->tickcount = time_to_ticks( local_player->get_simulation_time( ) );

        int backup_flags = local_player->get_flags( );
        int backup_eflags = local_player->get_eflags( );

        animationlayer backup_layers [ 15 ];
        std::memcpy( backup_layers, local_player->get_anim_overlays( ), ( sizeof( animationlayer ) * 15 ) );

        if ( state->last_client_side_animation_update_framecount == globals->frame_count )
            state->last_client_side_animation_update_framecount = globals->frame_count - 1;
вот тебе анимфикс
Код:
if ( sim_time != local_player->get_simulation_time( ) )

Дальше можно не читать
 
аллах велик
Забаненный
Статус
Оффлайн
Регистрация
24 Янв 2020
Сообщения
252
Реакции[?]
117
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
12 Май 2020
Сообщения
50
Реакции[?]
29
Поинты[?]
0
Участник
Статус
Оффлайн
Регистрация
27 Фев 2019
Сообщения
1,105
Реакции[?]
388
Поинты[?]
45K
Правильнее и без костылей будет вот так:

C++:
if (pEnt->m_flOldSimulationTime() == pEnt->m_flSimulationTime())
    return;
Works fine for Soufiw IIama and me
Код:
if ( sim_time != local_player->get_simulation_time( ) )

Дальше можно не читать
C++:
if (pEnt->m_flSimulationTime() > pEnt->m_flOldSimulationTime())
{
    // animfix
    // setupbones
}
тогда можно ли делать так?
 
main public enemy
Эксперт
Статус
Оффлайн
Регистрация
30 Ноя 2019
Сообщения
1,531
Реакции[?]
647
Поинты[?]
0
1.
C++:
void AnimFix(C_BaseEntity* pEnt)
{
    auto backup_curtime = g_pGlobalVars->curtime;
    auto backup_frametime = g_pGlobalVars->frametime;
  
    g_pGlobalVars->curtime = pEnt->GetSimulatiomTime();
    g_pGlobalVars->frametime = g_pGlobalVars->intervalPerTick;
  
    if (pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount == g_pGlobalVars->framecount)
        pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount = g_pGlobalVars->framecount - 1;
  
    pEnt->ClientAnimations(true);
    resolver(pEnt);
    pEnt->UpdateClientAnimations();
    pEnt->ClientAnimations(false);
  
    g_pGlobalVars->curtime = backup_curtime;
    g_pGlobalVars->frametime = backup_frametime;
  
    pEnt->invalidate_bone_cache();
    pEnt->setup_bones(nullptr, -1, 0x7FF00, g_pGlobalVars->curtime);
}
2.
C++:
void AnimFix(C_BaseEntity* pEnt)
{
    auto backup_curtime = g_pGlobalVars->curtime;
    auto backup_frametime = g_pGlobalVars->frametime;
  
    pEnt->ClientAnimations(true);
  
    g_pGlobalVars->curtime = pEnt->GetSimulatiomTime();
    g_pGlobalVars->frametime = g_pGlobalVars->intervalPerTick;
  
    if (pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount == g_pGlobalVars->framecount)
        pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount = g_pGlobalVars->framecount - 1;
  
    resolver(pEnt);
    pEnt->UpdateClientAnimations();
  
    g_pGlobalVars->curtime = backup_curtime;
    g_pGlobalVars->frametime = backup_frametime;
  
    pEnt->invalidate_bone_cache();
    pEnt->setup_bones(nullptr, -1, 0x7FF00, g_pGlobalVars->curtime);
  
    pEnt->ClientAnimations(false);
}
Смеятся не буду, но скажу что оба ярый треш (бэкапить при клиентсайд тру слишком круто,да и код полностью почти не правильный)
Где брать,пастить анимфикс ? onetap.idb так делаю все лол
Гладиаторз анимфикс - хуйня и оутдатед, но само его построение и основной фикс думаю правильный
 
main public enemy
Эксперт
Статус
Оффлайн
Регистрация
30 Ноя 2019
Сообщения
1,531
Реакции[?]
647
Поинты[?]
0
C++:
if (pEnt->m_flSimulationTime() > pEnt->m_flOldSimulationTime())
{
    // animfix
    // setupbones
}
тогда можно ли делать так?
А зачем тебе проверять на чокедтайм?
Ты будешь фиксить анимации только при эксплойтах,фейклагах?
А что же будет при анчоке ?
 
main public enemy
Эксперт
Статус
Оффлайн
Регистрация
30 Ноя 2019
Сообщения
1,531
Реакции[?]
647
Поинты[?]
0
Весь код неверный, ты какую блять анимацию то здесь фиксишь наркоман?
В основном тут как я увидел он пытается фиксить время как клиентсайд так и серверсайд
 
Эксперт
Статус
Оффлайн
Регистрация
17 Фев 2017
Сообщения
864
Реакции[?]
420
Поинты[?]
1K
Правильнее и без костылей будет вот так:

C++:
if (pEnt->m_flOldSimulationTime() == pEnt->m_flSimulationTime())
    return;
Works fine for Soufiw IIama and me
Абсолютно не понимаешь как всё работает. Не надо тегать Соуфи, он бы такую херню в жизни бы не написал
UPD: Или ты изменил уже код или я дурак и не правильно увидел. Так уже правильно. Но надо учитывать ещё lerp и interpolation.
Если у тебя нет желания фиксить брик лаг комп то желательно сделать онли if (pEnt->m_flSimulationTime() > pEnt->m_flOldSimulationTime())
C++:
if (pEnt->m_flSimulationTime() > pEnt->m_flOldSimulationTime())
{
    // animfix
    // setupbones
}
тогда можно ли делать так?
Код:
if (pEnt->m_flSimulationTime() == pEnt->m_flOldSimulationTime())
return;

// do your animation fix

store global_vars

do some fixes

bupdateclientsideanim = true;
player->update_animations();
if (player != localplayer) bupdateclientsideanim = false;

restore your global_vars

setup bones

restore player animations
 
Последнее редактирование:
main public enemy
Эксперт
Статус
Оффлайн
Регистрация
30 Ноя 2019
Сообщения
1,531
Реакции[?]
647
Поинты[?]
0
C++:
void AnimFix(C_BaseEntity* pEnt)
{
    auto backup_curtime = g_pGlobalVars->curtime;
    auto backup_frametime = g_pGlobalVars->frametime;
  

  
    g_pGlobalVars->curtime = pEnt->GetSimulatiomTime();
    g_pGlobalVars->frametime = g_pGlobalVars->intervalPerTick;
  
    if (pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount == g_pGlobalVars->framecount)
        pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount = g_pGlobalVars->framecount - 1;
       pEnt->ClientAnimations(true);
        resolver(pEnt);
        pEnt->UpdateClientAnimations();
       if (player != g_LocalPlayer) // solpadoin style
       pEnt->ClientAnimations(false);

    g_pGlobalVars->curtime = backup_curtime;
    g_pGlobalVars->frametime = backup_frametime;
  
    pEnt->invalidate_bone_cache();
    pEnt->setup_bones(nullptr, -1, 0x7FF00, g_pGlobalVars->curtime);
  

}
Чуть подправил,но все равно трэш
 
Эксперт
Статус
Оффлайн
Регистрация
17 Фев 2017
Сообщения
864
Реакции[?]
420
Поинты[?]
1K
C++:
void AnimFix(C_BaseEntity* pEnt)
{
    auto backup_curtime = g_pGlobalVars->curtime;
    auto backup_frametime = g_pGlobalVars->frametime;
 

 
    g_pGlobalVars->curtime = pEnt->GetSimulatiomTime();
    g_pGlobalVars->frametime = g_pGlobalVars->intervalPerTick;
 
    if (pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount == g_pGlobalVars->framecount)
        pEnt->AnimState()->m_iLastClientSideUpdateAnimationFramecount = g_pGlobalVars->framecount - 1;
       pEnt->ClientAnimations(true);
        resolver(pEnt);
        pEnt->UpdateClientAnimations();
       if (player != g_LocalPlayer) // solpadoin style
       pEnt->ClientAnimations(false);

    g_pGlobalVars->curtime = backup_curtime;
    g_pGlobalVars->frametime = backup_frametime;
 
    pEnt->invalidate_bone_cache();
    pEnt->setup_bones(nullptr, -1, 0x7FF00, g_pGlobalVars->curtime);
 

}
Чуть подправил,но все равно трэш
Код:
       if (player != g_LocalPlayer) // solpadoin style
       pEnt->ClientAnimations(false);
Это не Solpadoin style. У локал плеера всегда должен быть включен pEnt->ClientAnimations(true);
 
Сверху Снизу