Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Вопрос Accumulate pose lw

  • Автор темы Автор темы SDdisk
  • Дата начала Дата начала
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Можно подробнее? Желательно прикрепите скриншот с проблемой и будем уже пытаться Вам помочь.
 
Это то про что я писал раньше, для фикса тебе достаточно зайти в файл structs.cpp, там нужно найти эту строчку
C++:
Expand Collapse Copy
bool player_t::setup_bones_fixed(matrix3x4_t* matrix, int mask)
далее заменяешь всю эту функцию на эту.
Но это костыльный фикс, он использовался в оригинальном легендваре, который продавался.
C++:
Expand Collapse Copy
bool player_t::setup_bones_fixed(matrix3x4_t* matrix, int mask)
{
    if (!this) //-V704
        return false;

    auto setuped = false;

    auto backup_value = *(uint8_t*)((uintptr_t)this + 0x274);
    *(uint8_t*)((uintptr_t)this + 0x274) = 0;

    auto backup_effects = m_fEffects();
    m_fEffects() |= 8;

    auto animstate = get_animation_state();
    auto previous_weapon = animstate ? animstate->m_pLastBoneSetupWeapon : nullptr;

    if (previous_weapon)
        animstate->m_pLastBoneSetupWeapon = animstate->m_pActiveWeapon;

    auto backup_abs_origin = GetAbsOrigin();

    if (this != g_ctx.local())
        set_abs_origin(m_vecOrigin());

    g_ctx.globals.setuping_bones = true;
    invalidate_bone_cache();

#if RELEASE
    if (mask == BONE_USED_BY_ANYTHING)
        SetupBones(matrix, MAXSTUDIOBONES, mask, m_flSimulationTime());
    else
    {   
        CSetupBones setup_bones;

        setup_bones.m_animating = this;
        setup_bones.m_vecOrigin = m_vecOrigin();
        setup_bones.m_animLayers = get_animlayers();
        setup_bones.m_pHdr = m_pStudioHdr();
        setup_bones.m_nAnimOverlayCount = animlayer_count();
        setup_bones.m_angAngles = Vector(0.0f, animstate ? animstate->m_flGoalFeetYaw : 0.0f, 0.0f);
        setup_bones.m_boneMatrix = matrix;

        memcpy(setup_bones.m_flPoseParameters, &m_flPoseParameter(), 24 * sizeof(float));

        auto weapon = m_hActiveWeapon().Get();
        auto world_model = weapon ? weapon->m_hWeaponWorldModel().Get() : nullptr;

        if (world_model)
            memcpy(setup_bones.m_flWorldPoses, &world_model->m_flPoseParameter(), 24 * sizeof(float));

        setup_bones.m_boneMask = mask;

        Vector position[MAXSTUDIOBONES];
        Quaternion q[MAXSTUDIOBONES];

        setup_bones.m_vecBones = position;
        setup_bones.m_quatBones = q;
        setup_bones.m_flCurtime = m_flSimulationTime();

        setup_bones.setup();

        if (m_CachedBoneData().Base() != m_BoneAccessor().m_pBones)
            memcpy(m_BoneAccessor().m_pBones, setup_bones.m_boneMatrix, m_CachedBoneData().Count() * sizeof(matrix3x4_t));

        setup_bones.fix_bones_rotations();
    }
#else
    SetupBones(matrix, matrix ? MAXSTUDIOBONES : -1, mask, m_flSimulationTime());
#endif

    g_ctx.globals.setuping_bones = false;

    if (this != g_ctx.local())
        set_abs_origin(backup_abs_origin);

    if (previous_weapon)
        animstate->m_pLastBoneSetupWeapon = previous_weapon;

    m_fEffects() = backup_effects;
    *(uint8_t*)((uintptr_t)this + 0x274) = backup_value;

    return setuped;
}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Назад
Сверху Снизу