From 532eb70a474914b815ffca07262652974c4ed25b Mon Sep 17 00:00:00 2001 From: ineed bots Date: Wed, 13 Dec 2023 12:43:34 -0600 Subject: [PATCH] better bot kick logic --- maps/bots/_bot.gsc | 2 +- maps/bots/_bot_utility.gsc | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/maps/bots/_bot.gsc b/maps/bots/_bot.gsc index b942156..afc4c94 100644 --- a/maps/bots/_bot.gsc +++ b/maps/bots/_bot.gsc @@ -483,7 +483,7 @@ addBots_loop() setDvar( "bots_manage_add", 1 ); else if ( amount > fillAmount && getDvarInt( "bots_manage_fill_kick" ) ) { - tempBot = PickRandom( getBotArray() ); + tempBot = getBotToKick(); if ( isDefined( tempBot ) ) BotBuiltinCmdExec( "clientkick " + tempBot getEntityNumber() ); diff --git a/maps/bots/_bot_utility.gsc b/maps/bots/_bot_utility.gsc index 1f4dc37..329d3b5 100644 --- a/maps/bots/_bot_utility.gsc +++ b/maps/bots/_bot_utility.gsc @@ -1168,6 +1168,38 @@ getMapName( map ) return map; } +/* + Returns a bot to be kicked +*/ +getBotToKick() +{ + bots = getBotArray(); + + if ( !isDefined( bots ) || !isDefined( bots.size ) || bots.size <= 0 || !isDefined( bots[0] ) ) + return undefined; + + tokick = undefined; + + // just kick lowest skill + for ( i = 0; i < bots.size; i++ ) + { + bot = bots[i]; + + if ( !isDefined( bot ) ) + continue; + + if ( !isDefined( bot.pers ) || !isDefined( bot.pers["bots"] ) || !isDefined( bot.pers["bots"]["skill"] ) || !isDefined( bot.pers["bots"]["skill"]["base"] ) ) + continue; + + if ( isDefined( tokick ) && bot.pers["bots"]["skill"]["base"] > tokick.pers["bots"]["skill"]["base"] ) + continue; + + tokick = bot; + } + + return tokick; +} + /* Returns an array of all the bots in the game. */