Вопрос Local animations

Участник
Статус
Оффлайн
Регистрация
19 Апр 2020
Сообщения
1,169
Реакции[?]
313
Поинты[?]
151K
1693496131127.png
при установки бекапных лееров появился такой баг



Код:
void CLocalAnimations::StoreLocalAnims() {
    auto animstate = Cheat.LocalPlayer->GetAnimstate();

    memcpy(local_animlayers, Cheat.LocalPlayer->GetAnimlayers(), sizeof(AnimationLayer) * 13);
    stored_local_anims.poseparams = Cheat.LocalPlayer->m_flPoseParameter();
    local_abs_angles = QAngle(0, animstate->flGoalFeetYaw, 0);
    stored_local_anims.filled = true;
}

void CLocalAnimations::RestoreLocalAnims() {
    if (!stored_local_anims.filled)
        return;

    memcpy(Cheat.LocalPlayer->GetAnimlayers(), local_animlayers, sizeof(AnimationLayer) * 13);
    Cheat.LocalPlayer->m_flPoseParameter() = stored_local_anims.poseparams;
    Cheat.LocalPlayer->SetAbsAngles(local_abs_angles);
}

void CLocalAnimations::OnCreateMove() {
    CCSGOPlayerAnimationState* animstate = Cheat.LocalPlayer->GetAnimstate();

    animstate->SetTickInterval();

    if (AntiAim->desyncing)
        animstate->flGoalFeetYaw = AntiAim->realAngle;

    animstate->iLastUpdateFrame = 0;
    Cheat.LocalPlayer->UpdateAnimationState(animstate, Cheat.thirdpersonAngles, true);

    Cheat.LocalPlayer->UpdateClientSideAnimation();

    if (!ClientState->m_nChokedCommands) {
        Cheat.LocalPlayer->m_flPoseParameter() = stored_local_anims.poseparams;
    }

    if (AntiAim->desyncing)
        animstate->flGoalFeetYaw = AntiAim->realAngle;

    if (ctx.send_packet)
        StoreLocalAnims();
}

void CLocalAnimations::UpdateLocalAnimations() {
    CCSGOPlayerAnimationState* animstate = Cheat.LocalPlayer->GetAnimstate();

    animstate->iLastUpdateFrame = GlobalVars->framecount;

    RestoreLocalAnims();
 
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,970
Реакции[?]
958
Поинты[?]
19K
ну как минимум бекапить анимлееры нужно ДО обновления анимаций
+ зачем ты два раза вызываешь апдейт локальных анимаций
+ почему ты устанавливаешь gfy ДО апдейта анимстейта, после апдейта он 1 хуй пересоберётся
+ если ты делаешь апдейт в км, тебе нужно каждый чокнутый тик обновить и обновлять анимации так-же как и на сервере( аля синхрон с сервером )
 
Участник
Статус
Оффлайн
Регистрация
19 Апр 2020
Сообщения
1,169
Реакции[?]
313
Поинты[?]
151K
1693500146689.png

даже если я вызву
Код:
void CLocalAnimations::OnCreateMove() {
    CCSGOPlayerAnimationState* animstate = Cheat.LocalPlayer->GetAnimstate();

    memcpy(local_animlayers, Cheat.LocalPlayer->GetAnimlayers(), sizeof(AnimationLayer) * 13);

    animstate->SetTickInterval();

    if (AntiAim->desyncing)
        animstate->flGoalFeetYaw = AntiAim->realAngle;

    Cheat.LocalPlayer->UpdateAnimationState(animstate, Cheat.thirdpersonAngles, true);

    Cheat.LocalPlayer->UpdateClientSideAnimation();

    if (AntiAim->desyncing)
        animstate->flGoalFeetYaw = AntiAim->realAngle;

    if (ctx.send_packet)
        StoreLocalAnims();
}
 
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,970
Реакции[?]
958
Поинты[?]
19K
Посмотреть вложение 257674

даже если я вызву
Код:
void CLocalAnimations::OnCreateMove() {
    CCSGOPlayerAnimationState* animstate = Cheat.LocalPlayer->GetAnimstate();

    memcpy(local_animlayers, Cheat.LocalPlayer->GetAnimlayers(), sizeof(AnimationLayer) * 13);

    animstate->SetTickInterval();

    if (AntiAim->desyncing)
        animstate->flGoalFeetYaw = AntiAim->realAngle;

    Cheat.LocalPlayer->UpdateAnimationState(animstate, Cheat.thirdpersonAngles, true);

    Cheat.LocalPlayer->UpdateClientSideAnimation();

    if (AntiAim->desyncing)
        animstate->flGoalFeetYaw = AntiAim->realAngle;

    if (ctx.send_packet)
        StoreLocalAnims();
}
мне кажется или ты десинкаешь на сендпакете?
 
Участник
Статус
Оффлайн
Регистрация
19 Апр 2020
Сообщения
1,169
Реакции[?]
313
Поинты[?]
151K
Код:
#include "LocalAnimationSystem.h"
#include "../AntiAim/AntiAim.h"
#include "Interpolate.h"
#include "AnimationSystem.h"

void CLocalAnimations::StoreLocalAnims() {
    auto animstate = Cheat.LocalPlayer->GetAnimstate();

    memcpy(local_animlayers, Cheat.LocalPlayer->GetAnimlayers(), sizeof(AnimationLayer) * 13);
    stored_local_anims.poseparams = Cheat.LocalPlayer->m_flPoseParameter();
    local_abs_angles = QAngle(0, animstate->flGoalFeetYaw, 0);
    stored_local_anims.filled = true;
}

void CLocalAnimations::RestoreLocalAnims() {
    if (!stored_local_anims.filled)
        return;

    memcpy(Cheat.LocalPlayer->GetAnimlayers(), local_animlayers, sizeof(AnimationLayer) * 13);
    Cheat.LocalPlayer->m_flPoseParameter() = stored_local_anims.poseparams;
    Cheat.LocalPlayer->SetAbsAngles(local_abs_angles);
}

void CLocalAnimations::OnCreateMove() {
    CCSGOPlayerAnimationState* animstate = Cheat.LocalPlayer->GetAnimstate();

    animstate->SetTickInterval();

    if (AntiAim->desyncing)
        animstate->flGoalFeetYaw = AntiAim->realAngle;

    Cheat.LocalPlayer->UpdateAnimationState(animstate, Cheat.thirdpersonAngles, true);

    Cheat.LocalPlayer->UpdateClientSideAnimation();

    if (AntiAim->desyncing)
        animstate->flGoalFeetYaw = AntiAim->realAngle;

    if (ctx.send_packet)
        StoreLocalAnims();
}

void CLocalAnimations::UpdateLocalAnimations() {
    CCSGOPlayerAnimationState* animstate = Cheat.LocalPlayer->GetAnimstate();

    animstate->iLastUpdateFrame = GlobalVars->framecount;

    RestoreLocalAnims();
}

void CLocalAnimations::FrameStageNotify(EClientFrameStage stage) {
    switch (stage)
    {
    case FRAME_NET_UPDATE_POSTDATAUPDATE_END:
        for (int i = 0; i < ClientState->m_nMaxClients; ++i) {
            CBasePlayer* player = reinterpret_cast<CBasePlayer*>(EntityList->GetClientEntity(i));

            if (player && player != Cheat.LocalPlayer)
                Interpolate->DisableInterpolationFlags(player);
        }
        break;
    case FRAME_NET_UPDATE_END:
        break;
    case FRAME_RENDER_START:
        if (Cheat.LocalPlayer && Cheat.LocalPlayer->IsAlive()) {
            UpdateLocalAnimations();
        }
        break;
    default:
        break;
    }
}

CLocalAnimations* LocalAnimations = new CLocalAnimations;
это не может быть проблема десинка так данный баг появился когда я начал анимлееры мемкпаить
 
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,970
Реакции[?]
958
Поинты[?]
19K
это пиздец...................................
Код:
if ( stage == frame_render_start ) {

    static std::array< anim_layer_t, 13u > anim_layers;
    static std::array< float, 24u > pose_paramaters;
    static float last_abs_yaw = 0.f;

    memcpy( anim_layers.data( ), g_ctx->m_local.self( )->get_anim_layers( ).data( ), sizeof( anim_layers ) );

    const bool backup_clientside_animations = g_ctx->m_local.self( )->get_clientside_animations( );

    g_ctx->m_local.self( )->get_clientside_animations( ) = true;
    g_ctx->m_local.self( )->update_clientside_animations( );
    g_ctx->m_local.self( )->get_clientside_animations( ) = backup_clientside_animations;
 
    if ( interfaces::m_client_state->m_choked_packets == 0 ) {
        memcpy( pose_paramaters.data( ), g_ctx->m_local.self( )->get_pose_paramaters( ).data( ), sizeof( pose_paramaters ) );
        last_abs_yaw = animstate->m_abs_yaw;    
    }
    memcpy( g_ctx->m_local.self( )->get_pose_paramaters( ).data( ), pose_paramaters.data( ), sizeof( pose_paramaters ) );
    memcpy( g_ctx->m_local.self( )->get_anim_layers( ).data( ), anim_layers.data( ), sizeof( anim_layers ) );

    g_ctx->m_local.self( )->get_render_origin( ) = g_ctx->m_angles.m_sent;
    g_ctx->m_local.self( )->set_abs_angles( qangle_t( 0.0f, last_abs_yaw, 0.0f ) );
 
    animstate->m_abs_yaw = g_antiaim->get_fake_angle( ).y;
 
    g_bone_manager->setup_bones( g_ctx->m_local.self( ), nullptr, 256u, 0xfff00 );
}
держи, как ты любишь, готовый код, только не забудь куртайм и фреймтайм поставить
 
Участник
Статус
Оффлайн
Регистрация
19 Апр 2020
Сообщения
1,169
Реакции[?]
313
Поинты[?]
151K
это пиздец...................................
Код:
if ( stage == frame_render_start ) {

    static std::array< anim_layer_t, 13u > anim_layers;
    static std::array< float, 24u > pose_paramaters;
    static float last_abs_yaw = 0.f;

    memcpy( anim_layers.data( ), g_ctx->m_local.self( )->get_anim_layers( ).data( ), sizeof( anim_layers ) );

    const bool backup_clientside_animations = g_ctx->m_local.self( )->get_clientside_animations( );

    g_ctx->m_local.self( )->get_clientside_animations( ) = true;
    g_ctx->m_local.self( )->update_clientside_animations( );
    g_ctx->m_local.self( )->get_clientside_animations( ) = backup_clientside_animations;

    if ( interfaces::m_client_state->m_choked_packets == 0 ) {
        memcpy( pose_paramaters.data( ), g_ctx->m_local.self( )->get_pose_paramaters( ).data( ), sizeof( pose_paramaters ) );
        last_abs_yaw = animstate->m_abs_yaw;   
    }
    memcpy( g_ctx->m_local.self( )->get_pose_paramaters( ).data( ), pose_paramaters.data( ), sizeof( pose_paramaters ) );
    memcpy( g_ctx->m_local.self( )->get_anim_layers( ).data( ), anim_layers.data( ), sizeof( anim_layers ) );

    g_ctx->m_local.self( )->get_render_origin( ) = g_ctx->m_angles.m_sent;
    g_ctx->m_local.self( )->set_abs_angles( qangle_t( 0.0f, last_abs_yaw, 0.0f ) );

    animstate->m_abs_yaw = g_antiaim->get_fake_angle( ).y;

    g_bone_manager->setup_bones( g_ctx->m_local.self( ), nullptr, 256u, 0xfff00 );
}
держи, как ты любишь, готовый код, только не забудь куртайм и фреймтайм поставить
смысл мне от твоего готового кода, если я хочу разобраться со своим
 
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,970
Реакции[?]
958
Поинты[?]
19K
смысл мне от твоего готового кода, если я хочу разобраться со своим
ты даже с 3-го раза не понял что ты сука два раза одно и тоже делаешь, это во первых
во вторых, ты продолжаешь делать хуйню, я написал что тебе нужно копить леера до апдейта анимаций, а ты продолдаешь их копить после, так ещё и проверку на сендпакет добавил, так ты ещё и ресторишь во фреймстейдже, хотя "обновляешь" в крейтмуве, хотя эти два хука по разному вызываются
 
Участник
Статус
Оффлайн
Регистрация
19 Апр 2020
Сообщения
1,169
Реакции[?]
313
Поинты[?]
151K
ты даже с 3-го раза не понял что ты сука два раза одно и тоже делаешь, это во первых
во вторых, ты продолжаешь делать хуйню, я написал что тебе нужно копить леера до апдейта анимаций, а ты продолдаешь их копить после, так ещё и проверку на сендпакет добавил, так ты ещё и ресторишь во фреймстейдже, хотя "обновляешь" в крейтмуве, хотя эти два хука по разному вызываются
ласт апдейт фрейм убран чек просто я тебе кидал потому что думал что он мешает при апдейте, анимлеер ( я кидал выше ) я тебе показывал что бекаплю до апдейта
 
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,970
Реакции[?]
958
Поинты[?]
19K
ласт апдейт фрейм убран чек просто я тебе кидал потому что думал что он мешает при апдейте, анимлеер ( я кидал выше ) я тебе показывал что бекаплю до апдейта
1693517780117.png

1693517795041.png
1693517796669.png
ладно
 
Забаненный
Статус
Оффлайн
Регистрация
15 Авг 2023
Сообщения
48
Реакции[?]
20
Поинты[?]
19K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ну как минимум бекапить анимлееры нужно ДО обновления анимаций
+ почему ты устанавливаешь gfy ДО апдейта анимстейта, после апдейта он 1 хуй пересоберётся
ты че, дурной?) я думаю, тебе не стоит больше тут отвечать)
 
Участник
Статус
Оффлайн
Регистрация
19 Апр 2020
Сообщения
1,169
Реакции[?]
313
Поинты[?]
151K
Участник
Статус
Оффлайн
Регистрация
19 Апр 2020
Сообщения
1,169
Реакции[?]
313
Поинты[?]
151K
ты понимаешь если я вызову бекап до апдейта анимстейта то ничего не меняется

Код:
#include "LocalAnimationSystem.h"
#include "../AntiAim/AntiAim.h"
#include "Interpolate.h"
#include "AnimationSystem.h"

void CLocalAnimations::StoreLocalAnims() {
    auto animstate = Cheat.LocalPlayer->GetAnimstate();

    stored_local_anims.bOnGround = animstate->bOnGround;
    stored_local_anims.flAffectedFraction = animstate->flAffectedFraction;
    stored_local_anims.flDurationInAir = animstate->flDurationInAir;
    stored_local_anims.flEyePitch = animstate->flEyePitch;
    stored_local_anims.flEyeYaw = animstate->flEyeYaw;
    stored_local_anims.flGoalFeetYaw = animstate->flGoalFeetYaw;
    stored_local_anims.flJumpFallVelocity = animstate->flJumpFallVelocity;
    stored_local_anims.flLeanAmount = animstate->flLeanAmount;
    stored_local_anims.flMoveYaw = animstate->flMoveYaw;
    stored_local_anims.poseparams = Cheat.LocalPlayer->m_flPoseParameter();
    local_abs_angles = QAngle(0, animstate->flGoalFeetYaw, 0);
    stored_local_anims.filled = true;
}

void CLocalAnimations::RestoreLocalAnims() {
    if (!stored_local_anims.filled)
        return;

    auto animstate = Cheat.LocalPlayer->GetAnimstate();

    animstate->bOnGround = stored_local_anims.bOnGround;
    animstate->flAffectedFraction = stored_local_anims.flAffectedFraction;
    animstate->flDurationInAir = stored_local_anims.flDurationInAir;
    animstate->flEyePitch = stored_local_anims.flEyePitch;
    animstate->flEyeYaw = stored_local_anims.flEyeYaw;
    animstate->flGoalFeetYaw = stored_local_anims.flGoalFeetYaw;
    animstate->flJumpFallVelocity = stored_local_anims.flJumpFallVelocity;
    animstate->flLeanAmount = stored_local_anims.flLeanAmount;
    animstate->flMoveYaw = stored_local_anims.flMoveYaw;
    Cheat.LocalPlayer->m_flPoseParameter() = stored_local_anims.poseparams;
    Cheat.LocalPlayer->SetAbsAngles(local_abs_angles);
}

void CLocalAnimations::OnCreateMove() {

    CCSGOPlayerAnimationState* animstate = Cheat.LocalPlayer->GetAnimstate();

    if (AntiAim->desyncing)
        animstate->flGoalFeetYaw = AntiAim->realAngle;

    memcpy(local_animlayers, Cheat.LocalPlayer->GetAnimlayers(), sizeof(AnimationLayer) * 13);

    Cheat.LocalPlayer->UpdateAnimationState(animstate, Cheat.thirdpersonAngles, true);
    Cheat.LocalPlayer->UpdateClientSideAnimation();

    if (ctx.send_packet) {
        StoreLocalAnims();
    }

    memcpy(Cheat.LocalPlayer->GetAnimlayers(), local_animlayers, sizeof(AnimationLayer) * 13);
}

void CLocalAnimations::UpdateLocalAnimations() {

    CCSGOPlayerAnimationState* animstate = Cheat.LocalPlayer->GetAnimstate();

    animstate->iLastUpdateFrame = GlobalVars->framecount;

    RestoreLocalAnims();
}

void CLocalAnimations::FrameStageNotify(EClientFrameStage stage) {
    switch (stage)
    {
    case FRAME_NET_UPDATE_POSTDATAUPDATE_END:
        for (int i = 0; i < ClientState->m_nMaxClients; ++i) {
            CBasePlayer* player = reinterpret_cast<CBasePlayer*>(EntityList->GetClientEntity(i));

            if (player && player != Cheat.LocalPlayer)
                Interpolate->DisableInterpolationFlags(player);
        }
        break;
    case FRAME_NET_UPDATE_END:
        break;
    case FRAME_RENDER_START:
        if (Cheat.LocalPlayer && Cheat.LocalPlayer->IsAlive()) {
            UpdateLocalAnimations();
        }
        break;
    default:
        break;
    }
}

CLocalAnimations* LocalAnimations = new CLocalAnimations;
1693548891256.png

даже если я все сделаю как говоришь ты все ровнопроблема не пропадает
Код:
#include "LocalAnimationSystem.h"
#include "../AntiAim/AntiAim.h"
#include "Interpolate.h"
#include "AnimationSystem.h"

void CLocalAnimations::StoreLocalAnims() {
    auto animstate = Cheat.LocalPlayer->GetAnimstate();

    //stored_local_anims.bOnGround = animstate->bOnGround;
    //stored_local_anims.flAffectedFraction = animstate->flAffectedFraction;
    //stored_local_anims.flDurationInAir = animstate->flDurationInAir;
    //stored_local_anims.flEyePitch = animstate->flEyePitch;
    //stored_local_anims.flEyeYaw = animstate->flEyeYaw;
    //stored_local_anims.flGoalFeetYaw = animstate->flGoalFeetYaw;
    //stored_local_anims.flJumpFallVelocity = animstate->flJumpFallVelocity;
    //stored_local_anims.flLeanAmount = animstate->flLeanAmount;
    //stored_local_anims.flMoveYaw = animstate->flMoveYaw;
    memcpy(pose_parameter, &Cheat.LocalPlayer->m_flPoseParameter(), 24 * sizeof(float));
    local_abs_angles = QAngle(0, animstate->flGoalFeetYaw, 0);
    stored_local_anims.filled = true;
}

void CLocalAnimations::RestoreLocalAnims() {
    if (!stored_local_anims.filled)
        return;

    auto animstate = Cheat.LocalPlayer->GetAnimstate();

    //animstate->bOnGround = stored_local_anims.bOnGround;
    //animstate->flAffectedFraction = stored_local_anims.flAffectedFraction;
    //animstate->flDurationInAir = stored_local_anims.flDurationInAir;
    //animstate->flEyePitch = stored_local_anims.flEyePitch;
    //animstate->flEyeYaw = stored_local_anims.flEyeYaw;
    //animstate->flGoalFeetYaw = stored_local_anims.flGoalFeetYaw;
    //animstate->flJumpFallVelocity = stored_local_anims.flJumpFallVelocity;
    //animstate->flLeanAmount = stored_local_anims.flLeanAmount;
    //animstate->flMoveYaw = stored_local_anims.flMoveYaw;
    Cheat.LocalPlayer->SetAbsAngles(local_abs_angles);
    memcpy(Cheat.LocalPlayer->GetAnimlayers(), local_animlayers, sizeof(AnimationLayer) * 13);
    memcpy(&Cheat.LocalPlayer->m_flPoseParameter(), pose_parameter, 24 * sizeof(float));
}

void CLocalAnimations::OnCreateMove() {

    CCSGOPlayerAnimationState* animstate = Cheat.LocalPlayer->GetAnimstate();

    if (AntiAim->desyncing)
        animstate->flGoalFeetYaw = AntiAim->realAngle;

    memcpy(local_animlayers, Cheat.LocalPlayer->GetAnimlayers(), sizeof(AnimationLayer) * 13);

    Cheat.LocalPlayer->UpdateAnimationState(animstate, Cheat.thirdpersonAngles, true);
    Cheat.LocalPlayer->UpdateClientSideAnimation();

    if (ctx.send_packet) {
        StoreLocalAnims();
    }
}

void CLocalAnimations::UpdateLocalAnimations() {

    CCSGOPlayerAnimationState* animstate = Cheat.LocalPlayer->GetAnimstate();

    animstate->iLastUpdateFrame = GlobalVars->framecount;

    RestoreLocalAnims();
}

void CLocalAnimations::FrameStageNotify(EClientFrameStage stage) {
    switch (stage)
    {
    case FRAME_NET_UPDATE_POSTDATAUPDATE_END:
        for (int i = 0; i < ClientState->m_nMaxClients; ++i) {
            CBasePlayer* player = reinterpret_cast<CBasePlayer*>(EntityList->GetClientEntity(i));

            if (player && player != Cheat.LocalPlayer)
                Interpolate->DisableInterpolationFlags(player);
        }
        break;
    case FRAME_NET_UPDATE_END:
        break;
    case FRAME_RENDER_START:
        if (Cheat.LocalPlayer && Cheat.LocalPlayer->IsAlive()) {
            UpdateLocalAnimations();
        }
        break;
    default:
        break;
    }
}

CLocalAnimations* LocalAnimations = new CLocalAnimations;
 
Последнее редактирование:
Участник
Статус
Оффлайн
Регистрация
19 Апр 2020
Сообщения
1,169
Реакции[?]
313
Поинты[?]
151K
get good get legendware
Участник
Статус
Оффлайн
Регистрация
22 Сен 2020
Сообщения
435
Реакции[?]
200
Поинты[?]
47K
meaning to me from your fucking ready-made code if I want to understand my problem
your problem is that you're not setuping bones thus you need to fix a shit tone of stuff

here it is how it goes
store data
set data
update animations
setup bones
copy cached matrix from setupbones
= perfect animfix
also next time try to be a little respectful towards the people that try to help you :)
 
Участник
Статус
Оффлайн
Регистрация
19 Апр 2020
Сообщения
1,169
Реакции[?]
313
Поинты[?]
151K
your problem is that you're not setuping bones thus you need to fix a shit tone of stuff

here it is how it goes
store data
set data
update animations
setup bones
copy cached matrix from setupbones
= perfect animfix
also next time try to be a little respectful towards the people that try to help you :)
pasted from oversee
бля чел, не лезь сюда со своим ебаным готовым кодом, я хочу понять почему у меня даная проблема
 
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,970
Реакции[?]
958
Поинты[?]
19K
Сверху Снизу