Advertisement
Guest User

Untitled

a guest
Jul 24th, 2021
325
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. struct viewMatrix_t
  2. {
  3. float matrix[16];
  4. };
  5.  
  6. // maxrskiy::view_render - 0x41E4808
  7. // maxrskiy::view_matrix - 0x1CEF8D0
  8. bool WorldToScreen(vec3_t world, vec2_t& screen)
  9. {
  10.  
  11. uintptr_t viewRenderer = IOCTL::memory::read<uintptr_t>(maxrskiy::base_address + maxrskiy::view_render);
  12. viewMatrix_t matr = IOCTL::memory::read<viewMatrix_t>(IOCTL::memory::read<uintptr_t>(viewRenderer + maxrskiy::view_matrix));
  13.  
  14. float* m_vMatrix = matr.matrix;
  15. float w = m_vMatrix[12] * world.x + m_vMatrix[13] * world.y + m_vMatrix[14] * world.z + m_vMatrix[15];
  16.  
  17. cout << w << endl;
  18.  
  19. if (w < 0.01f) return false; // always causes it
  20.  
  21. screen.x = m_vMatrix[0] * world.x + m_vMatrix[1] * world.y + m_vMatrix[2] * world.z + m_vMatrix[3];
  22. screen.y = m_vMatrix[4] * world.x + m_vMatrix[5] * world.y + m_vMatrix[6] * world.z + m_vMatrix[7];
  23.  
  24. float invw = 1.0f / w;
  25. screen.x *= invw;
  26. screen.y *= invw;
  27.  
  28. float x = 1920 / 2;
  29. float y = 1080 / 2;
  30.  
  31. x += 0.5 * screen.x * 1920 + 0.5;
  32. y -= 0.5 * screen.y * 1080 + 0.5;
  33.  
  34. screen.x = x;
  35. screen.y = y;
  36.  
  37. return true;
  38. }
  39.  
  40.  
  41. for (int i = 0; i <= 100; i++) {
  42. auto entity = maxrskiy::methods::get_entity_by_id(i);
  43. if (entity.offset == 0) continue;
  44. if (entity.offset == local_player.offset) {
  45. //cout << "local player" << endl;
  46. continue;
  47. }
  48. if (!entity.is_player()) continue;
  49. if (!entity.is_alive()) continue;
  50.  
  51. if (entity.team_num() != local_player.team_num()) continue; // made sure there were no unnecessary players
  52.  
  53. vec3_t origin = entity.get_origin();
  54.  
  55. //int distance = local_player.get_origin().distance_to(entity.get_origin()) * 0.01905f;
  56. /* if (distance > 200) // 200m
  57. continue;*/
  58.  
  59. vec3_t targetHead = entity.get_bone_pos(8); // get head position
  60. vec2_t targetHeadScreen;
  61. if (!WorldToScreen(targetHead, targetHeadScreen)) { // return always false
  62. continue;
  63. }
  64.  
  65. cout << targetHeadScreen.x << " " << targetHeadScreen.y << endl;
  66.  
  67. Sleep(1000);
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement