Advertisement
Guest User

Untitled

a guest
May 21st, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.25 KB | None | 0 0
  1. typedef float BoneMatrix_t[MAXSTUDIOBONES][3][4];
  2.  
  3. void VectorTransforms(Vector in1, float in2[3][4], float *out)
  4. {
  5. out[0] = in1.Dot(in2[0]) + in2[0][3];
  6. out[1] = in1.Dot(in2[1]) + in2[1][3];
  7. out[2] = in1.Dot(in2[2]) + in2[2][3];
  8. }
  9.  
  10. void CWorld::GetOrigin(cl_entity_s *ent)
  11. {
  12. //Skeleton
  13. if (g_Utils.IsPlayer(ent))
  14. {
  15. Vector pos, vCubePoints[8], vCubePointsTrans[8], vBBMin, vBBMax;
  16. model_t *pModel = g_Studio.SetupPlayerModel(ent->index);
  17.  
  18. if (pModel == NULL)
  19. return;
  20.  
  21. studiohdr_t* pStudioHeader = (studiohdr_t*)g_Studio.Mod_Extradata(pModel);
  22. mstudiobbox_t* pHitbox = (mstudiobbox_t*)((byte*)pStudioHeader + pStudioHeader->hitboxindex);
  23. BoneMatrix_t* pBoneMatrix = (BoneMatrix_t*)g_Studio.StudioGetBoneTransform();
  24.  
  25. //get 8 points for hitbox head
  26. vCubePoints[0] = (pHitbox[11].bbmin);
  27. vCubePoints[1] = Vector(pHitbox[11].bbmin.x, pHitbox[11].bbmax.y, pHitbox[11].bbmin.z);
  28. vCubePoints[2] = Vector(pHitbox[11].bbmax.x, pHitbox[11].bbmax.y, pHitbox[11].bbmin.z);
  29. vCubePoints[3] = Vector(pHitbox[11].bbmax.x, pHitbox[11].bbmin.y, pHitbox[11].bbmin.z);
  30. vCubePoints[4] = (pHitbox[11].bbmax);
  31. vCubePoints[5] = Vector(pHitbox[11].bbmin.x, pHitbox[11].bbmax.y, pHitbox[11].bbmax.z);
  32. vCubePoints[6] = Vector(pHitbox[11].bbmin.x, pHitbox[11].bbmin.y, pHitbox[11].bbmax.z);
  33. vCubePoints[7] = Vector(pHitbox[11].bbmax.x, pHitbox[11].bbmin.y, pHitbox[11].bbmax.z);
  34. //hitbox head
  35. for (unsigned int i = 0; i < 8; i++)
  36. {
  37. VectorTransforms(vCubePoints[i], (*pBoneMatrix)[pHitbox[11].bone], vCubePointsTrans[i]);
  38. g_PlayerExtraInfoList[ent->index].vHitboxSkeletonHead[i] = vCubePointsTrans[i] + g_Player[ent->index].vVelocity * 0.0;
  39. }
  40. //bone body
  41. for (unsigned int i = 0; i < /*pStudioHeader->numbones*/53; i++)//numbones returning wrong value
  42. {
  43. pos[0] = (*pBoneMatrix)[i][0][3];
  44. pos[1] = (*pBoneMatrix)[i][1][3];
  45. pos[2] = (*pBoneMatrix)[i][2][3];
  46. g_PlayerExtraInfoList[ent->index].vBoneSkeleton[i] = pos + g_Player[ent->index].vVelocity * 0.0;
  47. }
  48. }
  49. //Aimbot
  50. if (g_Utils.IsPlayer(ent) && ent->index != g_Local.iIndex)
  51. {
  52. Vector pos, vBBMin, vBBMax, vTransform, vCubePointsTrans[8], vCubePoints[8], vMultiPoint;
  53.  
  54. model_t *pModel = g_Studio.SetupPlayerModel(ent->index);
  55.  
  56. if (pModel == NULL)
  57. return;
  58.  
  59. studiohdr_t *pStudioHeader = (studiohdr_t*)g_Studio.Mod_Extradata(pModel);
  60. BoneMatrix_t* pBoneMatrix = (BoneMatrix_t*)g_Studio.StudioGetBoneTransform();
  61. mstudiobbox_t *pHitbox = (mstudiobbox_t*)((byte*)pStudioHeader + pStudioHeader->hitboxindex);
  62.  
  63. //get hitbox
  64. for (unsigned int i = 0; i < /*pStudioHeader->numhitboxes*/21; i++)
  65. {
  66. VectorTransforms(pHitbox[i].bbmin, (*pBoneMatrix)[pHitbox[i].bone], vBBMin);
  67. VectorTransforms(pHitbox[i].bbmax, (*pBoneMatrix)[pHitbox[i].bone], vBBMax);
  68. g_PlayerExtraInfoList[ent->index].vHitbox[i] = (vBBMax + vBBMin) * 0.5f + g_Player[ent->index].vVelocity * 0.0;
  69. g_PlayerExtraInfoList[ent->index].fHitboxFOV[i] = g_Local.vForward.AngleBetween(g_PlayerExtraInfoList[ent->index].vHitbox[i] - g_Local.vEye);
  70.  
  71. //get 8 point of hitbox
  72. vCubePoints[0] = (pHitbox[i].bbmin);
  73. vCubePoints[1] = Vector(pHitbox[i].bbmin.x, pHitbox[i].bbmax.y, pHitbox[i].bbmin.z);
  74. vCubePoints[2] = Vector(pHitbox[i].bbmax.x, pHitbox[i].bbmax.y, pHitbox[i].bbmin.z);
  75. vCubePoints[3] = Vector(pHitbox[i].bbmax.x, pHitbox[i].bbmin.y, pHitbox[i].bbmin.z);
  76. vCubePoints[4] = (pHitbox[i].bbmax);
  77. vCubePoints[5] = Vector(pHitbox[i].bbmin.x, pHitbox[i].bbmax.y, pHitbox[i].bbmax.z);
  78. vCubePoints[6] = Vector(pHitbox[i].bbmin.x, pHitbox[i].bbmin.y, pHitbox[i].bbmax.z);
  79. vCubePoints[7] = Vector(pHitbox[i].bbmax.x, pHitbox[i].bbmin.y, pHitbox[i].bbmax.z);
  80. for (unsigned int x = 0; x < 8; x++)
  81. {
  82. VectorTransforms(vCubePoints[x], (*pBoneMatrix)[pHitbox[i].bone], vCubePointsTrans[x]);
  83. g_PlayerExtraInfoList[ent->index].vHitboxMulti[i][x] = vCubePointsTrans[x] + g_Player[ent->index].vVelocity * 0.0;
  84. }
  85. }
  86. //get bone
  87. for (unsigned int i = 0; i < /*pStudioHeader->numbones*/53; i++)//numbones returning wrong value
  88. {
  89. pos[0] = (*pBoneMatrix)[i][0][3];
  90. pos[1] = (*pBoneMatrix)[i][1][3];
  91. pos[2] = (*pBoneMatrix)[i][2][3];
  92. g_PlayerExtraInfoList[ent->index].vBone[i] = pos + g_Player[ent->index].vVelocity * 0.0;
  93. }
  94. }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement