Исходник Shit resolver xd

Новичок
Новичок
Статус
Оффлайн
Регистрация
6 Июн 2018
Сообщения
1
Реакции
0
i know, it's shit don't hate me
made by:
Пожалуйста, авторизуйтесь для просмотра ссылки.


  1. CResolver* g_Resolver = new CResolver;
  2. c_resolver* g_resolver = new c_resolver;
  3. bool did_hs[64];
  4. bool did_hit[64];
  5. int hit_tick;
  6. int hit_tick2;
  7. bool ran_thru_resolver;
  8. #define TICK_INTERVAL ( g_pGlobals->interval_per_tick )
  9. #define TIME_TO_TICKS( dt ) ( (int)( 0.5f + (float)(dt) / TICK_INTERVAL ) )
  10. #define TICKS_TO_TIME( t ) ( TICK_INTERVAL *( t ) )
  11. CResolver::CTickRecord::CTickRecord(CBaseEntity* ent, int tickcount)
  12. {
  13. m_flLowerBodyYawTarget = ent->LowerBodyYaw();
  14. m_angEyeAngles = ent->GetEyeAngles();
  15. m_flCycle = ent->GetCycle();
  16. m_flSimulationTime = ent->GetSimulationTime();
  17. m_nSequence = ent->GetSequence();
  18. m_vecOrigin = ent->GetOrigin();
  19. m_vecVelocity = ent->GetVelocity();
  20. // m_flPoseParameter = ent->GetPoseParameters();
  21. m_angAbsAngles = ent->GetAbsAngles();
  22. m_vecAbsOrigin = ent->GetOrigin();
  23. this->tickcount = tickcount;
  24. }
  25. CResolver::CTickRecord::CTickRecord(CBaseEntity* ent, Vector EyeAngles, float LowerBodyYaw)
  26. {
  27. m_flLowerBodyYawTarget = LowerBodyYaw;
  28. m_angEyeAngles = EyeAngles;//ent->GetEyeAngles();
  29. m_flCycle = ent->GetCycle();
  30. m_flSimulationTime = ent->GetSimulationTime();
  31. m_nSequence = ent->GetSequence();
  32. m_vecOrigin = ent->GetOrigin();
  33. m_vecVelocity = ent->GetVelocity();
  34. // m_flPoseParameter = ent->GetPoseParameters();
  35. m_angAbsAngles = ent->GetAbsAngles();
  36. m_vecAbsOrigin = ent->GetOrigin();
  37. tickcount = G::UserCmdForBacktracking->tick_count;
  38. }
  39. float tolerance = 10.f;
  40. const inline float GetDelta(float a, float b) {
  41. return abs(Math::NormalizeYaw(a - b));
  42. }
  43. const inline float LBYDelta(const CResolver::CTickRecord& v) {
  44. return v.m_angEyeAngles.y - v.m_flLowerBodyYawTarget;
  45. }
  46. const inline bool IsDifferent(float a, float b, float tolerance = 10.f) {
  47. return (GetDelta(a, b) > tolerance);
  48. }
  49. void CResolver::StoreVars(CBaseEntity* ent)
  50. {
  51. if (m_arrInfos.at(ent->Index()).m_sRecords.size() >= 32)///static_cast<size_t>(Config->GetValue<int>("Resolver", "Ticks")))
  52. m_arrInfos.at(ent->Index()).m_sRecords.pop_back();
  53. m_arrInfos.at(ent->Index()).m_sRecords.push_front(CTickRecord(ent, G::UserCmdForBacktracking->tick_count));
  54. }
  55. void CResolver::StoreVars(CBaseEntity* ent, Vector EyeAngles, float LowerBodyYaw)
  56. {
  57. if (m_arrInfos.at(ent->Index()).m_sRecords.size() >= 32)///static_cast<size_t>(Config->GetValue<int>("Resolver", "Ticks")))
  58. m_arrInfos.at(ent->Index()).m_sRecords.pop_back();
  59. m_arrInfos.at(ent->Index()).m_sRecords.push_front(CTickRecord(ent, EyeAngles, LowerBodyYaw));
  60. }
  61. bool HasStaticRealAngle(const std::deque<CResolver::CTickRecord>& l, float tolerance) {
  62. auto minmax = std::minmax_element(std::begin(l), std::end(l), [](const CResolver::CTickRecord& t1, const CResolver::CTickRecord& t2) { return t1.m_flLowerBodyYawTarget < t2.m_flLowerBodyYawTarget; });
  63. return (fabs(minmax.first->m_flLowerBodyYawTarget - minmax.second->m_flLowerBodyYawTarget) <= tolerance);
  64. }
  65. bool CResolver::HasStaticRealAngle_Wrapper(int index, float tolerance)
  66. {
  67. return HasStaticRealAngle(m_arrInfos[index].m_sRecords, tolerance);
  68. }
  69. bool HasStaticYawDifference(const std::deque<CResolver::CTickRecord>& l, float tolerance) {
  70. for (auto i = l.begin(); i < l.end() - 1;)
  71. {
  72. if (GetDelta(LBYDelta(*i), LBYDelta(*++i)) > tolerance)
  73. return false;
  74. }
  75. return true;
  76. }
  77. bool HasSteadyDifference(const std::deque<CResolver::CTickRecord>& l, float tolerance, CBaseEntity* pEnt) {
  78. size_t misses = 0;
  79. for (size_t i = 0; i < l.size() - 1; i++) {
  80. float tickdif = static_cast<float>(l.at(i).m_flSimulationTime - l.at(i + 1).tickcount);
  81. float lbydif = GetDelta(l.at(i).m_flLowerBodyYawTarget, l.at(i + 1).m_flLowerBodyYawTarget);
  82. float ntickdif = static_cast<float>(G::UserCmdForBacktracking->tick_count - l.at(i).tickcount);
  83. if (((lbydif / tickdif) * ntickdif) > tolerance)
  84. misses++;
  85. }
  86. return (misses <= (l.size() / 3));
  87. }
  88. int GetDifferentDeltas(const std::deque<CResolver::CTickRecord>& l, float tolerance) {
  89. std::vector<float> vec;
  90. for (auto var : l) {
  91. float curdelta = LBYDelta(var);
  92. bool add = true;
  93. for (auto fl : vec) {
  94. if (!IsDifferent(curdelta, fl, tolerance))
  95. add = false;
  96. }
  97. if (add)
  98. vec.push_back(curdelta);
  99. }
  100. return vec.size();
  101. }
  102. int GetDifferentLBYs(const std::deque<CResolver::CTickRecord>& l, float tolerance) {
  103. std::vector<float> vec;
  104. for (auto var : l)
  105. {
  106. float curyaw = var.m_flLowerBodyYawTarget;
  107. bool add = true;
  108. for (auto fl : vec)
  109. {
  110. if (!IsDifferent(curyaw, fl, tolerance))
  111. add = false;
  112. }
  113. if (add)
  114. vec.push_back(curyaw);
  115. }
  116. return vec.size();
  117. }
  118. float GetLBYByComparingTicks(const std::deque<CResolver::CTickRecord>& l, CBaseEntity* pEnt)
  119. {
  120. int modulo = 1;//;Config->GetValue<int>("Resolver", "Modulo");
  121. int difangles = GetDifferentLBYs(l, tolerance);
  122. int inc = modulo * difangles;
  123. for (auto var : l)
  124. {
  125. for (int lasttick = var.tickcount; lasttick < G::UserCmdForBacktracking->tick_count; lasttick += inc)
  126. {
  127. if (lasttick == G::UserCmdForBacktracking->tick_count)
  128. return var.m_flLowerBodyYawTarget;
  129. }
  130. }
  131. return 0.f;
  132. }
  133. float GetDeltaByComparingTicks(const std::deque<CResolver::CTickRecord>& l, CBaseEntity* pEnt) {
  134. int modulo = 1;// Config->GetValue<int>("Resolver", "Modulo");
  135. int difangles = GetDifferentDeltas(l, tolerance);
  136. int inc = modulo * difangles;
  137. for (auto var : l)
  138. {
  139. for (int lasttick = var.tickcount; lasttick < G::UserCmdForBacktracking->tick_count; lasttick += inc) {
  140. if (lasttick == G::UserCmdForBacktracking->tick_count)
  141. return LBYDelta(var);
  142. }
  143. }
  144. return 0.f;
  145. }
  146. bool DeltaKeepsChanging(const std::deque<CResolver::CTickRecord>& cur, float tolerance) {
  147. return (GetDifferentDeltas(cur, tolerance) >(int) cur.size() / 2);
  148. }
  149. bool LBYKeepsChanging(const std::deque<CResolver::CTickRecord>& cur, float tolerance) {
  150. return (GetDifferentLBYs(cur, tolerance) > (int)cur.size() / 2);
  151. }
  152. float CResolver::ResolvePitch(CBaseEntity* pPlayer, float org_pitch)
  153. {
  154. auto new_pitch = org_pitch;
  155. /*bruteforce method*/
  156. if (org_pitch > 181 && org_pitch < 271)
  157. {
  158. new_pitch = 269.0;
  159. }
  160. else if (org_pitch > 89 && org_pitch < 181)
  161. {
  162. new_pitch = 89.0;
  163. }
  164. else
  165. {
  166. if (!(pPlayer->GetFlags() & FL_ONGROUND))
  167. {
  168. new_pitch = 89;
  169. }
  170. else
  171. {
  172. /*proper dynamic fix*/
  173. if (org_pitch > 181 && org_pitch < 271)
  174. {
  175. new_pitch = 269.0;
  176. }
  177. else if (org_pitch > 89 && org_pitch < 181)
  178. {
  179. new_pitch = 89.0;
  180. }
  181. else if (org_pitch <= -66)
  182. new_pitch = 89;
  183. else if (org_pitch == 0)
  184. new_pitch = 89;
  185. //}
  186. }
  187. }
  188. return new_pitch;
  189. }
  190. enum at_target_antiaims
  191. {
  192. Undefined,
  193. Backwards,
  194. Left,
  195. Right
  196. };
  197. float CResolver::ResolveYaw(CBaseEntity* pPlayer, float org_yaw)
  198. {
  199. auto index = pPlayer->Index();
  200. auto GetYawToNearestPlayer = [](CBaseEntity* pCenter) -> QAngle
  201. {
  202. auto get3ddist = [](Vector myCoords, Vector enemyCoords) -> float
  203. {
  204. return sqrt(
  205. pow(double(enemyCoords.x - myCoords.x), 2.0) +
  206. pow(double(enemyCoords.y - myCoords.y), 2.0) +
  207. pow(double(enemyCoords.z - myCoords.z), 2.0));
  208. };
  209. float best_dist = 9999;
  210. CBaseEntity* selected_player = nullptr;
  211. Vector vEyePos = pCenter->GetEyePosition();
  212. for (int i = 1; i < g_pGlobals->maxClients; i++)
  213. {
  214. CBaseEntity* pCBaseEntity = g_pEntitylist->GetClientEntity(i);
  215. if (pCBaseEntity)
  216. {
  217. if (pCBaseEntity->GetHealth() > 0 && !pCBaseEntity->IsDormant() && pCBaseEntity->GetTeamNum() != pCenter->GetTeamNum() && pCBaseEntity != pCenter)
  218. {
  219. float dist = get3ddist(vEyePos, pCBaseEntity->GetEyePosition());
  220. if (best_dist > dist)
  221. {
  222. best_dist = dist;
  223. selected_player = pCBaseEntity;
  224. }
  225. }
  226. }
  227. }
  228. if (selected_player)
  229. {
  230. return GameUtils::CalculateAngle(vEyePos, selected_player->GetEyePosition());
  231. }
  232. return QAngle(-1, -1, -1);
  233. };
  234. QAngle at_target = GetYawToNearestPlayer(pPlayer);
  235. at_target.y = Math::NormalizeYaw(at_target.y);
  236. auto new_yaw = org_yaw;
  237. bool is_moving = pPlayer->GetVelocity().Length() > 29.f;
  238. bool is_onground = pPlayer->GetFlags() & FL_ONGROUND;
  239. if (pPlayer->LowerBodyYaw() != LatestLowerBodyYaw[index] || (is_moving && is_onground))
  240. {
  241. LatestLowerBodyYaw[index] = pPlayer->LowerBodyYaw();
  242. OldYawDifference[index] = YawDifference[index];
  243. YawDifference[index] = Math::NormalizeYaw(new_yaw - pPlayer->LowerBodyYaw());
  244. aa_info[index] = "lby update";
  245. LatestLowerBodyYawUpdateTime[index] = g_pGlobals->curtime;//pPlayer->GetSimulationTime();
  246. return Math::NormalizeYaw(pPlayer->LowerBodyYaw());
  247. }
  248. if (is_moving)
  249. {
  250. aa_info[index] = "lby update";
  251. }
  252. else /*On ground resolver*/
  253. {
  254. if (((g_pGlobals->curtime - LatestLowerBodyYawUpdateTime[index]) >= 0.5))
  255. {
  256. new_yaw -= 180;
  257. aa_info[index] = "static";
  258. }
  259. else
  260. {
  261. auto cur = this->m_arrInfos.at(index).m_sRecords;
  262. if (cur.size() > 1)
  263. {
  264. if (HasStaticRealAngle(cur, 5))
  265. new_yaw = (cur.front().m_flLowerBodyYawTarget) + (Math::RandomFloat(0.f, 1.f) > 0.5f ? 10 : -10);
  266. else if (HasStaticYawDifference(cur, 10))
  267. new_yaw -= (cur.front().m_angEyeAngles.y - cur.front().m_flLowerBodyYawTarget);
  268. else if (HasSteadyDifference(cur, 10, pPlayer)) {
  269. float tickdif = static_cast<float>(cur.front().tickcount - cur.at(1).tickcount);
  270. float lbydif = GetDelta(cur.front().m_flLowerBodyYawTarget, cur.at(1).m_flLowerBodyYawTarget);
  271. float ntickdif = static_cast<float>(TIME_TO_TICKS(g_pGlobals->curtime) - cur.front().tickcount);
  272. new_yaw = (lbydif / tickdif) * ntickdif;
  273. }
  274. else if (DeltaKeepsChanging(cur, 10))
  275. new_yaw -= GetDeltaByComparingTicks(cur, pPlayer);
  276. else if (LBYKeepsChanging(cur, 10))
  277. new_yaw = GetLBYByComparingTicks(cur, pPlayer);
  278. aa_info[index] = "stored";
  279. }
  280. else
  281. {
  282. // do all other logic here
  283. new_yaw = pPlayer->LowerBodyYaw() + Math::RandomFloat(-45, 45);
  284. aa_info[index] = "bruteforce";
  285. }
  286. }
  287. }
  288. new_yaw = Math::NormalizeYaw(new_yaw);
  289. return new_yaw;
  290. }
  291. void CResolver::Run(CBaseEntity* pPlayer)
  292. {
  293. Vector* eye_angles = pPlayer->GetEyeAnglesPtr();
  294. static Vector old_resolved[64];
  295. int index = pPlayer->GetIndex();
  296. int CBaseEntityServerID = GetServerSideID(pPlayer->Index());
  297. if (PlayerData[CBaseEntityServerID].MissedShots >= 2)
  298. {
  299. PlayerData[CBaseEntityServerID].LastAnglesHit.Invalidate();
  300. }
  301. Vector eye_ang = pPlayer->GetEyeAngles();
  302. if (RagebotElements.Ragebot_Corrections_Resolver->Checked)
  303. {
  304. float pitch = ResolvePitch(pPlayer, g_BacktrackHelper->PlayerRecord[index].EyeAngles.x/*eye_ang.x*/);
  305. float yaw = ResolveYaw(pPlayer, g_BacktrackHelper->PlayerRecord[index].EyeAngles.y/*eye_ang.y*/);
  306. eye_angles->x = pitch;
  307. eye_angles->y = yaw;
  308. old_resolved[index] = Vector(pitch, yaw);
  309. }
  310. }
  311. enum CCSGOAnimStatePoses
  312. {
  313. ACT_CSGO_IDLE_TURN_BALANCEADJUST = 979,
  314. };
  315. CPredictable::CPredictable(float lby, float sim)
  316. {
  317. m_flLowerBodyYawTarget = lby;
  318. m_flSimulationTime = sim;
  319. }
  320. void c_resolver::Resolve_Predict(CBaseEntity* pEntity) {
  321. auto record = arr_infos.at(pEntity->GetIndex());
  322. // big fake angle check// big pasta
  323. static float moving_lby[64];
  324. static float old_simtime[65];
  325. if (pEntity->GetSimulationTime() != old_simtime[pEntity->GetIndex()])
  326. {
  327. G::using_fake_angles[pEntity->GetIndex()] = pEntity->GetSimulationTime() - old_simtime[pEntity->GetIndex()] == g_pGlobals->interval_per_tick; //entity->GetSimTime() - old_simtime[entity->GetIndex()] >= TICKS_TO_TIME(2)
  328. old_simtime[pEntity->GetIndex()] = pEntity->GetSimulationTime();
  329. }
  330. //big resolver// last moving lby because why not
  331. if (!G::using_fake_angles[pEntity->GetIndex()])
  332. {
  333. if (pEntity->Velocity().Length() > 30.f && pEntity->GetFlags() & FL_ONGROUND) {
  334. G::ResolverMode[pEntity->GetIndex()] = 0;
  335. pEntity->GetEyeAnglesPtr()->y = pEntity->LowerBodyYaw();
  336. moving_lby[pEntity->GetIndex()] = pEntity->LowerBodyYaw();
  337. }
  338. else if (pEntity->Velocity().Length() > 1.f && pEntity->Velocity().Length() < 30.f && pEntity->GetFlags() & FL_ONGROUND) {
  339. G::ResolverMode[pEntity->GetIndex()] = 1;
  340. switch (G::Shots[pEntity->GetIndex()] % 4)
  341. {
  342. case 0: pEntity->GetEyeAnglesPtr()->y = moving_lby[pEntity->GetIndex()]; break;
  343. case 1: pEntity->GetEyeAnglesPtr()->y -= 180; break;
  344. case 2: pEntity->GetEyeAnglesPtr()->y += 70; break;
  345. case 3:pEntity->GetEyeAnglesPtr()->y += 140; break;
  346. }
  347. }
  348. else
  349. {
  350. G::ResolverMode[pEntity->GetIndex()] = 2;
  351. switch (G::Shots[pEntity->GetIndex()] % 4)
  352. {
  353. case 0: pEntity->GetEyeAnglesPtr()->y = moving_lby[pEntity->GetIndex()]; break;
  354. case 1: pEntity->GetEyeAnglesPtr()->y -= 180; break;
  355. case 2: pEntity->GetEyeAnglesPtr()->y += 70; break;
  356. case 3:pEntity->GetEyeAnglesPtr()->y += 140; break;
  357. }
  358. }
  359. }
  360. //pEntity->GetEyeAnglesPtr()->NormalizeVec();
  361. }
  362. void c_resolver::Resolve(CBaseEntity * pEntity)
  363. {
  364. if (!pEntity)
  365. return;
  366. Resolve_Predict(pEntity);
  367. }
  368. void c_resolver::Store(CBaseEntity * Entity) {
  369. if (!G::UserCmd || !Entity || Entity->GetIndex() < 1 || Entity->GetIndex() > 64)
  370. return;
  371. auto record = &arr_infos.at(Entity->GetIndex());
  372. record->Entity = Entity;
  373. if (record->TickRecords.size() > 1 && record->TickRecords.front().tickcount == G::UserCmd->tick_count)
  374. return;
  375. record->TickRecords.push_front(CTickRecord(Entity));
  376. while ((int)record->TickRecords.size() > 256)
  377. record->TickRecords.pop_back();
  378. }
 
b1g bruteforce lol
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Переоформи
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Это ресольвер крипта клаб? :kappa:
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Назад
Сверху Снизу