-
Автор темы
- #1
поставил кастом значения для бара и ников, все работает pos - 100, 100, ники отображаются верно, хпбар меняет цвет правильно
на ксго я всегда использовал функцию GetPlayerBox и проблем не было
Сурс фатала вообще, писать с нуля не хочу, хочу оригинальное есп, код я там не менял
C++:
bool visuals_t::GetPlayerBoxRect(sdk::cs2_player_pawn* player, visuals_t::Rect& box) {
sdk::vector min, max, out_vec;
float left, bottom, right, top;
auto pGameSceneNode = player->get_m_pGameSceneNode();
auto nodeToWorldTransform = pGameSceneNode->get_node_to_world();
sdk::matrix3x4_t tran_frame = nodeToWorldTransform.quatOrientation.ToMatrix(nodeToWorldTransform.vecPosition);
auto collision = &player->get_m_Collision();
min = collision->get_vec_mins();
max = collision->get_vec_maxs();
vec2 screen_boxes[8];
sdk::vector points[] =
{
{ min.x, min.y, min.z },{ min.x, max.y, min.z },{ max.x, max.y, min.z },{ max.x, min.y, min.z },{ max.x, max.y, max.z },{ min.x, max.y, max.z },{ min.x, min.y, max.z },{ max.x, min.y, max.z }
};
for (int i = 0; i <= 7; i++) {
math::vector_transform(points[i], tran_frame, out_vec);
if (!math::world_to_screen(out_vec, screen_boxes[i]))
return false;
}
vec2 box_array[] = { screen_boxes[3],screen_boxes[5],screen_boxes[0],screen_boxes[4],screen_boxes[2],screen_boxes[1],screen_boxes[6],screen_boxes[7]
};
left = screen_boxes[3].x,
bottom = screen_boxes[3].y,
right = screen_boxes[3].x,
top = screen_boxes[3].y;
for (int i = 0; i <= 7; i++) {
if (left > box_array[i].x)
left = box_array[i].x;
if (bottom < box_array[i].y)
bottom = box_array[i].y;
if (right < box_array[i].x)
right = box_array[i].x;
if (top > box_array[i].y)
top = box_array[i].y;
}
box.x = left;
box.y = top;
box.w = right - left;
box.h = (bottom - top);
return true;
}
Последнее редактирование: