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

Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Короче очень хочу сделать ресольвер
Чекал этот сайт для начала
Пожалуйста, авторизуйтесь для просмотра ссылки.

Но там ничего не поеятно лично для меня откуда 65 при указании переменных, зачем нам дельта между feetyaw и eye какой смысл если вроде ноги и голова в одну сторону смотрит ?
обратимся к многоуважаемому ламме, получим этот прекрасный ресольвер на леерах:
C++:
Expand Collapse Copy
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:
Код:
Expand Collapse Copy
// 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();

с правильным анимфиксом этот ресольвер будет находить сторону десинка не хуже, чем неверлуз / скит, дальше дело только нахождения величины десинка
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
animstate->goal_feet_yaw = YawNormalize(animstate->eye_yaw + 0.f);
зачем
проще же сделать вот так:
C++:
Expand Collapse Copy
state->m_goal_feet_yaw = math::normalize_yaw( state->m_eye_yaw );
энивей ресольвер хуйня как минимум вантап сетапит ресольв лееры до сетапа матриц да и сам ресольвер устарел и нуждается в реворке......
и я не знаю наверно круто использовать куча код стайлов разных
аппер кейс, снейк кейс
вместо того что бы написать свою базу в чистом снейк кейсе
например..
C++:
Expand Collapse Copy
/* upper-case */
NormalizeYaw( AnimState->m_flGoalFeetYaw );

/* snake-case */
normalize_yaw( state->m_goal_feet_yaw );
а не
C++:
Expand Collapse Copy
animstate->goal_feet_yaw = NormalizeYaw( animstate->eye_yaw );
да и зачем тебе m перед дельтами если они не находятся в классе/структуре приставка мембер там ни к чему
 
Последнее редактирование:
обратимся к многоуважаемому ламме, получим этот прекрасный ресольвер на леерах:
C++:
Expand Collapse Copy
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:
Код:
Expand Collapse Copy
// 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();

с правильным анимфиксом этот ресольвер будет находить сторону десинка не хуже, чем неверлуз / скит, дальше дело только нахождения величины десинка
Спасибо) А вообще спасибо всем,мне кажется после просмотра этой темы и темы про аним от @F0rtis в кс можно уже начать делать что-то годное даже новичку
Теперь надо делать anim fix но это уже совсем другая история
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
зачем
проще же сделать вот так:
C++:
Expand Collapse Copy
state->m_goal_feet_yaw = math::normalize_yaw( state->m_eye_yaw );
энивей ресольвер хуйня как минимум вантап сетапит ресольв лееры до сетапа матриц да и сам ресольвер устарел и нуждается в реворке......
и я не знаю наверно круто использовать куча код стайлов разных
аппер кейс, снейк кейс
вместо того что бы написать свою базу в чистом снейк кейсе
например..
C++:
Expand Collapse Copy
/* upper-case */
NormalizeYaw( AnimState->m_flGoalFeetYaw );

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