Advertisement
Guest User

Untitled

a guest
Sep 18th, 2019
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.86 KB | None | 0 0
  1. bool __fastcall hkDispatchUserMessage(void* _this, void* edx, int type, unsigned int a3, unsigned int length, const void* msg_data) {
  2.         static auto oDispatchUserMessage = hlclient_hook.get_original<decltype(&hkDispatchUserMessage)>(index::DispatchUserMessage);
  3.  
  4.         if (!g_EngineClient->IsConnected() || !g_EngineClient->IsInGame())
  5.             return oDispatchUserMessage(g_CHLClient, edx, type, a3, length, msg_data);
  6.  
  7.         static auto msgOnce = false;
  8.    
  9.         switch (type) {
  10.         case CS_UM_VoteStart: {
  11.             int team = -1, vote_t = -1, voting_player = -1;
  12.             const auto localName = g_LocalPlayer->GetPlayerInfo().szName;
  13.             if (!msgOnce) {
  14.                 bf_read data = bf_read(reinterpret_cast<uintptr_t>(msg_data));
  15.                 data.set_offset(1);
  16.                 team = data.read_byte();
  17.  
  18.                 if (team != -1) {
  19.                     data.skip(1);
  20.                     voting_player = data.read_byte();
  21.                     data.skip(1);
  22.                     auto vPlayer = C_BasePlayer::GetPlayerByIndex(voting_player);
  23.  
  24.                     auto msgType = data.read_string();
  25.                     auto message = data.read_string();
  26.                     auto playerToKick = data.read_string();
  27.                     const auto from = vPlayer->GetPlayerInfo().szName;
  28.  
  29.                     if (strstr(message.c_str(), "#SFUI_vote_kick_player_other")) {
  30.                         if (strstr(playerToKick.c_str(), localName)) {
  31.                             Utils::ConsolePrint("player to kick : %p\n", playerToKick.c_str());
  32.                             Utils::ConsolePrint("from : %p\n", from);
  33.  
  34.                             static bool voteType = false;
  35.                             if (!voteType) {
  36.                                 g_EngineClient->ClientCmd_Unrestricted("callvote SwapTeams");
  37.                                 voteType = true;
  38.                             }
  39.                             else {
  40.                                 g_EngineClient->ClientCmd_Unrestricted("callvote ChangeLevel de_inferno");
  41.                                 g_EngineClient->ClientCmd_Unrestricted("callvote ChangeLevel de_mirage");
  42.                                 voteType = false;
  43.                             }
  44.                         }
  45.                     }
  46.                 }
  47.                 msgOnce = true;
  48.             }
  49.             break;
  50.         }
  51.         return oDispatchUserMessage(g_CHLClient, edx, type, a3, length, msg_data);
  52.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement