Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.73 KB | None | 0 0
  1. levi is gey
  2. #pragma once
  3. #include "../../stdafx.h"
  4. #include "../Utils/Playerlist.h"
  5. #include "../Utils/Hitbox.h"
  6. #include "../../SDK/SDK.h"
  7. #include "Backtrack.h"
  8. #define TICK_INTERVAL (Interfaces.pGlobalVars->interval_per_tick)
  9. #define TIME_TO_TICKS2( dt ) ( (int)( 0.5f + (float)(dt) / TICK_INTERVAL ) )
  10.  
  11. //second: check if the animation state is 979, then do your flip however you want >120
  12. //check if animation state is 973, then do your flip however you want <120
  13.  
  14. int CBaseEntity::GetSequenceActivity(int sequence)
  15. {
  16. auto hdr = Interfaces.g_pModelInfo->GetStudioModel(this->GetModel());
  17.  
  18. if (!hdr)
  19. return -1;
  20.  
  21. // c_csplayer vfunc 242, follow calls to find the function.
  22.  
  23. static auto client2 = GetModuleHandleW(L"client.dll");
  24. static auto getSequenceActivity = (DWORD)(Utils.PatternScan(client2, "55 8B EC 83 7D 08 FF 56 8B F1 74"));
  25. static auto GetSequenceActivity = reinterpret_cast<int(__fastcall*)(void*, studiohdr_t*, int)>(getSequenceActivity);
  26.  
  27. return GetSequenceActivity(this, hdr, sequence);
  28. }
  29.  
  30. bool isPartOf(char *a, char *b) {
  31. if (std::strstr(b, a) != NULL) { //Strstr says does b contain a
  32. return true;
  33. }
  34. return false;
  35. }
  36.  
  37. class CResolver {
  38. public:
  39. void AntiAimResolver();
  40. void AntiAimCorrection();
  41. private:
  42. bool IsFakeWalking();
  43. };
  44.  
  45. struct ResolverData
  46. {
  47. float simtime, flcycle[13], flprevcycle[13], flweight[13], flweightdatarate[13], fakewalkdetection[2], fakeanglesimtimedetection[2], fakewalkdetectionsimtime[2];
  48. float yaw, addyaw, lbycurtime;
  49. float shotsimtime, oldlby, lastmovinglby, balanceadjustsimtime, balanceadjustflcycle;
  50. int fakeanglesimtickdetectionaverage[4], amountgreaterthan2, amountequal1or2, amountequal0or1, amountequal1, amountequal0, resetmovetick, resetmovetick2;
  51. int tick, balanceadjusttick, missedshots, activity[13];
  52. bool bfakeangle, bfakewalk, playerhurtcalled, weaponfirecalled;
  53. Vector shotaimangles, hitboxPos, balanceadjustaimangles;
  54. uint32_t norder[13];
  55. char* resolvermode = "NONE", *fakewalk = "Not Moving";
  56. };
  57.  
  58. extern ResolverData pResolverData[64];
  59. extern CResolver* Resolver;
  60.  
  61. void CResolver::AntiAimResolver()
  62. {
  63. CBaseEntity* pLocal = Hacks.LocalPlayer;
  64. player_info_t info{};
  65. if (!pLocal->isAlive())
  66. return;
  67.  
  68. for (int i = 0; i < Interfaces.pEngine->GetMaxClients(); i++)
  69. {
  70. auto pEntity = Interfaces.pEntList->GetClientEntity(i);
  71.  
  72. if (!pEntity || !pLocal)
  73. continue;
  74.  
  75. if (pEntity == pLocal)
  76. continue;
  77.  
  78. if (!Interfaces.pEngine->GetPlayerInfo(i, &info))
  79. continue;
  80.  
  81. if (pEntity->IsDormant())
  82. continue;
  83.  
  84. if (pEntity->GetTeam() == pLocal->GetTeam())
  85. continue;
  86.  
  87. if (pEntity->isAlive())
  88. {
  89. if (pResolverData[i].addyaw > 135.f)
  90. pResolverData[i].addyaw = 0.f;
  91. // Add Spread Check here if you want pBruteForce
  92. if (pResolverData[Hacks.LocalPlayer->GetIndex()].weaponfirecalled)
  93. {
  94. if (!pResolverData[pEntity->GetIndex()].playerhurtcalled)
  95. {
  96. if (isPartOf("Brute", pResolverData[i].resolvermode))
  97. {
  98. //if (hitgroup >= 4 && hitgroup <= 7)
  99. //pResolverData[i].addyaw += 15;
  100. //else
  101. pResolverData[i].addyaw += 45.f;
  102. }
  103. }
  104. else
  105. pResolverData[i].playerhurtcalled = false;
  106. pResolverData[Hacks.LocalPlayer->GetIndex()].weaponfirecalled = false;
  107. }
  108. //Garbage Fake Angle Detection
  109. /*pResolverData[pEntity->GetIndex()].fakeanglesimtimedetection[Hacks.CurrentCmd->command_number % 1] = pEntity->GetSimulationTime();
  110. pResolverData[pEntity->GetIndex()].fakeanglesimtickdetectionaverage[Hacks.CurrentCmd->command_number % 4] = TIME_TO_TICKS2(fabs(pEntity->GetSimulationTime() - pEntity->GetOldSimulationTime()));
  111. pResolverData[pEntity->GetIndex()].amountgreaterthan2 = 0; pResolverData[pEntity->GetIndex()].amountequal1 = 0; pResolverData[pEntity->GetIndex()].amountequal0 = 0; pResolverData[pEntity->GetIndex()].amountequal1or2 = 0; pResolverData[pEntity->GetIndex()].amountequal0or1 = 0;
  112. for (int i = 0; i < 4; i++)
  113. {
  114. if (pResolverData[pEntity->GetIndex()].fakeanglesimtickdetectionaverage[i] >= 2)
  115. {
  116. pResolverData[pEntity->GetIndex()].amountgreaterthan2++;
  117. pResolverData[pEntity->GetIndex()].amountequal1or2++;
  118. }
  119. else if (pResolverData[pEntity->GetIndex()].fakeanglesimtickdetectionaverage[i] == 1)
  120. {
  121. pResolverData[pEntity->GetIndex()].amountequal1or2++;
  122. pResolverData[pEntity->GetIndex()].amountequal1++;
  123. pResolverData[pEntity->GetIndex()].amountequal0or1++;
  124. }
  125. else if (pResolverData[pEntity->GetIndex()].fakeanglesimtickdetectionaverage[i] == 0)
  126. {
  127. pResolverData[pEntity->GetIndex()].amountequal0++;
  128. pResolverData[pEntity->GetIndex()].amountequal0or1++;
  129. }
  130. }
  131. if (pResolverData[pEntity->GetIndex()].bfakewalk)
  132. {
  133. if (pResolverData[pEntity->GetIndex()].amountequal0 == 3 && pResolverData[pEntity->GetIndex()].amountgreaterthan2 == 1 ||
  134. pResolverData[pEntity->GetIndex()].amountequal0 == 2 && pResolverData[pEntity->GetIndex()].amountgreaterthan2 == 2
  135. || pResolverData[pEntity->GetIndex()].amountequal0 >= 3 /*this is to force
  136. )
  137. pResolverData[pEntity->GetIndex()].bfakeangle = true;
  138. else
  139. pResolverData[pEntity->GetIndex()].bfakeangle = false;
  140. }
  141. else
  142. {
  143. if (pResolverData[pEntity->GetIndex()].amountequal1or2 >= 4 ||
  144. pResolverData[pEntity->GetIndex()].amountequal0or1 >= 4 ||
  145. pResolverData[pEntity->GetIndex()].amountgreaterthan2 == 3 && pResolverData[pEntity->GetIndex()].amountequal1 == 1 ||
  146. pResolverData[pEntity->GetIndex()].amountequal1 >= 2)
  147. pResolverData[pEntity->GetIndex()].bfakeangle = false;
  148. else
  149. pResolverData[pEntity->GetIndex()].bfakeangle = true;
  150. }*/
  151.  
  152.  
  153. // bad coding or anti paste? :thinking:
  154. // detect fakewalk using m_LegAnimType instead just an fyi
  155. for (int w = 0; w < 13; w++)
  156. {
  157. AnimationLayer currentLayer = pEntity->GetAnimOverlay(w);
  158. const int activity = pEntity->GetSequenceActivity(currentLayer.m_nSequence);
  159. float flcycle = currentLayer.m_flCycle, flprevcycle = currentLayer.m_flPrevCycle, flweight = currentLayer.m_flWeight, flweightdatarate = currentLayer.m_flWeightDeltaRate;
  160. uint32_t norder = currentLayer.m_nOrder;
  161. Vector* pAngles = pEntity->GetEyeAnglesPointer();
  162. /*if (pEntity->GetSimulationTime() != pResolverData[pEntity->GetIndex()].simtime)
  163. {
  164. pResolverData[pEntity->GetIndex()].simtime = pEntity->GetSimulationTime();
  165. }*/
  166. // Fake Walk Detection NOrder 12 is activated when an animation starts and you can use this to detect fakewalk
  167. // Cause if you understand how fake walk works, they choke and then run and they stop at 0 velocity when they unchoke
  168. // causing the 0 velocity to be sent and lby not being upadted and it starts a new animation
  169. // Which is norder 12, if you can figure out how to instantly stop, you can go any velocity fucking up velocity checks.
  170. // This works against all fake walks.
  171. // To make this more accurate use more ticks
  172. if (norder == 12)
  173. {
  174. pResolverData[pEntity->GetIndex()].fakewalkdetection[Hacks.CurrentCmd->command_number % 2] = flweight;
  175. pResolverData[pEntity->GetIndex()].fakewalkdetectionsimtime[Hacks.CurrentCmd->command_number % 2] = pEntity->GetSimulationTime();
  176. for (int t = 0; t < 2; t++)
  177. {
  178. int resetmovetick2{};
  179. if (pResolverData[pEntity->GetIndex()].fakewalkdetection[t] > 0.f)
  180. pResolverData[pEntity->GetIndex()].resetmovetick = t;
  181. else if (t == 1)
  182. {
  183. if (pEntity->GetVecVelocity().Length2D() < 0.50 && flweight == 0.f)
  184. {
  185. pResolverData[pEntity->GetIndex()].fakewalk = "Not Moving";
  186. pResolverData[pEntity->GetIndex()].bfakewalk = false;
  187. }
  188. }
  189. else {
  190. if (pResolverData[pEntity->GetIndex()].resetmovetick > 0)
  191. resetmovetick2 = pResolverData[pEntity->GetIndex()].resetmovetick - 1;
  192. else
  193. resetmovetick2 = pResolverData[pEntity->GetIndex()].resetmovetick + 1;
  194.  
  195. if (pResolverData[pEntity->GetIndex()].fakewalkdetection[resetmovetick2] == 0.f)
  196. {
  197. pResolverData[pEntity->GetIndex()].fakewalk = "Fake Walking";
  198. pResolverData[pEntity->GetIndex()].bfakewalk = true;
  199. }
  200. }
  201. }
  202. }
  203. // Removed fake angle check unreliable
  204. //if (pResolverData[pEntity->GetIndex()].bfakeangle || !pResolverData[pEntity->GetIndex()].bfakeangle)
  205. //{
  206. if (pEntity->GetVecVelocity().Length2D() >= 0.50 && norder == 6 && flweight >= 0.550000 || pEntity->GetVecVelocity().Length2D() >= 0.50 && norder == 5 && flweight >= 0.550000 || !pResolverData[pEntity->GetIndex()].bfakewalk && pEntity->GetVecVelocity().Length2D() >= 0.50)
  207. {
  208. float simtime = pEntity->GetSimulationTime();
  209. Hitbox box{};
  210. if (!box.GetHitbox(pEntity, 0))
  211. continue;
  212. Vector hitboxPos{};
  213. float damage = box.GetBestPoint(hitboxPos);
  214. pResolverData[pEntity->GetIndex()].lastmovinglby = pEntity->pelvisangs();
  215. RageBackData[pEntity->GetIndex()][Hacks.CurrentCmd->command_number % 16].damage = damage;
  216. RageBackData[pEntity->GetIndex()][Hacks.CurrentCmd->command_number % 16].simtime = simtime;
  217. RageBackData[pEntity->GetIndex()][Hacks.CurrentCmd->command_number % 16].hitboxPos = hitboxPos;
  218. pResolverData[pEntity->GetIndex()].resolvermode = "LBY Move";
  219. pResolverData[pEntity->GetIndex()].fakewalk = "No Fake Walk";
  220. pAngles->y = pEntity->pelvisangs();
  221. }
  222. else
  223. {
  224. /*if (Hacks.CurrentCmd->tick_count % 2 <= 1)
  225. {
  226. if (norder == 6 && flweight == 0.f || norder == 12 && flweight == 0.f)
  227. {
  228. pResolverData[pEntity->GetIndex()].fakewalk = "Not Moving";
  229. }
  230. else if (pEntity->GetVecVelocity().Length2D() >= 0.50 && norder == 6 && flweight >= 0.550000)
  231. pResolverData[pEntity->GetIndex()].fakewalk = "Fake Walking";
  232. }*/
  233. /*else if (backtracking->IsTickValid(RageBackData[pEntity->GetIndex()][Hacks.CurrentCmd->command_number % 16].simtime))
  234. {
  235. Hacks.CurrentCmd->tick_count = TIME_TO_TICKS2(RageBackData[pEntity->GetIndex()][Hacks.CurrentCmd->command_number % 16].simtime);
  236. pAngles->y = RageBackData[pEntity->GetIndex()][Hacks.CurrentCmd->command_number % 16].yaw;
  237. }*/
  238. /*if (activity == ACT_CSGO_IDLE_TURN_BALANCEADJUST && flweight > 0.f && flcycle > 0.f && flcycle <= 0.05f)
  239. {
  240. pResolverData[pEntity->GetIndex()].balanceadjustsimtime = pEntity->GetSimulationTime();
  241. if (backtracking->IsTickValid(pResolverData[pEntity->GetIndex()].balanceadjustsimtime))
  242. {
  243. Hitbox box{};
  244. if (!box.GetHitbox(pEntity, 0))
  245. continue;
  246. pResolverData[pEntity->GetIndex()].balanceadjustaimangles = box.GetCenter();
  247. //if (Hacks.CurrentCmd->buttons & IN_ATTACK)
  248. pResolverData[pEntity->GetIndex()].resolvermode = "BA Update";
  249. pAngles->y = pEntity->pelvisangs() - 17.5;
  250. if (Hacks.CurrentCmd && Hacks.CurrentCmd->buttons & IN_ATTACK)
  251. backtracking->BackTrackPlayer(Hacks.CurrentCmd, TIME_TO_TICKS2(pResolverData[pEntity->GetIndex()].balanceadjustsimtime));
  252. }
  253. }*/
  254. /*else if (activity == ACT_CSGO_FIRE_PRIMARY && flweight > 0.f && flcycle > 0.f && flcycle <= 0.05f)
  255. {
  256. Hitbox box{};
  257. if (!box.GetHitbox(pEntity, 0))
  258. continue;
  259. pResolverData[pEntity->GetIndex()].resolvermode = "Fire Update";
  260. pResolverData[pEntity->GetIndex()].shotsimtime = pEntity->GetSimulationTime();
  261. pResolverData[pEntity->GetIndex()].shotaimangles = box.GetCenter();
  262. }
  263. else if (backtracking->IsTickValid(pResolverData[pEntity->GetIndex()].balanceadjustsimtime))
  264. {
  265. pResolverData[pEntity->GetIndex()].resolvermode = "BA";
  266. if (Hacks.CurrentCmd && Hacks.CurrentCmd->buttons & IN_ATTACK)
  267. backtracking->BackTrackPlayer(Hacks.CurrentCmd, TIME_TO_TICKS2(pResolverData[pEntity->GetIndex()].balanceadjustsimtime));
  268. }
  269. else if (backtracking->IsTickValid(pResolverData[pEntity->GetIndex()].shotsimtime))
  270. {
  271. pResolverData[pEntity->GetIndex()].resolvermode = "Fire";
  272. if (Hacks.CurrentCmd && Hacks.CurrentCmd->buttons & IN_ATTACK)
  273. backtracking->BackTrackPlayer(Hacks.CurrentCmd, TIME_TO_TICKS2(pResolverData[pEntity->GetIndex()].shotsimtime));
  274. }*/
  275. // Check how many times they triggered it in less than 1.1f time to make this more accurate
  276. if (activity == ACT_CSGO_IDLE_TURN_BALANCEADJUST && flweight >= 0.05f)
  277. {
  278. pResolverData[pEntity->GetIndex()].resolvermode = "Less BA Brute";
  279. pResolverData[pEntity->GetIndex()].addyaw > 0.f ? pAngles->y = pEntity->pelvisangs() - pResolverData[pEntity->GetIndex()].addyaw - 77.5 : pAngles->y = pEntity->pelvisangs() - 77.5;
  280. }
  281. else if (activity == ACT_CSGO_IDLE_ADJUST_STOPPEDMOVING || activity == ACT_CSGO_IDLE_TURN_BALANCEADJUST && flweight == 0.f && flcycle >= 0.970000)
  282. {
  283. pResolverData[pEntity->GetIndex()].resolvermode = "LBY Brute";
  284. pResolverData[pEntity->GetIndex()].addyaw > 0.f ? pAngles->y = pEntity->pelvisangs() - pResolverData[pEntity->GetIndex()].addyaw : pAngles->y = pEntity->pelvisangs() - 17.5;
  285. //pEntity->pelvisangs() < 0.f ? pAngles->y = (pResolverData[pEntity->GetIndex()].lastmovinglby + (pResolverData[pEntity->GetIndex()].lastmovinglby - pEntity->pelvisangs())) : pAngles->y = (pResolverData[pEntity->GetIndex()].lastmovinglby - (pResolverData[pEntity->GetIndex()].lastmovinglby - pEntity->pelvisangs()));
  286. //activity == ACT_CSGO_IDLE_ADJUST_STOPPEDMOVING ? pAngles->y = pEntity->pelvisangs() : pAngles->y = pEntity->pelvisangs() - 90;
  287. }
  288. }
  289. //}
  290. //else
  291. //pResolverData[pEntity->GetIndex()].resolvermode = "No Fake Angle";
  292. g_Math.AngleNormalise(*pAngles);
  293. }
  294. }
  295. }
  296. }
  297.  
  298. ResolverData pResolverData[64];
  299. CResolver* Resolver;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement