Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. #include "resolver.h"
  2.  
  3. bool Settings::Resolver::resolve_all = false;
  4.  
  5. std::vector<int64_t> Resolver::Players = { };
  6.  
  7. std::vector<PlayerAA> player_data;
  8.  
  9. PlayerAA* GetPlayerAA(C_BasePlayer* player)
  10. {
  11. unsigned int i = 0;
  12. for (; i < player_data.size(); i++)
  13. {
  14. if (player_data[i].player == player)
  15. return &player_data[i];
  16. }
  17.  
  18. // Player was not found, add it:
  19.  
  20. player_data.push_back (PlayerAA(player, *player->GetEyeAngles()));
  21.  
  22. return &player_data[i+1];
  23. }
  24.  
  25. void Resolver::HookProxies ()
  26. {
  27. NetVarManager::HookProp ("DT_CSPlayer", "m_flLowerBodyYawTarget", (RecvVarProxyFn)Resolver::LowerBodyYawTargetProxy);
  28. }
  29.  
  30. void Resolver::LowerBodyYawTargetProxy(const CRecvProxyData* pData, C_BaseEntity* ent, void* pOut)
  31. {
  32. float lower_body_yaw = pData->m_Value.m_Float;
  33.  
  34. C_BasePlayer* entity_player = (C_BasePlayer*)ent;
  35. C_BasePlayer* localplayer = (C_BasePlayer*) entitylist->GetClientEntity(engine->GetLocalPlayer());
  36.  
  37. if (entity_player == localplayer)
  38. return;
  39.  
  40. PlayerAA* player_aa = GetPlayerAA (entity_player);
  41.  
  42. player_aa->resolved_y_axis = lower_body_yaw;
  43.  
  44. cvar->ConsoleDPrintf("Resolved y axis: %f\n", lower_body_yaw);
  45.  
  46. *(float*)pOut = lower_body_yaw;
  47. }
  48.  
  49. void Resolver::FrameStageNotify(ClientFrameStage_t stage)
  50. {
  51. if (!engine->IsInGame())
  52. return;
  53.  
  54. C_BasePlayer* localplayer = (C_BasePlayer*) entitylist->GetClientEntity(engine->GetLocalPlayer());
  55. if (!localplayer)
  56. return;
  57.  
  58. if (stage == ClientFrameStage_t::FRAME_NET_UPDATE_POSTDATAUPDATE_START)
  59. {
  60. for (int i = 1; i < engine->GetMaxClients(); ++i)
  61. {
  62. C_BasePlayer* player = (C_BasePlayer*) entitylist->GetClientEntity(i);
  63.  
  64. if (!player
  65. || player == localplayer
  66. || player->GetDormant()
  67. || !player->GetAlive()
  68. || player->GetImmune()
  69. || player->GetTeam() == localplayer->GetTeam())
  70. continue;
  71.  
  72. IEngineClient::player_info_t entityInformation;
  73. engine->GetPlayerInfo(i, &entityInformation);
  74.  
  75. if (!Settings::Resolver::resolve_all && std::find(Resolver::Players.begin(), Resolver::Players.end(), entityInformation.xuid) == Resolver::Players.end())
  76. continue;
  77.  
  78. PlayerAA* pdata = GetPlayerAA (player);
  79.  
  80. pdata->reset_y_axis = player->GetEyeAngles()->y;
  81.  
  82. player->GetEyeAngles()->y = pdata->resolved_y_axis;
  83. }
  84. }
  85. else if (stage == ClientFrameStage_t::FRAME_RENDER_END)
  86. {
  87. for (unsigned long i = 0; i < player_data.size(); i++)
  88. {
  89. PlayerAA player_aa_data = player_data[i];
  90.  
  91. player_aa_data.player->GetEyeAngles()->y = player_aa_data.reset_y_axis;
  92. }
  93. }
  94. }
  95.  
  96. void Resolver::PostFrameStageNotify(ClientFrameStage_t stage)
  97. {
  98. }
  99.  
  100. void Resolver::FireEventClientSide(IGameEvent* event)
  101. {
  102. if (!event)
  103. return;
  104.  
  105. if (strcmp(event->GetName(), "player_connect_full") == 0 || strcmp(event->GetName(), "cs_game_disconnected") == 0)
  106. {
  107. if (event->GetInt("userid") && engine->GetPlayerForUserID(event->GetInt("userid")) != engine->GetLocalPlayer())
  108. return;
  109.  
  110. Resolver::Players.clear();
  111. }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement