Типо ресольвер)
C++:
void flower_resolver::resolve(c_csplayer* e)
{
resolver_data* data = new resolver_data();
resolver_data* old_data = new resolver_data();
if (!data || !old_data)
{
g_notify.add(true, OSHColor::FromRGB(255, 0, 255), "Invalidate resolver data!");
return;
}
//////////////////////data_update////////////////
auto update_data = [data](c_csplayer* e) -> void
{
data->entity = e;
data->LBY = e->lby_t();
data->resolved_yaw = 0.f;
};
old_data = data;
////////////////////////////////////////////////
//get delta lambda-func
auto get_delta = [data, old_data](void) -> float
{
return data->LBY - old_data->LBY;
};
///////////////////////
float entity_yaw = e->angles().y;
float speed = e->animstate()->speed;
if ((e->flags() & FL_ONGROUND && speed > 0.1) || (data->LBY != e->lby_t()))
{
update_data(e);
e->animstate()->goal_feet_yaw = e->lby_t();
}
else if(get_delta() > 35.f)
{
update_data(e);
auto min_delta = 35.f;
auto max_delta = e->max_desync();
e->animstate()->goal_feet_yaw = brute_angle(min_delta, max_delta, (e->max_desync() - min_delta) / min_delta, e);
}
else
{
update_data(e);
e->animstate()->goal_feet_yaw = e->lby_t() + get_delta();
}
}