diff --git a/regamedll/dlls/bot/cs_bot_manager.cpp b/regamedll/dlls/bot/cs_bot_manager.cpp index 963823f8..5f0a3ab6 100644 --- a/regamedll/dlls/bot/cs_bot_manager.cpp +++ b/regamedll/dlls/bot/cs_bot_manager.cpp @@ -900,14 +900,21 @@ void CCSBotManager::MaintainBotQuota() } // attempt to kick a bot from the given team - if (UTIL_KickBotFromTeam(kickTeam)) - return; + bool atLeastOneKicked = UTIL_KickBotFromTeam(kickTeam); - // if there were no bots on the team, kick a bot from the other team - if (kickTeam == TERRORIST) - UTIL_KickBotFromTeam(CT); - else - UTIL_KickBotFromTeam(TERRORIST); + if (!atLeastOneKicked) + { + // if there were no bots on the team, kick a bot from the other team + if (kickTeam == TERRORIST) + atLeastOneKicked = UTIL_KickBotFromTeam(CT); + else + atLeastOneKicked = UTIL_KickBotFromTeam(TERRORIST); + } + + if (atLeastOneKicked) + { + CONSOLE_ECHO("These bots kicked to maintain quota.\n"); + } } else { diff --git a/regamedll/dlls/client.cpp b/regamedll/dlls/client.cpp index a70abf03..fd9fbc0f 100644 --- a/regamedll/dlls/client.cpp +++ b/regamedll/dlls/client.cpp @@ -563,8 +563,16 @@ void ProcessKickVote(CBasePlayer *pVotingPlayer, CBasePlayer *pKickPlayer) if (iVotesNeeded >= int(fKickPercent)) { +#ifdef REGAMEDLL_FIXES + SERVER_COMMAND(UTIL_VarArgs("kick #%d \"You have been voted off.\"\n", iVoteID)); + SERVER_EXECUTE(); +#endif + UTIL_ClientPrintAll(HUD_PRINTCENTER, "#Game_kicked", STRING(pKickPlayer->pev->netname)); + +#ifndef REGAMEDLL_FIXES SERVER_COMMAND(UTIL_VarArgs("kick # %d\n", iVoteID)); +#endif pTempEntity = nullptr; while ((pTempEntity = UTIL_FindEntityByClassname(pTempEntity, "player"))) @@ -1767,17 +1775,26 @@ BOOL EXT_FUNC __API_HOOK(HandleMenu_ChooseTeam)(CBasePlayer *pPlayer, int slot) { team = (RANDOM_LONG(0, 1) == 0) ? TERRORIST : CT; - if (!UTIL_KickBotFromTeam(team)) + bool atLeastOneLeft = UTIL_KickBotFromTeam(team); + + if (!atLeastOneLeft) { // no bots on that team, try the other team = (team == CT) ? TERRORIST : CT; - if (!UTIL_KickBotFromTeam(team)) + atLeastOneLeft = UTIL_KickBotFromTeam(team); + + if (!atLeastOneLeft) { // couldn't kick any bots, fail team = UNASSIGNED; } } + + if (atLeastOneLeft) + { + CONSOLE_ECHO("These bots has left the game to make room for human players.\n"); + } } } @@ -1905,7 +1922,10 @@ BOOL EXT_FUNC __API_HOOK(HandleMenu_ChooseTeam)(CBasePlayer *pPlayer, int slot) if (cv_bot_auto_vacate.value > 0 && !pPlayer->IsBot()) { if (UTIL_KickBotFromTeam(team)) + { + CONSOLE_ECHO("These bots has left the game to make room for human players.\n"); madeRoom = true; + } } if (!madeRoom) diff --git a/regamedll/dlls/hostage/hostage.cpp b/regamedll/dlls/hostage/hostage.cpp index 8276d295..eacb8712 100644 --- a/regamedll/dlls/hostage/hostage.cpp +++ b/regamedll/dlls/hostage/hostage.cpp @@ -854,7 +854,7 @@ void CHostage::ApplyHostagePenalty(CBasePlayer *pAttacker) else if (pAttacker->m_iHostagesKilled >= iHostagePenalty) { #ifdef REGAMEDLL_FIXES - SERVER_COMMAND(UTIL_VarArgs("kick #%d\n", GETPLAYERUSERID(pAttacker->edict()))); + SERVER_COMMAND(UTIL_VarArgs("kick #%d \"For killing too many hostages\"\n", GETPLAYERUSERID(pAttacker->edict()))); #else CLIENT_COMMAND(pAttacker->edict(), "disconnect\n"); #endif diff --git a/regamedll/dlls/multiplay_gamerules.cpp b/regamedll/dlls/multiplay_gamerules.cpp index 6e2b76ab..0ae43dc4 100644 --- a/regamedll/dlls/multiplay_gamerules.cpp +++ b/regamedll/dlls/multiplay_gamerules.cpp @@ -3806,7 +3806,11 @@ void EXT_FUNC CHalfLifeMultiplay::__API_HOOK(PlayerKilled)(CBasePlayer *pVictim, int iUserID = GETPLAYERUSERID(killer->edict()); if (iUserID != -1) { +#ifdef REGAMEDLL_FIXES + SERVER_COMMAND(UTIL_VarArgs("kick #%d \"For killing too many teammates\"\n", iUserID)); +#else SERVER_COMMAND(UTIL_VarArgs("kick # %d\n", iUserID)); +#endif } } diff --git a/regamedll/dlls/player.cpp b/regamedll/dlls/player.cpp index 836443c4..e2372052 100644 --- a/regamedll/dlls/player.cpp +++ b/regamedll/dlls/player.cpp @@ -4244,7 +4244,16 @@ void EXT_FUNC CBasePlayer::__API_HOOK(PreThink)() UTIL_LogPrintf("\"%s<%i><%s><%s>\" triggered \"Game_idle_kick\" (auto)\n", STRING(pev->netname), GETPLAYERUSERID(edict()), GETPLAYERAUTHID(edict()), GetTeam(m_iTeam)); UTIL_ClientPrintAll(HUD_PRINTCONSOLE, "#Game_idle_kick", STRING(pev->netname)); +#ifdef REGAMEDLL_FIXES + int iUserID = GETPLAYERUSERID(edict()); + if (iUserID != -1) + { + SERVER_COMMAND(UTIL_VarArgs("kick #%d \"Player idle\"\n", iUserID)); + } +#else SERVER_COMMAND(UTIL_VarArgs("kick \"%s\"\n", STRING(pev->netname))); +#endif // #ifdef REGAMEDLL_FIXES + m_fLastMovement = gpGlobals->time; } }