- Статус
- Оффлайн
- Регистрация
- 12 Май 2019
- Сообщения
- 48
- Реакции
- 38
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
c_vector3d * __fastcall c_cs_player _ :: weapon_shootpos (c_cs_player * player, uintptr_t edx, c_vector3d * pos)
{
if (! player ||! player-> is_player () ||! player-> is_local_player ())
return _weapon_shootpos (player, edx, pos);
auto get_bone_pos = [&] (c_base_entity * player, int bone) -> c_vector3d {
matrix3x4 matrix [128];
if (player-> setup_bones (matrix, 128, bone_used_by_hitbox, global_vars_base-> curtime))
return c_vector3d (matrix [bone] .matrix [0] [3], matrix [bone] .matrix [1] [3], matrix [bone] .matrix [2] [3]);
return c_vector3d (0, 0, 0);
};
auto modify_eye_pos = [&] (c_cs_player * player, c_csgo_player_anim_state * state, c_vector3d * pos)
{
static auto lookup_bone = * reinterpret_cast <int (__ thiscall *) (c_base_entity *, const char *)> (sig ("client_panorama.dll", "55 8B EC 53 56 8B F1 57 83 BE ?? ?? ?? ??? ? 75 14 "));
if (state-> in_hit_ground_animation ||
state-> duck_amount! = 0.f ||
! player-> get_ground_entity ())
{
auto base_entity = state-> base_entity;
auto bone_pos = get_bone_pos (base_entity, lookup_bone (base_entity, "head_0"));
bone_pos.z + = 1.7f;
if ((* pos) .z> bone_pos.z)
{
float some_factor = 0.f;
float delta = (* pos) .z - bone_pos.z;
float some_offset = (delta - 4.f) * 0.16666667;
if (some_offset> = 0.f)
some_factor = std :: fminf (some_offset, 1.f);
(* pos) .z + = ((bone_pos.z - (* pos) .z) * (((some_factor * some_factor) * 3.f) - (((some_factor * some_factor) * 2.f) * some_factor) ));
}
}
};
if (* reinterpret_cast <int32_t *> (uintptr_t (player) + 0x3AB0))
{
auto animstate = player-> get_anim_state ();
if (animstate)
modify_eye_pos (player, animstate, pos);
}
return _weapon_shootpos (player, edx, pos);
} [/ CODE]