diff --git a/src/hacks/CatBot.cpp b/src/hacks/CatBot.cpp index 6cd9cb9f..4acda81e 100644 --- a/src/hacks/CatBot.cpp +++ b/src/hacks/CatBot.cpp @@ -191,8 +191,6 @@ void reportall() patch.Patch(); patched_report = true; } - player_info_s local; - g_IEngine->GetPlayerInfo(g_pLocalPlayer->entity_idx, &local); for (int i = 1; i < g_IEngine->GetMaxClients(); i++) { CachedEntity *ent = ENTITY(i); diff --git a/src/playerlist.cpp b/src/playerlist.cpp index 46c6a675..09b9c9f9 100644 --- a/src/playerlist.cpp +++ b/src/playerlist.cpp @@ -113,18 +113,19 @@ void Load() #if ENABLE_VISUALS rgba_t Color(unsigned steamid) { - if (AccessData(steamid).state == k_EState::DEVELOPER) + const auto &pl = AccessData(steamid); + if (pl.state == k_EState::DEVELOPER) return colors::RainbowCurrent(); - if (AccessData(steamid).state == k_EState::CAT) + else if (pl.state == k_EState::CAT) return colors::RainbowCurrent(); - if (AccessData(steamid).color.a) - { - return AccessData(steamid).color; - } - else - { - return k_Colors[static_cast(AccessData(steamid).state)]; - } + else if (pl.color.a) + return pl.color; + + int state = static_cast(pl.state); + if (state < sizeof(k_Colors) / sizeof(*k_Colors)) + return k_Colors[state]; + + return colors::empty; } rgba_t Color(CachedEntity *player) diff --git a/src/votelogger.cpp b/src/votelogger.cpp index 0e21a078..5e39886d 100644 --- a/src/votelogger.cpp +++ b/src/votelogger.cpp @@ -48,21 +48,20 @@ void dispatchUserMessage(bf_read &buffer, int type) steamID = info.friendsID; if (eid == LOCAL_E->m_IDX) was_local_player = true; - if (*vote_kickn) - if (playerlist::AccessData(info.friendsID).state != playerlist::k_EState::RAGE && playerlist::AccessData(info.friendsID).state != playerlist::k_EState::DEFAULT) - g_IEngine->ClientCmd_Unrestricted("vote option2"); - if (*vote_kicky) - if (playerlist::AccessData(info.friendsID).state == playerlist::k_EState::RAGE || playerlist::AccessData(info.friendsID).state == playerlist::k_EState::DEFAULT) - g_IEngine->ClientCmd_Unrestricted("vote option1"); - if (*party_say) + if (*vote_kickn || *vote_kicky) { - if (g_IEngine->GetPlayerInfo(caller, &info2)) - { - // because tf2 is stupid and doesn't have escape characters, - // use the greek question marks instead. big brain. - // Clang-format why, TODO: Don't use format func - g_IEngine->ExecuteClientCmd(format("say_party [CAT] votekick called: ", boost::replace_all_copy((std::string) info2.name, ";", ";"), " => ", boost::replace_all_copy((std::string) info.name, ";", ";"), " (", reason, ")").c_str()); - } + auto &pl = playerlist::AccessData(info.friendsID); + if (*vote_kickn && pl.state != playerlist::k_EState::RAGE && pl.state != playerlist::k_EState::DEFAULT) + g_IEngine->ClientCmd_Unrestricted("vote option2"); + else if (*vote_kicky && pl.state == playerlist::k_EState::RAGE || pl.state == playerlist::k_EState::DEFAULT) + g_IEngine->ClientCmd_Unrestricted("vote option1"); + } + if (*party_say && g_IEngine->GetPlayerInfo(caller, &info2)) + { + // because tf2 is stupid and doesn't have escape characters, + // use the greek question marks instead. big brain. + // Clang-format why, TODO: Don't use format func + g_IEngine->ExecuteClientCmd(format("say_party [CAT] votekick called: ", boost::replace_all_copy((std::string) info2.name, ";", ";"), " => ", boost::replace_all_copy((std::string) info.name, ";", ";"), " (", reason, ")").c_str()); } logging::Info("Vote called to kick %s [U:1:%u] for %s", name, steamID, reason); break;