Вопрос Расскажи про всё в ресольвере

Начинающий
Статус
Оффлайн
Регистрация
25 Окт 2022
Сообщения
35
Реакции[?]
6
Поинты[?]
0
Да я сам ничего не понял кто прав кто нет вроде первые сообщения были правдой, а потом балаган начался
 
Забаненный
Статус
Оффлайн
Регистрация
20 Ноя 2022
Сообщения
12
Реакции[?]
2
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Короче очень хочу сделать ресольвер
Чекал этот сайт для начала
Пожалуйста, авторизуйтесь для просмотра ссылки.

Но там ничего не поеятно лично для меня откуда 65 при указании переменных, зачем нам дельта между feetyaw и eye какой смысл если вроде ноги и голова в одну сторону смотрит ?
обратимся к многоуважаемому ламме, получим этот прекрасный ресольвер на леерах:
C++:
float delta = CalculateDelta(...);
if (record->flags & FL_ONGROUND && previous_record->flags & FL_ONGROUND && !record->shot && !fakeplayer) {
    // lenght2d
    auto speed = (record->velocity.x * record->velocity.x) + (record->velocity.y * record->velocity.y);
    if (speed <= 0.1f) {
        // https://prnt.sc/amTkN5gnLMAF
        if ( record->layers[3].weight == 0.0 && record->layer[3].cycle == 0.0 /*&& record->layers[6].weight == 0.0*/) {
          record->m_side = 2 * ((AngleDiff(animstate->goal_feet_yaw, player->EyeAngles().y)) <= 0.0) - 1;
        }
    }
    else if (/*!(record->layers[12].weight * 1000.f) &&*/ record->layers[6].weight * 1000.f == previous_record->layers[6].weight * 1000.f) {
        float(m_pDeltaCenter) = std::abs(record->layers[6].playback_rate - record->anim_layers[0][6].playback_rate); // gfy + 0
        float(m_pDeltaRight) = std::abs(record->layers[6].playback_rate - record->anim_layers[2][6].playback_rate); // gfy + 60
        float(m_pDeltaLeft) = std::abs(record->layers[6].playback_rate - record->anim_layers[1][6].playback_rate); // gfy - 60
        if (m_pDeltaCenter < m_pDeltaRight || m_pDeltaLeft <= m_pDeltaRight || (m_pDeltaRight * 1000.f)) {
          if (m_pDeltaCenter >= m_pDeltaLeft && m_pDeltaRight > m_pDeltaLeft && !(m_pDeltaLeft * 1000.f)) {
            record->m_side = 1;
          }
        }
        else {
          record->m_side = -1;
        }
    }
}
чтоб ресольвер работал, необходимо "подпитать" anim_layers, параллельно обновляя анимации при сетапе gfy:
Код:
// animfix...
if (player->team() != local->team()) {
float original_gfy;

animstate->goal_feet_yaw = original_gfy;
player->UpdateClientSideAnim();
original_gfy = animstate->goal_feet_yaw;

animstate->goal_feet_yaw = YawNormalize(animstate->eye_yaw + 0.f);
player->UpdateClientSideAnim();
std::memcpy(record->anim_layers[0], record->layers, sizeof(AnimationLayer) * 13);

animstate->goal_feet_yaw = YawNormalize(animstate->eye_yaw + 60.f);
player->UpdateClientSideAnim();
std::memcpy(record->anim_layers[2], record->layers, sizeof(AnimationLayer) * 13);

animstate->goal_feet_yaw = YawNormalize(animstate->eye_yaw - 60.f);
player->UpdateClientSideAnim();
std::memcpy(record->anim_layers[1], record->layers, sizeof(AnimationLayer) * 13);

animstate->goal_feet_yaw = original_gfy;
player->UpdateClientSideAnim();

// call resolver
Resolver::Original(record, previous_record);

if (record->choke > 1) {
    if (record->side <= 0) {
        animstate->goal_feet_yaw = YawNormalize(animstate->eye_yaw - delta)
    } else {
     animstate->goal_feet_yaw = YawNormalize(animstate->eye_yaw + delta)
    }
    }
    else if (record->choke == 1) {
    if (record->side <= 0) {
        animstate->goal_feet_yaw = YawNormalize(animstate->eye_yaw - 60.f)
    } else {
     animstate->goal_feet_yaw = YawNormalize(animstate->eye_yaw + 60.f)
    }
}
}
// update animations
player->UpdateClientSideAnim();
с правильным анимфиксом этот ресольвер будет находить сторону десинка не хуже, чем неверлуз / скит, дальше дело только нахождения величины десинка
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
5 Янв 2023
Сообщения
1
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
animstate->goal_feet_yaw = YawNormalize(animstate->eye_yaw + 0.f);
зачем
проще же сделать вот так:
C++:
state->m_goal_feet_yaw = math::normalize_yaw( state->m_eye_yaw );
энивей ресольвер хуйня как минимум вантап сетапит ресольв лееры до сетапа матриц да и сам ресольвер устарел и нуждается в реворке......
и я не знаю наверно круто использовать куча код стайлов разных
аппер кейс, снейк кейс
вместо того что бы написать свою базу в чистом снейк кейсе
например..
C++:
/* upper-case */
NormalizeYaw( AnimState->m_flGoalFeetYaw );

/* snake-case */
normalize_yaw( state->m_goal_feet_yaw );
а не
C++:
animstate->goal_feet_yaw = NormalizeYaw( animstate->eye_yaw );
да и зачем тебе m перед дельтами если они не находятся в классе/структуре приставка мембер там ни к чему
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
25 Окт 2022
Сообщения
35
Реакции[?]
6
Поинты[?]
0
обратимся к многоуважаемому ламме, получим этот прекрасный ресольвер на леерах:
C++:
float delta = CalculateDelta(...);
if (record->flags & FL_ONGROUND && previous_record->flags & FL_ONGROUND && !record->shot && !fakeplayer) {
    // lenght2d
    auto speed = (record->velocity.x * record->velocity.x) + (record->velocity.y * record->velocity.y);
    if (speed <= 0.1f) {
        // https://prnt.sc/amTkN5gnLMAF
        if ( record->layers[3].weight == 0.0 && record->layer[3].cycle == 0.0 /*&& record->layers[6].weight == 0.0*/) {
          record->m_side = 2 * ((AngleDiff(animstate->goal_feet_yaw, player->EyeAngles().y)) <= 0.0) - 1;
        }
    }
    else if (/*!(record->layers[12].weight * 1000.f) &&*/ record->layers[6].weight * 1000.f == previous_record->layers[6].weight * 1000.f) {
        float(m_pDeltaCenter) = std::abs(record->layers[6].playback_rate - record->anim_layers[0][6].playback_rate); // gfy + 0
        float(m_pDeltaRight) = std::abs(record->layers[6].playback_rate - record->anim_layers[2][6].playback_rate); // gfy + 60
        float(m_pDeltaLeft) = std::abs(record->layers[6].playback_rate - record->anim_layers[1][6].playback_rate); // gfy - 60
        if (m_pDeltaCenter < m_pDeltaRight || m_pDeltaLeft <= m_pDeltaRight || (m_pDeltaRight * 1000.f)) {
          if (m_pDeltaCenter >= m_pDeltaLeft && m_pDeltaRight > m_pDeltaLeft && !(m_pDeltaLeft * 1000.f)) {
            record->m_side = 1;
          }
        }
        else {
          record->m_side = -1;
        }
    }
}
чтоб ресольвер работал, необходимо "подпитать" anim_layers, параллельно обновляя анимации при сетапе gfy:
Код:
// animfix...
if (player->team() != local->team) {
float original_gfy;

animstate->goal_feet_yaw = original_gfy;
player->UpdateClientSideAnim();
original_gfy = animstate->goal_feet_yaw;

animstate->goal_feet_yaw = YawNormalize(animstate->eye_yaw + 0.f);
player->UpdateClientSideAnim();
std::memcpy(record->anim_layers[0], record->layers, sizeof(AnimationLayer) * 13);

animstate->goal_feet_yaw = YawNormalize(animstate->eye_yaw + 60.f);
player->UpdateClientSideAnim();
std::memcpy(record->anim_layers[2], record->layers, sizeof(AnimationLayer) * 13);

animstate->goal_feet_yaw = YawNormalize(animstate->eye_yaw - 60.f);
player->UpdateClientSideAnim();
std::memcpy(record->anim_layers[1], record->layers, sizeof(AnimationLayer) * 13);

animstate->goal_feet_yaw = original_gfy;
player->UpdateClientSideAnim();

// call resolver
Resolver::Original(record, previous_record);

if (record->choke > 1) {
    if (record->side <= 0) {
        animstate->goal_feet_yaw = YawNormalize(animstate->eye_yaw - delta)
    } else {
     animstate->goal_feet_yaw = YawNormalize(animstate->eye_yaw + delta)
    }
    }
    else if (record->choke == 1) {
    if (record->side <= 0) {
        animstate->goal_feet_yaw = YawNormalize(animstate->eye_yaw - 60.f)
    } else {
     animstate->goal_feet_yaw = YawNormalize(animstate->eye_yaw + 60.f)
    }
}
}
// update animations
player->UpdateClientSideAnim();
с правильным анимфиксом этот ресольвер будет находить сторону десинка не хуже, чем неверлуз / скит, дальше дело только нахождения величины десинка
Спасибо) А вообще спасибо всем,мне кажется после просмотра этой темы и темы про аним от f0rtis1337 в кс можно уже начать делать что-то годное даже новичку
Теперь надо делать anim fix но это уже совсем другая история
 
Забаненный
Статус
Оффлайн
Регистрация
20 Ноя 2022
Сообщения
12
Реакции[?]
2
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
зачем
проще же сделать вот так:
C++:
state->m_goal_feet_yaw = math::normalize_yaw( state->m_eye_yaw );
энивей ресольвер хуйня как минимум вантап сетапит ресольв лееры до сетапа матриц да и сам ресольвер устарел и нуждается в реворке......
и я не знаю наверно круто использовать куча код стайлов разных
аппер кейс, снейк кейс
вместо того что бы написать свою базу в чистом снейк кейсе
например..
C++:
/* upper-case */
NormalizeYaw( AnimState->m_flGoalFeetYaw );

/* snake-case */
normalize_yaw( state->m_goal_feet_yaw );
а не
C++:
animstate->goal_feet_yaw = NormalizeYaw( animstate->eye_yaw );
да и зачем тебе m перед дельтами если они не находятся в классе/структуре приставка мембер там ни к чему
делал ночью на коленке, писал код прям тут, по этому так и вышло
 
Сверху Снизу