C++ Resolve methods

Пользователь
Статус
Оффлайн
Регистрация
15 Июл 2021
Сообщения
233
Реакции[?]
85
Поинты[?]
0
1. Tracing
Мы можем использовать этот метод, потому что при трейсинге используется реальное расстояние в игре.
C++:
            CGameTrace trace;
            CTraceFilter filter;
            filter.pSkip = g_ctx.local();

            float LeftSide = animstate->m_flEyeYaw - 60.0f;
            float RightSide = animstate->m_flEyeYaw + 60.0f;

            Vector m_vecDirectionLeft, m_vecDirectionRight;
            Vector m_vecDesyncLeft(0.0f, LeftSide, 0.0f);
            Vector m_vecDesyncRight(0.0f, RightSide, 0.0f);

            math::angle_vectors(m_vecDesyncLeft, m_vecDirectionLeft);
            math::angle_vectors(m_vecDesyncRight, m_vecDirectionRight);

            const auto m_vecSrc = g_ctx.local()->get_shoot_position();
            const auto m_vecLeftSrc = m_vecSrc + (m_vecDesyncLeft * 8192.f);
            const auto m_vecRightSrc = m_vecSrc + (m_vecDesyncRight * 8192.f);

            m_trace()->TraceRay(Ray_t(m_vecSrc, m_vecLeftSrc), MASK_ALL, (ITraceFilter*)&filter, &trace);
            float m_flLeftFraction = trace.fraction;

            m_trace()->TraceRay(Ray_t(m_vecSrc, m_vecRightSrc), MASK_ALL, (ITraceFilter*)&filter, &trace);
            float m_flRightFraction = trace.fraction;

            if (m_flLeftFraction > m_flRightFraction)
                animstate->m_flGoalFeetYaw = RightSide;
            else
                animstate->m_flGoalFeetYaw = LeftSide;

2. Animlayers
Сделать ресольвер этим методом правильно будет очень сложно. Мы буквально должны зашпиндолить леер на эту матрицу, иначе у вас ниче не получится
3 - Stand
6 - Move
12 - Animation layer lean
14 and 15 - Not used


Пример:
C++:
        if ( record->m_pEntity->m_vecVelocity ( ).length_2d ( ) <= 0.1)
        {
            float difference = AngleDiff ( eyeYaw, record->animstate->m_flFootYaw );
            desyncSide = 2 * difference <= 0.0f ? 1 : -1;
        }
        else
        {
            if ( previousrecord && !( ( int ) record->animationLayers [ ANIMATION_LAYER_LEAN ].weight * 1000.f ) && ( ( int ) record->animationLayers [ ANIMATION_LAYER_MOVEMENT_MOVE ].weight * 1000.f ) == ( ( int ) previousrecord->animationLayers [ ANIMATION_LAYER_MOVEMENT_MOVE ].weight * 1000.f ) )
            {
                auto processedAnimationSpeed = abs ( record->animationLayers [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate - record->processedLayer [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate );
                auto positiveAnimationSpeed = abs ( record->animationLayers [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate - record->lerpedLayerPositive [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate );
                auto negativeAnimationSpeed = abs ( record->animationLayers [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate - record->lerpedLayerNegative [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate );

                if ( processedAnimationSpeed < positiveAnimationSpeed || negativeAnimationSpeed <= positiveAnimationSpeed || ( signed int ) ( float ) ( positiveAnimationSpeed * 1000.0 ) )
                {
                    if ( processedAnimationSpeed >= negativeAnimationSpeed && positiveAnimationSpeed > negativeAnimationSpeed && !( signed int ) ( float ) ( negativeAnimationSpeed * 1000.0 ) )
                    {
                        desyncSide = 1;
                    }
                }
                else
                {
                    desyncSide = -1;
                }
            }
        }
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
15 Апр 2021
Сообщения
224
Реакции[?]
64
Поинты[?]
0
1. Tracing
Мы можем использовать этот метод, потому что при трейсинге используется реальное расстояние в игре.
C++:
            CGameTrace trace;
            CTraceFilter filter;
            filter.pSkip = g_ctx.local();

            float LeftSide = animstate->m_flEyeYaw - 60.0f;
            float RightSide = animstate->m_flEyeYaw + 60.0f;

            Vector m_vecDirectionLeft, m_vecDirectionRight;
            Vector m_vecDesyncLeft(0.0f, LeftSide, 0.0f);
            Vector m_vecDesyncRight(0.0f, RightSide, 0.0f);

            math::angle_vectors(m_vecDesyncLeft, m_vecDirectionLeft);
            math::angle_vectors(m_vecDesyncRight, m_vecDirectionRight);

            const auto m_vecSrc = g_ctx.local()->get_shoot_position();
            const auto m_vecLeftSrc = m_vecSrc + (m_vecDesyncLeft * 8192.f);
            const auto m_vecRightSrc = m_vecSrc + (m_vecDesyncRight * 8192.f);

            m_trace()->TraceRay(Ray_t(m_vecSrc, m_vecLeftSrc), MASK_ALL, (ITraceFilter*)&filter, &trace);
            float m_flLeftFraction = trace.fraction;

            m_trace()->TraceRay(Ray_t(m_vecSrc, m_vecRightSrc), MASK_ALL, (ITraceFilter*)&filter, &trace);
            float m_flRightFraction = trace.fraction;

            if (m_flLeftFraction > m_flRightFraction)
                animstate->m_flGoalFeetYaw = RightSide;
            else
                animstate->m_flGoalFeetYaw = LeftSide;

2. Animlayers
Сделать ресольвер этим методом правильно будет очень сложно. Мы буквально должны зашпиндолить леер на эту матрицу, иначе у вас ниче не получится
3 - Stand
6 - Move
12 - Animation layer lean
14 and 15 - Not used


Пример:
C++:
        if ( record->m_pEntity->m_vecVelocity ( ).length_2d ( ) <= 0.1)
        {
            float difference = AngleDiff ( eyeYaw, record->animstate->m_flFootYaw );
            desyncSide = 2 * difference <= 0.0f ? 1 : -1;
        }
        else
        {
            if ( previousrecord && !( ( int ) record->animationLayers [ ANIMATION_LAYER_LEAN ].weight * 1000.f ) && ( ( int ) record->animationLayers [ ANIMATION_LAYER_MOVEMENT_MOVE ].weight * 1000.f ) == ( ( int ) previousrecord->animationLayers [ ANIMATION_LAYER_MOVEMENT_MOVE ].weight * 1000.f ) )
            {
                auto processedAnimationSpeed = abs ( record->animationLayers [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate - record->processedLayer [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate );
                auto positiveAnimationSpeed = abs ( record->animationLayers [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate - record->lerpedLayerPositive [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate );
                auto negativeAnimationSpeed = abs ( record->animationLayers [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate - record->lerpedLayerNegative [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate );

                if ( processedAnimationSpeed < positiveAnimationSpeed || negativeAnimationSpeed <= positiveAnimationSpeed || ( signed int ) ( float ) ( positiveAnimationSpeed * 1000.0 ) )
                {
                    if ( processedAnimationSpeed >= negativeAnimationSpeed && positiveAnimationSpeed > negativeAnimationSpeed && !( signed int ) ( float ) ( negativeAnimationSpeed * 1000.0 ) )
                    {
                        desyncSide = 1;
                    }
                }
                else
                {
                    desyncSide = -1;
                }
            }
        }
так это же репост не
 
Пользователь
Статус
Оффлайн
Регистрация
14 Янв 2018
Сообщения
387
Реакции[?]
91
Поинты[?]
0
Остальные методы фикса идут нахуй, так же как и любимый филиппу брутфорс силой мысли
 
Начинающий
Статус
Оффлайн
Регистрация
9 Ноя 2020
Сообщения
153
Реакции[?]
7
Поинты[?]
0
1. Tracing
Мы можем использовать этот метод, потому что при трейсинге используется реальное расстояние в игре.
C++:
            CGameTrace trace;
            CTraceFilter filter;
            filter.pSkip = g_ctx.local();

            float LeftSide = animstate->m_flEyeYaw - 60.0f;
            float RightSide = animstate->m_flEyeYaw + 60.0f;

            Vector m_vecDirectionLeft, m_vecDirectionRight;
            Vector m_vecDesyncLeft(0.0f, LeftSide, 0.0f);
            Vector m_vecDesyncRight(0.0f, RightSide, 0.0f);

            math::angle_vectors(m_vecDesyncLeft, m_vecDirectionLeft);
            math::angle_vectors(m_vecDesyncRight, m_vecDirectionRight);

            const auto m_vecSrc = g_ctx.local()->get_shoot_position();
            const auto m_vecLeftSrc = m_vecSrc + (m_vecDesyncLeft * 8192.f);
            const auto m_vecRightSrc = m_vecSrc + (m_vecDesyncRight * 8192.f);

            m_trace()->TraceRay(Ray_t(m_vecSrc, m_vecLeftSrc), MASK_ALL, (ITraceFilter*)&filter, &trace);
            float m_flLeftFraction = trace.fraction;

            m_trace()->TraceRay(Ray_t(m_vecSrc, m_vecRightSrc), MASK_ALL, (ITraceFilter*)&filter, &trace);
            float m_flRightFraction = trace.fraction;

            if (m_flLeftFraction > m_flRightFraction)
                animstate->m_flGoalFeetYaw = RightSide;
            else
                animstate->m_flGoalFeetYaw = LeftSide;

2. Animlayers
Сделать ресольвер этим методом правильно будет очень сложно. Мы буквально должны зашпиндолить леер на эту матрицу, иначе у вас ниче не получится
3 - Stand
6 - Move
12 - Animation layer lean
14 and 15 - Not used


Пример:
C++:
        if ( record->m_pEntity->m_vecVelocity ( ).length_2d ( ) <= 0.1)
        {
            float difference = AngleDiff ( eyeYaw, record->animstate->m_flFootYaw );
            desyncSide = 2 * difference <= 0.0f ? 1 : -1;
        }
        else
        {
            if ( previousrecord && !( ( int ) record->animationLayers [ ANIMATION_LAYER_LEAN ].weight * 1000.f ) && ( ( int ) record->animationLayers [ ANIMATION_LAYER_MOVEMENT_MOVE ].weight * 1000.f ) == ( ( int ) previousrecord->animationLayers [ ANIMATION_LAYER_MOVEMENT_MOVE ].weight * 1000.f ) )
            {
                auto processedAnimationSpeed = abs ( record->animationLayers [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate - record->processedLayer [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate );
                auto positiveAnimationSpeed = abs ( record->animationLayers [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate - record->lerpedLayerPositive [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate );
                auto negativeAnimationSpeed = abs ( record->animationLayers [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate - record->lerpedLayerNegative [ ANIMATION_LAYER_MOVEMENT_MOVE ].fPlaybackRate );

                if ( processedAnimationSpeed < positiveAnimationSpeed || negativeAnimationSpeed <= positiveAnimationSpeed || ( signed int ) ( float ) ( positiveAnimationSpeed * 1000.0 ) )
                {
                    if ( processedAnimationSpeed >= negativeAnimationSpeed && positiveAnimationSpeed > negativeAnimationSpeed && !( signed int ) ( float ) ( negativeAnimationSpeed * 1000.0 ) )
                    {
                        desyncSide = 1;
                    }
                }
                else
                {
                    desyncSide = -1;
                }
            }
        }
тоесть поиск угла используя animstate точно не нужен
 
Начинающий
Статус
Оффлайн
Регистрация
2 Апр 2021
Сообщения
21
Реакции[?]
3
Поинты[?]
2K
"Мы можем использовать этот метод, потому что при трейсинге используется реальное расстояние в игре."
- hhhh, norm chel oby`snil
"Сделать ресольвер этим методом правильно будет очень сложно. Мы буквально должны зашпиндолить леер на эту матрицу, иначе у вас ниче не получится"
- build 3 side matrix and coppy animlayers real hard 0.o
 
Забаненный
Статус
Оффлайн
Регистрация
29 Дек 2021
Сообщения
18
Реакции[?]
5
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
"Мы можем использовать этот метод, потому что при трейсинге используется реальное расстояние в игре."
- hhhh, norm chel oby`snil
"Сделать ресольвер этим методом правильно будет очень сложно. Мы буквально должны зашпиндолить леер на эту матрицу, иначе у вас ниче не получится"
- build 3 side matrix and coppy animlayers real hard 0.o
Okay, build side matrix xdd again cringe
u need copy animation layers and set left goal feet yaw, zero goal feet yaw, right goal feet yaw and just swap
 
Сверху Снизу