Вопрос Проблемы с локал анимками

B.O.M.J
Эксперт
Статус
Оффлайн
Регистрация
19 Май 2017
Сообщения
2,403
Реакции[?]
897
Поинты[?]
3K
Каждую секунду ебет модель.
Я подумал что мой локал анимфикс хуевый(недопастер че с меня взять)
И тупо спастил с какого-то лв где он нормально работал, но все также, потом вообще взял с энрейджа и все тоже самое раз в тик оно модельку ебет
сейчас вот шо у меня

C++:
void C_Animations::update_local_animations(c_usercmd* cmd)
    {
        if (!g_local || i::clientstate->m_delta_tick < 0)
            return;

        static auto smoothstep_bounds = [](float edge0, float edge1, float x) -> float
        {
            x = math::clamp((x - edge0) / (edge1 - edge0), 0, 1);
            return x * x * (3 - 2 * x);
        };

        static bool lock_viewangles = false;
        static float m_flDurationInAir = 0;
        static vec3_t target_angle = cmd->viewangles;
        static vec3_t non_shot_target_angle = cmd->viewangles;

        if (g::rage_data::m_ragebot_shot_nr == cmd->command_number)
        {
            lock_viewangles = true;
            target_angle = cmd->viewangles;
        }

        if (!lock_viewangles)
            target_angle = cmd->viewangles;

        auto animstate = g_local->get_animstate();


        if (!animstate || !g_local->is_alive() || g_local->is_dormant()) {
            spawntime_local = 0;
            return;
        }

        g_local->m_flThirdpersonRecoil() = g_local->m_aimPunchAngleScaled().x;

        const auto current_flags = g_local->m_fFlags();

        animlayer_t old_anim_layers[14];
        memcpy(old_anim_layers, g_local->get_animoverlays(), 0x38 * g_local->animlayers_count());

        if (g_local->m_flSpawnTime() != spawntime_local || animstate->m_player != g_local)
        {
            //reset animstate.
            g_local->update_clientside_animation();

            //collect fake state
            //memset is done to make sure activity_modifiers wont mess anything up. credits @esoterik XD
            g::local_data::fake_state = *g_local->get_animstate();
            memset(&g::local_data::fake_state.m_activity_modifiers_server[0], 0, /*sizeof(char) * */20);

            //fix shit
            memcpy(g_local->get_animoverlays(), old_anim_layers, 0x38 * g_local->animlayers_count());

            //ctx.last_time_layers_fixed = 0;


            spawntime_local = g_local->m_flSpawnTime();
        }

        const auto old_absvel = g_local->m_vecAbsVelocity();
        const auto old_render_angles = g_local->tp_angles();
        const auto old_pose_params = g_local->m_flPoseParameter();

        g_local->tp_angles() = target_angle;

       

        animstate->m_move_weight = 0;

        g_local->update_clientside_animation();

        g_local->force_bone_rebuild();
        g_local->setup_bones_ex();

        g_local->get_animstate()->m_primary_cycle = old_anim_layers[6].m_cycle;
        g_local->get_animstate()->m_move_weight = old_anim_layers[6].m_weight;
        g_local->get_animstate()->m_strafe_change_cycle = old_anim_layers[7].m_cycle;
        g_local->get_animstate()->m_strafe_sequence = old_anim_layers[7].m_sequence;
        g_local->get_animstate()->m_strafe_change_weight = old_anim_layers[7].m_weight;
        g_local->get_animstate()->m_acceleration_weight = old_anim_layers[12].m_weight;

        if (g::send_packet == false) {

            memcpy(g_local->get_animoverlays(), old_anim_layers, 0x38 * g_local->animlayers_count());
            return;
        }

        if (!lock_viewangles)
            non_shot_target_angle = cmd->viewangles;


        //save off real data.
        g::local_data::poses[angle_real] = g_local->m_flPoseParameter();
        g::local_data::angles[angle_real] = g_local->get_animstate()->m_abs_yaw;
        g::local_data::abs_origin[angle_real] = g_local->get_abs_origin();
        memcpy(g::local_data::local_layers[angle_real], g_local->get_animoverlays(), 0x38 * g_local->animlayers_count());

        //restore animation backup
        g_local->m_flPoseParameter() = old_pose_params;
        memcpy(g_local->get_animoverlays(), old_anim_layers, 0x38 * g_local->animlayers_count());

        g_local->tp_angles() = target_angle;

        const auto backup_state = *g_local->get_animstate();
        g::local_data::fake_state.m_landing = false;
        g::local_data::fake_state.m_last_update_frame = 0;
        *g_local->get_animstate() = g::local_data::fake_state;
        //g::local_data::is_updating_fake = true;
        g_local->update_clientside_animation();
        //g::local_data::is_updating_fake = false;
        g::local_data::fake_state = *g_local->get_animstate();
        *g_local->get_animstate() = backup_state;

        //save off fake data.
        g::local_data::poses[angle_fake] = g_local->m_flPoseParameter();
        g::local_data::angles[angle_fake] = g::local_data::fake_state.m_abs_yaw;
        g::local_data::abs_origin[angle_fake] = g_local->get_abs_origin();
        memcpy(g::local_data::local_layers[angle_fake], g_local->get_animoverlays(), 0x38 * g_local->animlayers_count());

        g::local_data::local_layers[angle_fake][12].m_weight = 0;
        g::local_data::local_layers[angle_fake][3].m_weight = 0;

        g_local->force_bone_rebuild();
        memcpy(g_local->get_animoverlays(), g::local_data::local_layers[angle_fake], 0x38 * g_local->animlayers_count());

        g_local->setup_bones_ex();
        memcpy(g::local_data::fake_matrix, g_local->m_BoneCache().Base(), mininmum(128, g_local->bone_count()) * sizeof(matrix_t));

        //restore animation backup
        g_local->m_flPoseParameter() = old_pose_params;

        memcpy(g_local->get_animoverlays(), old_anim_layers, 0x38 * g_local->animlayers_count());
        //fix_anim_layers(animstate);

        g_local->m_vecAbsVelocity() = old_absvel;
        g_local->tp_angles() = old_render_angles;
        g_local->m_iEFlags() &= ~efl_dirty_absangvelocity;


        lock_viewangles = false;

    }
 
кто читает тот умрет
Участник
Статус
Оффлайн
Регистрация
29 Июл 2019
Сообщения
686
Реакции[?]
531
Поинты[?]
144K
Думаю ты сам понимаешь что этот анимфикс кринж полный, но даже с ним не должно быть таких проебов с анимациями, тем более ты говоришь что такое не только с этим "анимфиксом", ну судя по видео скорее всего трабл может быть в том что у тебя не правильно ставиться ориджин и визуал ангел, либо проеб в хуке апдейт анимейшинс, на крайний случай проверь билдинг локал матрицы :innocent:
 
Сверху Снизу