bots_loadout_rank bots_loadout_codpoints

This commit is contained in:
INeedBots 2020-12-20 20:49:58 -06:00
parent 8701417d9a
commit 54c2925599
2 changed files with 80 additions and 50 deletions

View File

@ -985,29 +985,41 @@ bot_get_cod_points()
return; return;
} }
players = get_players(); cp_dvar = getDvarInt("bots_loadout_codpoints");
total_points = []; if (cp_dvar == -1)
for ( i = 0; i < players.size; i++ )
{ {
if ( players[i] is_bot() ) players = get_players();
total_points = [];
for ( i = 0; i < players.size; i++ )
{ {
continue; if ( players[i] is_bot() )
{
continue;
}
if(!isDefined(players[i].pers["currencyspent"]) || !isDefined(players[i].pers["codpoints"]))
continue;
total_points[ total_points.size ] = players[i].pers["currencyspent"] + players[i].pers["codpoints"];
} }
if(!isDefined(players[i].pers["currencyspent"]) || !isDefined(players[i].pers["codpoints"])) if( !total_points.size )
continue; {
total_points[ total_points.size ] = Round( random_normal_distribution( 50000, 15000, 0, 100000 ) );
}
total_points[ total_points.size ] = players[i].pers["currencyspent"] + players[i].pers["codpoints"]; point_average = array_average( total_points );
self.pers["bot"][ "cod_points" ] = Int( point_average * RandomFloatRange( 0.6, 0.8 ) );
} }
else if(cp_dvar == 0)
if( !total_points.size )
{ {
total_points[ total_points.size ] = Round( random_normal_distribution( 50000, 15000, 0, 100000 ) ); self.pers["bot"][ "cod_points" ] = Round( random_normal_distribution( 50000, 15000, 0, 100000 ) );
}
else
{
self.pers["bot"][ "cod_points" ] = Round( random_normal_distribution( cp_dvar, 1500, 0, 100000 ) );
} }
point_average = array_average( total_points );
self.pers["bot"][ "cod_points" ] = Int( point_average * RandomFloatRange( 0.6, 0.8 ) );
} }
/* /*
@ -1015,51 +1027,65 @@ bot_get_cod_points()
*/ */
bot_get_rank() bot_get_rank()
{ {
players = get_players(); rank = 1;
rank_dvar = getDvarInt("bots_loadout_rank");
ranks = []; if (rank_dvar == -1)
bot_ranks = [];
human_ranks = [];
for ( i = 0; i < players.size; i++ )
{ {
if ( players[i] == self ) players = get_players();
continue;
if ( !IsDefined( players[i].pers[ "rank" ] ) ) ranks = [];
continue; bot_ranks = [];
human_ranks = [];
if ( players[i] is_bot() ) for ( i = 0; i < players.size; i++ )
{ {
bot_ranks[ bot_ranks.size ] = players[i].pers[ "rank" ]; if ( players[i] == self )
continue;
if ( !IsDefined( players[i].pers[ "rank" ] ) )
continue;
if ( players[i] is_bot() )
{
bot_ranks[ bot_ranks.size ] = players[i].pers[ "rank" ];
}
else if ( !players[i] isdemoclient() )
{
human_ranks[ human_ranks.size ] = players[i].pers[ "rank" ];
}
} }
else if ( !players[i] isdemoclient() )
if( !human_ranks.size )
{ {
human_ranks[ human_ranks.size ] = players[i].pers[ "rank" ]; human_ranks[ human_ranks.size ] = Round( random_normal_distribution( 35, 20, 0, level.maxRank ) );
} }
}
if( !human_ranks.size ) human_avg = array_average( human_ranks );
while ( bot_ranks.size + human_ranks.size < 5 )
{
// add some random ranks for better random number distribution
rank = human_avg + RandomIntRange( -10, 10 );
human_ranks[ human_ranks.size ] = rank;
}
ranks = array_combine( human_ranks, bot_ranks );
avg = array_average( ranks );
s = array_std_deviation( ranks, avg );
rank = Round( random_normal_distribution( avg, s, 0, level.maxRank ) );
}
else if (rank_dvar == 0)
{ {
human_ranks[ human_ranks.size ] = Round( random_normal_distribution( 35, 20, 0, level.maxRank ) ); rank = Round( random_normal_distribution( 35, 20, 0, level.maxRank ) );
} }
else
human_avg = array_average( human_ranks );
while ( bot_ranks.size + human_ranks.size < 5 )
{ {
// add some random ranks for better random number distribution rank = Round( random_normal_distribution( rank_dvar, 5, 0, level.maxRank ) );
rank = human_avg + RandomIntRange( -10, 10 );
human_ranks[ human_ranks.size ] = rank;
} }
ranks = array_combine( human_ranks, bot_ranks );
avg = array_average( ranks );
s = array_std_deviation( ranks, avg );
rank = Int( random_normal_distribution( avg, s, 0, level.maxRank ) );
self.pers["bot"]["rankxp"] = maps\mp\gametypes\_rank::getRankInfoMinXP( rank ); self.pers["bot"]["rankxp"] = maps\mp\gametypes\_rank::getRankInfoMinXP( rank );
} }

View File

@ -47,6 +47,10 @@ init()
setDvar("bots_loadout_reasonable", false); setDvar("bots_loadout_reasonable", false);
if(getDvar("bots_loadout_allow_op") == "")//allows jug, marty and laststand if(getDvar("bots_loadout_allow_op") == "")//allows jug, marty and laststand
setDvar("bots_loadout_allow_op", true); setDvar("bots_loadout_allow_op", true);
if(getDvar("bots_loadout_rank") == "")// what rank the bots should be around, -1 is around the players, 0 is all random
setDvar("bots_loadout_rank", -1);
if(getDvar("bots_loadout_codpoints") == "")// how much cod points a bot should have, -1 is around the players, 0 is all random
setDvar("bots_loadout_codpoints", -1);
level.bots = []; level.bots = [];
level.bot_decoys = []; level.bot_decoys = [];