ineedbots 6bd638ab00 smol
2021-05-03 23:46:11 -06:00

220 lines
3.9 KiB
C

#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
#include common_scripts\utility;
#include maps\mp\bots\_bot_utility;
init()
{
level thread onBotConnected();
level thread onSomeoneSaid();
level thread onBotSayVar();
level thread watchTeams();
level thread watchBotCrackedClass();
level thread watchBoxmap();
level thread watchNuke();
level thread watchSniper();
}
watchSniper()
{
if (getDvar("bot_sniperCheck") == "")
return;
for (;;)
{
wait 15;
numPlayers = 0;
numSnipers = 0;
for(i = 0; i < level.players.size; i++)
{
player = level.players[i];
if (player is_bot())
continue;
if (!isDefined(player.team))
continue;
numPlayers++;
if (isDefined(player.isSniper) && player.isSniper)
numSnipers++;
}
if (numPlayers > 0)
{
if (numSnipers / numPlayers >= 0.5)
setDvar("bots_sniperLoadout", 1);
else
setDvar("bots_sniperLoadout", 0);
}
}
}
watchNuke()
{
setDvar("scr_spawnpointfavorweight", "");
level waittill( "nuke_death" );
setDvar("scr_spawnpointfavorweight", "499999");
}
watchBoxmap()
{
if (getDvar("mapname") == "iw4_credits")
setDvar("scr_spawnsimple", 1);
else
setDvar("scr_spawnsimple", 0);
}
watchBotCrackedClass()
{
if(getDvar("bot_pvb_helper_customBotClassTeam") == "")
setDvar("bot_pvb_helper_customBotClassTeam", "");
for (;;)
{
level waittill("bot_connected", bot);
bot thread watchBotLoadout();
}
}
watchBotLoadout()
{
self endon("disconnect");
random = randomInt(2);
for (;;)
{
self waittill("bot_giveLoadout");
team = getDvar("bot_pvb_helper_customBotClassTeam");
if (team == "")
continue;
if (self.team != team)
continue;
// clear perks and weapons
self takeAllWeapons();
self.specialty = [];
self _clearPerks();
// give perks
self maps\mp\perks\_perks::givePerk( "specialty_fastreload" );
self maps\mp\perks\_perks::givePerk( "specialty_quickdraw" );
self maps\mp\perks\_perks::givePerk( "specialty_bulletdamage" );
self maps\mp\perks\_perks::givePerk( "specialty_armorpiercing" );
self maps\mp\perks\_perks::givePerk( "specialty_bulletaccuracy" );
self maps\mp\perks\_perks::givePerk( "specialty_holdbreath" );
self maps\mp\perks\_perks::givePerk( "semtex_mp" );
twoStreak = "helicopter_minigun";
if (random)
twoStreak = "ac130";
self maps\mp\gametypes\_class::setKillstreaks( "harrier_airstrike", twoStreak, "nuke" );
// give weapons
self _giveWeapon( "stun_grenade_mp", 0 );
self _giveWeapon( "g18_xmags_mp", 0 );
self _giveWeapon( "rpd_xmags_mp", 0 );
self setSpawnWeapon( "rpd_xmags_mp" );
}
}
watchTeams()
{
if(getDvar("bot_pvb_helper_noPlayersOnTeam") == "")
setDvar("bot_pvb_helper_noPlayersOnTeam", "");
for (;;)
{
wait 1;
if (getDvar("bot_pvb_helper_noPlayersOnTeam") == "")
continue;
team = getDvar("bot_pvb_helper_noPlayersOnTeam");
for(i = 0; i < level.players.size; i++)
{
player = level.players[i];
if (player is_bot())
continue;
if (player.team != team)
continue;
if (team == "axis")
player [[level.allies]]();
else
player [[level.axis]]();
}
}
}
onBotSayVar()
{
SetDvar("bot_say", "");
for (;;)
{
wait 0.05;
toSay = GetDvar("bot_say");
if (toSay == "")
continue;
bot = random(getBotArray());
if (!isDefined(bot))
continue;
SetDvar("bot_say", "");
bot sayall(toSay);
}
}
onSomeoneSaid()
{
for (;;)
{
level waittill("say", string, player);
PrintConsole(player.name + ": ^7" + string + "\n");
}
}
onBotConnected()
{
for (;;)
{
level waittill("bot_connected", bot);
bot thread setBotPing();
}
}
setBotPing()
{
self endon("disconnect");
for (;;)
{
wait 0.05;
self SetPing(randomIntRange(40, 60));
}
}