-
Автор темы
- #1
Привет. Так как я ушёл с ХВХ и занимаюсь другими проектами, то решил слить свой ресольвер от Nuclon.
Антипасты нет. Но для того, что бы всё работало, нужно иметь знания и функции из СДК.
Ресольвер средненький, +- справляется как кряк ВТ. Частенько правда не видит джитеры, но да ладно.
ВАЖНО: Для нормальной работы должен быть нормальный SDK. Все нетвары, анимстейт и члены класса должны совпадать и быть актуальными!!
Анимации тоже должны быть актуальными. В интернете целая куча информации. Ищите.
Ресольвер только для HVH. Легит АА не проверялись!!
Антипасты нет. Но для того, что бы всё работало, нужно иметь знания и функции из СДК.
Ресольвер средненький, +- справляется как кряк ВТ. Частенько правда не видит джитеры, но да ладно.
Код:
void c_resolver::resolver(c_animation_system::animation* anim)
{
static float resolver_last_sim_time[64] = {};
const auto info = animation_system->get_animation_info(anim->player);
if (!info || !anim->has_anim_state || anim->player->get_info().fakeplayer || anim->didshot)
return;
float simtime = anim->player->get_simtime();
if (simtime == anim->player->get_old_simtime()) // not updated yet // We should recieve first goalfeet from the server
return;
if (simtime == resolver_last_sim_time[anim->player->index()]) // avoid to fix already fixed angle .. jitter fix .. // we fix only recieved server goal feet, not client sided.
return;
resolver_last_sim_time[anim->player->index()] = simtime; // store last resolver update time
// RESOLVER PART //
float Left = anim->anim_state.eye_yaw - 70;
float Right = anim->anim_state.eye_yaw + 70;
float Middle = anim->anim_state.eye_yaw;
info->brute_yaw = anim->anim_state.goal_feet_yaw; // set default standart "backwards" // server goalfeet //
// main logic //
anim->anim_state.goal_feet_yaw = std::clamp(anim->anim_state.goal_feet_yaw, -360.0f, 360.0f);
float eye_feet_delta = AngleDiff(anim->anim_state.eye_yaw, anim->anim_state.goal_feet_yaw);
if (eye_feet_delta <= 57)
{
if (-57 > eye_feet_delta)
anim->anim_state.goal_feet_yaw = Middle; // LBY based desync fix
else if (eye_feet_delta == 0.f) // no desync || real on side with fake middle angle.
{
const auto slow_walk = anim->anim_state.feet_yaw_rate >= 0.01f && anim->anim_state.feet_yaw_rate <= 0.8f;
if (slow_walk) // if player is able to use desync //
{
if (anim->anim_state.goal_feet_yaw != anim->anim_state.current_feet_yaw) // set previos server goal feet angle -> REAL Choked Angle //
anim->anim_state.goal_feet_yaw = anim->anim_state.current_feet_yaw;
}
}
}
else
{
anim->anim_state.goal_feet_yaw = Middle; // LBY based desync fix
}
info->brute_yaw = anim->anim_state.goal_feet_yaw; // set the new angle //
anim->anim_state.goal_feet_yaw = math::normalize_yaw(info->brute_yaw); // normalize angle //
anim->player->get_anim_state()->goal_feet_yaw = anim->anim_state.goal_feet_yaw;
}
Код:
float AngleDiff(float destAngle, float srcAngle) {
float delta;
delta = fmodf(destAngle - srcAngle, 360.0f);
if (destAngle > srcAngle) {
if (delta >= 180)
delta -= 360;
}
else {
if (delta <= -180)
delta += 360;
}
return delta;
}
ВАЖНО: Для нормальной работы должен быть нормальный SDK. Все нетвары, анимстейт и члены класса должны совпадать и быть актуальными!!
Анимации тоже должны быть актуальными. В интернете целая куча информации. Ищите.
Ресольвер только для HVH. Легит АА не проверялись!!
Последнее редактирование: