Greatly reduce var usage (prevent exceeded child0/1 vars)

This commit is contained in:
ineedbots 2021-05-27 21:40:28 -06:00
parent a77d5f262c
commit 86dbc6c00a
3 changed files with 4414 additions and 4099 deletions

View File

@ -264,12 +264,10 @@ fixDem()
for (i = 0; i < level.bombZones.size; i++) for (i = 0; i < level.bombZones.size; i++)
{ {
bombzone = level.bombZones[i]; if (isDefined(level.bombZones[i].trigger.trigger_off))
level.bombZones[i].bombExploded = true;
if (isDefined(bombzone.trigger.trigger_off))
bombzone.bombExploded = true;
else else
bombzone.bombExploded = undefined; level.bombZones[i].bombExploded = undefined;
} }
wait 0.05; wait 0.05;
@ -306,6 +304,31 @@ fixKoth()
} }
} }
/*
Loop
*/
auditModels_loop()
{
s_models = getEntArray("script_model", "classname");
for (i = s_models.size - 1; i >= 0; i--)
{
model = s_models[i];
if (!isDefined(model))
continue;
if (isDefined(model.bot_audit_model))
continue;
if (model.model == "com_deploy_ballistic_vest_friend_world")
{
model.bot_audit_model = true;
level.vest_boxes[level.vest_boxes.size] = model;
}
}
}
/* /*
Audits all the important models cause iw5 script is kek Audits all the important models cause iw5 script is kek
*/ */
@ -319,23 +342,51 @@ auditModels()
level.vest_boxes = array_removeUndefined(level.vest_boxes); level.vest_boxes = array_removeUndefined(level.vest_boxes);
s_models = getEntArray("script_model", "classname"); auditModels_loop();
}
}
for (i = s_models.size - 1; i >= 0; i--) /*
Loop
*/
watchRadar_loop()
{
for ( i = level.players.size - 1; i >= 0; i-- )
{
player = level.players[i];
player.bot_isInRadar = false;
}
for ( i = level.players.size - 1; i >= 0; i-- )
{
grenade = level.players[i].deployedPortableRadar;
if ( !isDefined( grenade ) )
continue;
if (grenade.model != "weapon_radar")
continue;
for ( h = level.players.size - 1; h >= 0; h-- )
{ {
model = s_models[i]; player = level.players[h];
if (!isDefined(model)) if (!isReallyAlive(player))
continue; continue;
if (isDefined(model.bot_audit_model)) if (isDefined(grenade.owner) && grenade.owner == player)
continue; continue;
if (model.model == "com_deploy_ballistic_vest_friend_world") if(level.teamBased && grenade.team == player.team)
{ continue;
model.bot_audit_model = true;
level.vest_boxes[level.vest_boxes.size] = model; if (player _hasPerk("specialty_coldblooded"))
} continue;
if (DistanceSquared(player.origin, grenade.origin) > 256*256)
continue;
player.bot_isInRadar = true;
} }
} }
} }
@ -349,43 +400,48 @@ watchRadar()
{ {
wait 1; wait 1;
for ( i = level.players.size - 1; i >= 0; i-- ) watchRadar_loop();
{ }
player = level.players[i]; }
player.bot_isInRadar = false;
}
for ( i = level.players.size - 1; i >= 0; i-- ) /*
{ Loop
grenade = level.players[i].deployedPortableRadar; */
watchScrabler_loop()
{
for ( i = level.players.size - 1; i >= 0; i-- )
{
player = level.players[i];
player.bot_isScrambled = false;
}
if ( !isDefined( grenade ) ) for (i = level.scramblers.size - 1; i >= 0; i--)
{
scrambler = level.scramblers[i];
if ( !isDefined( scrambler ) )
continue;
for ( h = level.players.size - 1; h >= 0; h-- )
{
player = level.players[h];
if (!isReallyAlive(player))
continue; continue;
if (grenade.model != "weapon_radar") if (isDefined(scrambler.owner) && scrambler.owner == player)
continue; continue;
for ( h = level.players.size - 1; h >= 0; h-- ) if(level.teamBased && scrambler.team == player.team)
{ continue;
player = level.players[h];
if (!isReallyAlive(player)) if (player _hasPerk("specialty_spygame"))
continue; continue;
if (isDefined(grenade.owner) && grenade.owner == player) if (DistanceSquared(player.origin, scrambler.origin) > 256*256)
continue; continue;
if(level.teamBased && grenade.team == player.team) player.bot_isScrambled = true;
continue;
if (player _hasPerk("specialty_coldblooded"))
continue;
if (DistanceSquared(player.origin, grenade.origin) > 256*256)
continue;
player.bot_isInRadar = true;
}
} }
} }
} }
@ -399,41 +455,29 @@ watchScrabler()
{ {
wait 1; wait 1;
for ( i = level.players.size - 1; i >= 0; i-- ) watchScrabler_loop();
{ }
player = level.players[i]; }
player.bot_isScrambled = false;
}
for (i = level.scramblers.size - 1; i >= 0; i--) /*
{ Loop
scrambler = level.scramblers[i]; */
addNotifyOnAirdrops_loop()
{
dropCrates = getEntArray( "care_package", "targetname" );
if ( !isDefined( scrambler ) ) for (i = dropCrates.size - 1; i >= 0; i--)
continue; {
airdrop = dropCrates[i];
for ( h = level.players.size - 1; h >= 0; h-- ) if (!isDefined(airdrop.owner))
{ continue;
player = level.players[h];
if (!isReallyAlive(player)) if (isDefined(airdrop.doingPhysics))
continue; continue;
if (isDefined(scrambler.owner) && scrambler.owner == player) airdrop.doingPhysics = true;
continue; airdrop thread doNotifyOnAirdrop();
if(level.teamBased && scrambler.team == player.team)
continue;
if (player _hasPerk("specialty_spygame"))
continue;
if (DistanceSquared(player.origin, scrambler.origin) > 256*256)
continue;
player.bot_isScrambled = true;
}
}
} }
} }
@ -445,21 +489,7 @@ addNotifyOnAirdrops()
for (;;) for (;;)
{ {
wait 1; wait 1;
dropCrates = getEntArray( "care_package", "targetname" ); addNotifyOnAirdrops_loop();
for (i = dropCrates.size - 1; i >= 0; i--)
{
airdrop = dropCrates[i];
if (!isDefined(airdrop.owner))
continue;
if (isDefined(airdrop.doingPhysics))
continue;
airdrop.doingPhysics = true;
airdrop thread doNotifyOnAirdrop();
}
} }
} }
@ -564,6 +594,82 @@ add_bot()
} }
} }
/*
Loop
*/
diffBots_loop()
{
var_allies_hard = getDVarInt("bots_skill_allies_hard");
var_allies_med = getDVarInt("bots_skill_allies_med");
var_axis_hard = getDVarInt("bots_skill_axis_hard");
var_axis_med = getDVarInt("bots_skill_axis_med");
var_skill = getDvarInt("bots_skill");
allies_hard = 0;
allies_med = 0;
axis_hard = 0;
axis_med = 0;
if(var_skill == 8)
{
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!isDefined(player.pers["team"]))
continue;
if(!player is_bot())
continue;
if(player.pers["team"] == "axis")
{
if(axis_hard < var_axis_hard)
{
axis_hard++;
player.pers["bots"]["skill"]["base"] = 7;
}
else if(axis_med < var_axis_med)
{
axis_med++;
player.pers["bots"]["skill"]["base"] = 4;
}
else
player.pers["bots"]["skill"]["base"] = 1;
}
else if(player.pers["team"] == "allies")
{
if(allies_hard < var_allies_hard)
{
allies_hard++;
player.pers["bots"]["skill"]["base"] = 7;
}
else if(allies_med < var_allies_med)
{
allies_med++;
player.pers["bots"]["skill"]["base"] = 4;
}
else
player.pers["bots"]["skill"]["base"] = 1;
}
}
}
else if (var_skill != 0 && var_skill != 9)
{
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!player is_bot())
continue;
player.pers["bots"]["skill"]["base"] = var_skill;
}
}
}
/* /*
A server thread for monitoring all bot's difficulty levels for custom server settings. A server thread for monitoring all bot's difficulty levels for custom server settings.
*/ */
@ -573,73 +679,130 @@ diffBots()
{ {
wait 1.5; wait 1.5;
var_allies_hard = getDVarInt("bots_skill_allies_hard"); diffBots_loop();
var_allies_med = getDVarInt("bots_skill_allies_med"); }
var_axis_hard = getDVarInt("bots_skill_axis_hard"); }
var_axis_med = getDVarInt("bots_skill_axis_med");
var_skill = getDvarInt("bots_skill");
allies_hard = 0; /*
allies_med = 0; Loop
axis_hard = 0; */
axis_med = 0; teamBots_loop()
{
teamAmount = getDvarInt("bots_team_amount");
toTeam = getDvar("bots_team");
if(var_skill == 8) alliesbots = 0;
alliesplayers = 0;
axisbots = 0;
axisplayers = 0;
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!isDefined(player.pers["team"]))
continue;
if(player is_bot())
{ {
playercount = level.players.size; if(player.pers["team"] == "allies")
for(i = 0; i < playercount; i++) alliesbots++;
else if(player.pers["team"] == "axis")
axisbots++;
}
else
{
if(player.pers["team"] == "allies")
alliesplayers++;
else if(player.pers["team"] == "axis")
axisplayers++;
}
}
allies = alliesbots;
axis = axisbots;
if(!getDvarInt("bots_team_mode"))
{
allies += alliesplayers;
axis += axisplayers;
}
if(toTeam != "custom")
{
if(getDvarInt("bots_team_force"))
{
if(toTeam == "autoassign")
{ {
player = level.players[i]; if(abs(axis - allies) > 1)
if(!isDefined(player.pers["team"]))
continue;
if(!player is_bot())
continue;
if(player.pers["team"] == "axis")
{ {
if(axis_hard < var_axis_hard) toTeam = "axis";
{ if(axis > allies)
axis_hard++; toTeam = "allies";
player.pers["bots"]["skill"]["base"] = 7;
}
else if(axis_med < var_axis_med)
{
axis_med++;
player.pers["bots"]["skill"]["base"] = 4;
}
else
player.pers["bots"]["skill"]["base"] = 1;
} }
else if(player.pers["team"] == "allies") }
if(toTeam != "autoassign")
{
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{ {
if(allies_hard < var_allies_hard) player = level.players[i];
{
allies_hard++; if(!isDefined(player.pers["team"]))
player.pers["bots"]["skill"]["base"] = 7; continue;
}
else if(allies_med < var_allies_med) if(!player is_bot())
{ continue;
allies_med++;
player.pers["bots"]["skill"]["base"] = 4; if(player.pers["team"] == toTeam)
} continue;
if (toTeam == "allies")
player thread [[level.allies]]();
else if (toTeam == "axis")
player thread [[level.axis]]();
else else
player.pers["bots"]["skill"]["base"] = 1; player thread [[level.spectator]]();
break;
} }
} }
} }
else if (var_skill != 0 && var_skill != 9) }
else
{
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{ {
playercount = level.players.size; player = level.players[i];
for(i = 0; i < playercount; i++)
if(!isDefined(player.pers["team"]))
continue;
if(!player is_bot())
continue;
if(player.pers["team"] == "axis")
{ {
player = level.players[i]; if(axis > teamAmount)
{
if(!player is_bot()) player thread [[level.allies]]();
continue; break;
}
player.pers["bots"]["skill"]["base"] = var_skill; }
else
{
if(axis < teamAmount)
{
player thread [[level.axis]]();
break;
}
else if(player.pers["team"] != "allies")
{
player thread [[level.allies]]();
break;
}
} }
} }
} }
@ -653,124 +816,113 @@ teamBots()
for(;;) for(;;)
{ {
wait 1.5; wait 1.5;
teamAmount = getDvarInt("bots_team_amount"); teamBots_loop();
toTeam = getDvar("bots_team"); }
}
alliesbots = 0; /*
alliesplayers = 0; Loops
axisbots = 0; */
addBots_loop()
{
botsToAdd = GetDvarInt("bots_manage_add");
if(botsToAdd > 0)
{
SetDvar("bots_manage_add", 0);
if(botsToAdd > 64)
botsToAdd = 64;
for(; botsToAdd > 0; botsToAdd--)
{
level add_bot();
wait 0.25;
}
}
fillMode = getDVarInt("bots_manage_fill_mode");
if(fillMode == 2 || fillMode == 3)
setDvar("bots_manage_fill", getGoodMapAmount());
fillAmount = getDvarInt("bots_manage_fill");
players = 0;
bots = 0;
spec = 0;
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(player is_bot())
bots++;
else if(!isDefined(player.pers["team"]) || (player.pers["team"] != "axis" && player.pers["team"] != "allies"))
spec++;
else
players++;
}
if (!randomInt(999))
{
setDvar("testclients_doreload", true);
wait 0.1;
setDvar("testclients_doreload", false);
doExtraCheck();
}
if(fillMode == 4)
{
axisplayers = 0; axisplayers = 0;
alliesplayers = 0;
playercount = level.players.size; playercount = level.players.size;
for(i = 0; i < playercount; i++) for(i = 0; i < playercount; i++)
{ {
player = level.players[i]; player = level.players[i];
if(player is_bot())
continue;
if(!isDefined(player.pers["team"])) if(!isDefined(player.pers["team"]))
continue; continue;
if(player is_bot()) if(player.pers["team"] == "axis")
{ axisplayers++;
if(player.pers["team"] == "allies") else if(player.pers["team"] == "allies")
alliesbots++; alliesplayers++;
else if(player.pers["team"] == "axis") }
axisbots++;
} result = fillAmount - abs(axisplayers - alliesplayers) + bots;
if (players == 0)
{
if(bots < fillAmount)
result = fillAmount-1;
else if (bots > fillAmount)
result = fillAmount+1;
else else
{ result = fillAmount;
if(player.pers["team"] == "allies")
alliesplayers++;
else if(player.pers["team"] == "axis")
axisplayers++;
}
} }
allies = alliesbots; bots = result;
axis = axisbots; }
if(!getDvarInt("bots_team_mode")) amount = bots;
{ if(fillMode == 0 || fillMode == 2)
allies += alliesplayers; amount += players;
axis += axisplayers; if(getDVarInt("bots_manage_fill_spec"))
} amount += spec;
if(toTeam != "custom") if(amount < fillAmount)
{ setDvar("bots_manage_add", 1);
if(getDvarInt("bots_team_force")) else if(amount > fillAmount && getDvarInt("bots_manage_fill_kick"))
{ {
if(toTeam == "autoassign") tempBot = random(getBotArray());
{ if (isDefined(tempBot))
if(abs(axis - allies) > 1) kick(tempBot getEntityNumber());
{
toTeam = "axis";
if(axis > allies)
toTeam = "allies";
}
}
if(toTeam != "autoassign")
{
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!isDefined(player.pers["team"]))
continue;
if(!player is_bot())
continue;
if(player.pers["team"] == toTeam)
continue;
if (toTeam == "allies")
player thread [[level.allies]]();
else if (toTeam == "axis")
player thread [[level.axis]]();
else
player thread [[level.spectator]]();
break;
}
}
}
}
else
{
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!isDefined(player.pers["team"]))
continue;
if(!player is_bot())
continue;
if(player.pers["team"] == "axis")
{
if(axis > teamAmount)
{
player thread [[level.allies]]();
break;
}
}
else
{
if(axis < teamAmount)
{
player thread [[level.axis]]();
break;
}
else if(player.pers["team"] != "allies")
{
player thread [[level.allies]]();
break;
}
}
}
}
} }
} }
@ -787,105 +939,7 @@ addBots()
{ {
wait 1.5; wait 1.5;
botsToAdd = GetDvarInt("bots_manage_add"); addBots_loop();
if(botsToAdd > 0)
{
SetDvar("bots_manage_add", 0);
if(botsToAdd > 64)
botsToAdd = 64;
for(; botsToAdd > 0; botsToAdd--)
{
level add_bot();
wait 0.25;
}
}
fillMode = getDVarInt("bots_manage_fill_mode");
if(fillMode == 2 || fillMode == 3)
setDvar("bots_manage_fill", getGoodMapAmount());
fillAmount = getDvarInt("bots_manage_fill");
players = 0;
bots = 0;
spec = 0;
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(player is_bot())
bots++;
else if(!isDefined(player.pers["team"]) || (player.pers["team"] != "axis" && player.pers["team"] != "allies"))
spec++;
else
players++;
}
if (!randomInt(999))
{
setDvar("testclients_doreload", true);
wait 0.1;
setDvar("testclients_doreload", false);
doExtraCheck();
}
if(fillMode == 4)
{
axisplayers = 0;
alliesplayers = 0;
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(player is_bot())
continue;
if(!isDefined(player.pers["team"]))
continue;
if(player.pers["team"] == "axis")
axisplayers++;
else if(player.pers["team"] == "allies")
alliesplayers++;
}
result = fillAmount - abs(axisplayers - alliesplayers) + bots;
if (players == 0)
{
if(bots < fillAmount)
result = fillAmount-1;
else if (bots > fillAmount)
result = fillAmount+1;
else
result = fillAmount;
}
bots = result;
}
amount = bots;
if(fillMode == 0 || fillMode == 2)
amount += players;
if(getDVarInt("bots_manage_fill_spec"))
amount += spec;
if(amount < fillAmount)
setDvar("bots_manage_add", 1);
else if(amount > fillAmount && getDvarInt("bots_manage_fill_kick"))
{
tempBot = random(getBotArray());
if (isDefined(tempBot))
kick(tempBot getEntityNumber());
}
} }
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff