Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.16 KB | None | 0 0
  1. #include "autoknife.h"
  2.  
  3. bool AutoKnife::IsPlayerBehind(C_BasePlayer *localplayer, C_BasePlayer *player) {
  4. Vector toTarget = (localplayer->GetLocalOrigin() - player->GetLocalOrigin()).Normalize();
  5. Vector playerViewAngles;
  6. Math::AngleVectors(*player->GetEyeAngles(), playerViewAngles);
  7. if (toTarget.Dot(playerViewAngles) > -0.475f)
  8. return false;
  9. else
  10. return true;
  11. }
  12.  
  13. int AutoKnife::GetKnifeDamageDone(C_BasePlayer *localplayer, C_BasePlayer *player) {
  14. //damage: unarmored/armored
  15. //leftclick: 39/33
  16. //rightclick: 55/65
  17. //backstab leftclick: 90/76
  18. //backstab rightclick: 180/153
  19. bool backstab = IsPlayerBehind(localplayer, player);
  20. int armor = player->GetArmor();
  21. if (!backstab) {
  22. if (armor > 0)
  23. return 33; // 21
  24. else
  25. return 39; // 25
  26. } else {
  27. if (armor > 0)
  28. return 76; // 76
  29. else
  30. return 90; // 90
  31. }
  32. }
  33.  
  34. int AutoKnife::GetKnife2DamageDone(C_BasePlayer *localplayer, C_BasePlayer *player) {
  35. //damage: unarmored/armored
  36. //leftclick: 39/33
  37. //rightclick: 55/65
  38. //backstab leftclick: 90/76
  39. //backstab rightclick: 180/153
  40. bool backstab = IsPlayerBehind(localplayer, player);
  41. int armor = player->GetArmor();
  42. if (!backstab) {
  43. if (armor > 0)
  44. return 55;
  45. else
  46. return 65;
  47. } else {
  48. return 100;
  49. }
  50. }
  51.  
  52. static Vector GetClosestSpot(CUserCmd *cmd, C_BasePlayer *localPlayer, C_BasePlayer *enemy) {
  53. QAngle viewAngles;
  54. engine->GetViewAngles(viewAngles);
  55.  
  56. float tempFov = Settings::Aimbot::AutoAim::fov;
  57. float tempDistance = Settings::Aimbot::AutoAim::fov * 5.f;
  58.  
  59. Vector pVecTarget = localPlayer->GetEyePosition();
  60.  
  61. Vector tempSpot = {0, 0, 0};
  62.  
  63. bool baimSpots[] =
  64. {
  65. //Head, Neck, Upper Spine, Middle Spine, Lower Spine, Pelvis, Hip
  66. true, true, true, true, true, true, true, // center mass
  67. //Collarbone, Shoulder, Armpit, Bicep, Elbow, Forearm, Wrist
  68. false, false, false, false, false, false, false, // left arm
  69. //Collarbone, Shoulder, Armpit, Bicep, Elbow, Forearm, Wrist
  70. false, false, false, false, false, false, false, // right arm
  71. //Buttcheek, Thigh, Knee, Ankle, Sole
  72. false, false, false, false, false, // left leg
  73. //Buttcheek, Thigh, Knee, Ankle, Sole
  74. false, false, false, false, false // right leg
  75. };
  76.  
  77. const std::map<int, int> *modelType = Util::GetModelTypeBoneMap(enemy);
  78.  
  79. static int len = 0;
  80. len = sizeof(Settings::Aimbot::AutoAim::desiredBones) / sizeof(Settings::Aimbot::AutoAim::desiredBones[0]);
  81.  
  82. for (int i = 0; i < len; i++) {
  83. if (Resolver::shouldBaim) {
  84. if (!baimSpots[i])
  85. continue;
  86. } else {
  87. if (!Settings::Aimbot::AutoAim::desiredBones[i])
  88. continue;
  89. }
  90.  
  91. int boneID = (*modelType).at(i);
  92. if (boneID == (int) Bone::INVALID)
  93. continue;
  94.  
  95. Vector cbVecTarget = enemy->GetBonePosition(boneID);
  96.  
  97. float cbFov = Math::GetFov(viewAngles, Math::CalcAngle(pVecTarget, cbVecTarget));
  98.  
  99. if (cbFov < tempFov) {
  100. if (Entity::IsVisibleThroughEnemies(enemy, boneID)) {
  101. tempFov = cbFov;
  102. tempSpot = cbVecTarget;
  103. }
  104. }
  105. }
  106. return tempSpot;
  107. }
  108.  
  109. void AutoKnife::CreateMove(CUserCmd *cmd) {
  110. if (!engine->IsInGame())
  111. return;
  112.  
  113. if (!Settings::AutoKnife::enabled)
  114. return;
  115.  
  116. if (!inputSystem->IsButtonDown(Settings::Triggerbot::key) && Settings::AutoKnife::onKey)
  117. return;
  118.  
  119. C_BasePlayer *localplayer = (C_BasePlayer *) entityList->GetClientEntity(engine->GetLocalPlayer());
  120. if (!localplayer || !localplayer->GetAlive())
  121. return;
  122.  
  123. C_BaseCombatWeapon *activeWeapon = (C_BaseCombatWeapon *) entityList->GetClientEntityFromHandle(
  124. localplayer->GetActiveWeapon());
  125. if (!activeWeapon)
  126. return;
  127.  
  128. ItemDefinitionIndex itemDefinitionIndex = *activeWeapon->GetItemDefinitionIndex();
  129. if (!Util::Items::IsKnife(itemDefinitionIndex) && itemDefinitionIndex != ItemDefinitionIndex::WEAPON_TASER)
  130. return;
  131.  
  132. if (itemDefinitionIndex == ItemDefinitionIndex::WEAPON_TASER && activeWeapon->GetAmmo() == 0)
  133. return;
  134.  
  135. float oldForward = cmd->forwardmove;
  136. float oldSideMove = cmd->sidemove;
  137. QAngle oldAngle = cmd->viewangles;
  138. QAngle aimAngle;
  139. bool shouldAim = false;
  140. for (int i = 1; i < engine->GetMaxClients(); i++) {
  141. C_BasePlayer *player = (C_BasePlayer *) entityList->GetClientEntity(i);
  142. if (!player
  143. || player == localplayer
  144. || player->GetDormant()
  145. || !player->GetAlive()
  146. || player->GetImmune())
  147. continue;
  148.  
  149. if (player->GetTeam() != localplayer->GetTeam() && !Settings::AutoKnife::Filters::enemies)
  150. continue;
  151.  
  152. if (player->GetTeam() == localplayer->GetTeam() && !Settings::AutoKnife::Filters::allies)
  153. continue;
  154. float playerDistance = localplayer->GetLocalOrigin().DistTo(player->GetLocalOrigin());
  155. if (playerDistance > 183.0f)
  156. continue;
  157. if (!Entity::IsVisible(player, (int) Bone::BONE_PELVIS))
  158. return;
  159. if (activeWeapon->GetNextPrimaryAttack() < globalVars->curtime) {
  160. aimAngle = Math::CalcAngle(localplayer->GetEyePosition(), player->GetBonePosition((int) Bone::BONE_PELVIS));
  161.  
  162. if (itemDefinitionIndex == ItemDefinitionIndex::WEAPON_TASER) {
  163. if (playerDistance <= ((localplayer->GetFlags() & FL_ONGROUND) ? 183.0f : 120.0f)) {
  164. cmd->buttons |= IN_ATTACK;
  165. shouldAim = true;
  166. }
  167. } else {
  168. if (playerDistance <= 65.0f && GetKnife2DamageDone(localplayer, player) >= player->GetHealth()) {
  169. cmd->buttons |= IN_ATTACK2;
  170. shouldAim = true;
  171. } else if (IsPlayerBehind(localplayer, player) && playerDistance <= 65.0f) {
  172. cmd->buttons |= IN_ATTACK2;
  173. shouldAim = true;
  174. } else if (playerDistance <= 78.0f) {
  175. if (IsPlayerBehind(localplayer, player))
  176. continue;
  177. shouldAim = true;
  178. if (playerDistance <= 65.0f &&
  179. (2 * (GetKnifeDamageDone(localplayer, player)) + GetKnife2DamageDone(localplayer, player) -
  180. 13) < player->GetHealth())
  181. cmd->buttons |= IN_ATTACK2;
  182. else
  183. cmd->buttons |= IN_ATTACK;
  184. }
  185. }
  186. if (shouldAim) {
  187. Math::ClampAngles(aimAngle);
  188. cmd->viewangles = aimAngle;
  189. if (!Settings::AutoKnife::silent)
  190. engine->SetViewAngles(cmd->viewangles);
  191. Math::CorrectMovement(oldAngle, cmd, oldForward, oldSideMove);
  192. //CreateMove::sendPacket = false; // prevent this kind of flicking thing on community servers
  193. }
  194. }
  195. }
  196. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement