This commit is contained in:
Your Name 2020-09-15 15:02:36 -06:00
parent 97695ff88c
commit ecb0c7f202
2 changed files with 403 additions and 16 deletions

View File

@ -5,9 +5,6 @@
init()
{
if (getDvar("bots_main_fun") == "")
setDvar("bots_main_fun", false);
if (getDvar("bots_main_menu") == "")
setDvar("bots_main_menu", true);
@ -90,6 +87,9 @@ watchDisconnect()
if(isDefined(self.Menu["X"]["Scroller"]))
self.Menu["X"]["Scroller"] destroy();
}
if (isDefined(self.menuVersionHud))
self.menuVersionHud destroy();
}
}
@ -129,7 +129,7 @@ watchPlayerOpenMenu()
else
{
self ExitMenu();
if((!gameFlag( "prematch_done" ) || level.gameEnded) && !getDvarInt("bots_main_fun"))
if(!gameFlag( "prematch_done" ) || level.gameEnded)
self freezeControls(true);
else
self freezecontrols(false);
@ -273,6 +273,9 @@ OpenSub(menu, menu2)
self.Menu["X"]["Scroller"] destroy();
}
if (isDefined(self.menuVersionHud))
self.menuVersionHud destroy();
for(i=0 ; i < self.Option["Name"][self.SubMenu].size ; i++)
{
self.MenuText[i] = self createfontstring("default", 1.6);
@ -299,6 +302,9 @@ OpenSub(menu, menu2)
self.Menu["X"]["Scroller"] = self createRectangle("CENTER","CENTER", self.MenuText[self.Curs["Main"]["X"]].x,-225,105,22, (1,0,0), -1, 1,"white");
self CursMove("X");
self.menuVersionHud = initHudElem("Bot Warfare " + level.bw_VERSION, 0, 0);
self.MenuOpen = true;
}
else
@ -383,9 +389,9 @@ ShowOptionOn(variable)
self endon("exit");
self endon("bots_kill_menu");
for(;;)
for(time=0;;time+=0.05)
{
if(!getDvarInt("bots_main_fun") && !self isOnGround() && gameFlag( "prematch_done" ) && !level.gameEnded)
if(!self isOnGround() && isAlive(self) && gameFlag( "prematch_done" ) && !level.gameEnded)
self freezecontrols(false);
else
self freezecontrols(true);
@ -399,7 +405,11 @@ ShowOptionOn(variable)
if(isDefined(self.Curs[self.SubMenu][variable]) && isDefined(self.MenuText) && isDefined(self.MenuText[self.Curs[self.SubMenu][variable]]))
{
self.MenuText[self.Curs[self.SubMenu][variable]].fontscale = 2.0;
self.MenuText[self.Curs[self.SubMenu][variable]].color = (randomInt(256)/255, randomInt(256)/255, randomInt(256)/255);
//self.MenuText[self.Curs[self.SubMenu][variable]].color = (randomInt(256)/255, randomInt(256)/255, randomInt(256)/255);
color = (6/255,69/255,173+randomIntRange(-5,5)/255);
if (int(time * 4) % 2)
color = (11/255,0/255,128+randomIntRange(-10,10)/255);
self.MenuText[self.Curs[self.SubMenu][variable]].color = color;
}
if(isDefined(self.MenuText))
@ -416,7 +426,11 @@ ShowOptionOn(variable)
if(isDefined(self.Curs[self.SubMenu][variable]) && isDefined(self.MenuTextY) && isDefined(self.MenuTextY[self.Curs[self.SubMenu][variable]]))
{
self.MenuTextY[self.Curs[self.SubMenu][variable]].fontscale = 2.0;
self.MenuTextY[self.Curs[self.SubMenu][variable]].color = (randomInt(256)/255, randomInt(256)/255, randomInt(256)/255);
//self.MenuTextY[self.Curs[self.SubMenu][variable]].color = (randomInt(256)/255, randomInt(256)/255, randomInt(256)/255);
color = (6/255,69/255,173+randomIntRange(-5,5)/255);
if (int(time * 4) % 2)
color = (11/255,0/255,128+randomIntRange(-10,10)/255);
self.MenuTextY[self.Curs[self.SubMenu][variable]].color = color;
}
if(isDefined(self.MenuTextY))
@ -477,6 +491,9 @@ ExitMenu()
self.Menu["X"]["Scroller"] destroy();
}
if (isDefined(self.menuVersionHud))
self.menuVersionHud destroy();
self.MenuOpen = false;
self notify("exit");
@ -484,6 +501,28 @@ ExitMenu()
self setClientDvar( "sc_blur", "2" );
}
initHudElem(txt, xl, yl)
{
hud = NewClientHudElem( self );
hud setText(txt);
hud.alignX = "center";
hud.alignY = "bottom";
hud.horzAlign = "center";
hud.vertAlign = "bottom";
hud.x = xl;
hud.y = yl;
hud.foreground = true;
hud.fontScale = 1;
hud.font = "objective";
hud.alpha = 1;
hud.glow = 0;
hud.glowColor = ( 0, 0, 0 );
hud.glowAlpha = 1;
hud.color = ( 1.0, 1.0, 1.0 );
return hud;
}
createRectangle(align,relative,x,y,width,height,color,sort,alpha,shader)
{
barElemBG = newClientHudElem( self );
@ -507,13 +546,363 @@ createRectangle(align,relative,x,y,width,height,color,sort,alpha,shader)
AddOptions()
{
self AddMenu("Main", 0, "test", ::OpenSub, "test", "");
self AddBack("test", "Main");
self AddMenu("Main", 0, "Manage bots", ::OpenSub, "man_bots", "");
self AddBack("man_bots", "Main");
self AddMenu("test", 0, "test", ::test, "test", "test");
_temp = "";
_tempDvar = getDvarInt("bots_manage_add");
self AddMenu("man_bots", 0, "Add 1 bot", ::man_bots, "add", 1 + _tempDvar);
self AddMenu("man_bots", 1, "Add 3 bot", ::man_bots, "add", 3 + _tempDvar);
self AddMenu("man_bots", 2, "Add 7 bot", ::man_bots, "add", 7 + _tempDvar);
self AddMenu("man_bots", 3, "Add 11 bot", ::man_bots, "add", 11 + _tempDvar);
self AddMenu("man_bots", 4, "Add 17 bot", ::man_bots, "add", 17 + _tempDvar);
self AddMenu("man_bots", 5, "Kick a bot", ::man_bots, "kick", 0);
self AddMenu("man_bots", 6, "Kick all bots", ::man_bots, "kick", 1);
_tempDvar = getDvarInt("bots_manage_fill_kick");
if(_tempDvar)
_temp = "true";
else
_temp = "false";
self AddMenu("man_bots", 7, "Toggle auto bot kicking: " + _temp, ::man_bots, "autokick", _tempDvar);
_tempDvar = getDvarInt("bots_manage_fill_mode");
switch(_tempDvar)
{
case 0:
_temp = "everyone";
break;
case 1:
_temp = "just bots";
break;
case 2:
_temp = "everyone, adjust to map";
break;
case 3:
_temp = "just bots, adjust to map";
break;
default:
_temp = "out of range";
break;
}
self AddMenu("man_bots", 8, "Change bot_fill_mode: " + _temp, ::man_bots, "fillmode", _tempDvar);
_tempDvar = getDvarInt("bots_manage_fill");
self AddMenu("man_bots", 9, "Increase bots to keep in-game: " + _tempDvar, ::man_bots, "fillup", _tempDvar);
self AddMenu("man_bots", 10, "Decrease bots to keep in-game: " + _tempDvar, ::man_bots, "filldown", _tempDvar);
_tempDvar = getDvarInt("bots_manage_fill_spec");
if(_tempDvar)
_temp = "true";
else
_temp = "false";
self AddMenu("man_bots", 11, "Count players for fill on spectator: " + _temp, ::man_bots, "fillspec", _tempDvar);
//
self AddMenu("Main", 1, "Teams and difficulty", ::OpenSub, "man_team", "");
self AddBack("man_team", "Main");
_tempDvar = getdvar("bots_team");
self AddMenu("man_team", 0, "Change bot team: "+_tempDvar, ::bot_teams, "team", _tempDvar);
_tempDvar = getDvarInt("bots_team_amount");
self AddMenu("man_team", 1, "Increase bots to be on axis team: "+_tempDvar, ::bot_teams, "teamup", _tempDvar);
self AddMenu("man_team", 2, "Decrease bots to be on axis team: "+_tempDvar, ::bot_teams, "teamdown", _tempDvar);
_tempDvar = getDvarInt("bots_team_force");
if(_tempDvar)
_temp = "true";
else
_temp = "false";
self AddMenu("man_team", 3, "Toggle forcing bots on team: " + _temp, ::bot_teams, "teamforce", _tempDvar);
_tempDvar = getDvarInt("bots_team_mode");
if(_tempDvar)
_temp = "only bots";
else
_temp = "everyone";
self AddMenu("man_team", 4, "Toggle bot_team_bot: " + _temp, ::bot_teams, "teammode", _tempDvar);
_tempDvar = getdvarint("bots_skill");
switch(_tempDvar)
{
case 0:
_temp = "random for all";
break;
case 1:
_temp = "too easy";
break;
case 2:
_temp = "easy";
break;
case 3:
_temp = "easy-medium";
break;
case 4:
_temp = "medium";
break;
case 5:
_temp = "hard";
break;
case 6:
_temp = "very hard";
break;
case 7:
_temp = "hardest";
break;
case 8:
_temp = "custom";
break;
case 9:
_temp = "complete random";
break;
default:
_temp = "out of range";
break;
}
self AddMenu("man_team", 5, "Change bot difficulty: "+_temp, ::bot_teams, "skill", _tempDvar);
_tempDvar = getDvarInt("bots_skill_axis_hard");
self AddMenu("man_team", 6, "Increase amount of hard bots on axis team: " + _tempDvar, ::bot_teams, "axishardup", _tempDvar);
self AddMenu("man_team", 7, "Decrease amount of hard bots on axis team: " + _tempDvar, ::bot_teams, "axisharddown", _tempDvar);
_tempDvar = getDvarInt("bots_skill_axis_med");
self AddMenu("man_team", 8, "Increase amount of med bots on axis team: " + _tempDvar, ::bot_teams, "axismedup", _tempDvar);
self AddMenu("man_team", 9, "Decrease amount of med bots on axis team: " + _tempDvar, ::bot_teams, "axismeddown", _tempDvar);
_tempDvar = getDvarInt("bots_skill_allies_hard");
self AddMenu("man_team", 10, "Increase amount of hard bots on allies team: " + _tempDvar, ::bot_teams, "allieshardup", _tempDvar);
self AddMenu("man_team", 11, "Decrease amount of hard bots on allies team: " + _tempDvar, ::bot_teams, "alliesharddown", _tempDvar);
_tempDvar = getDvarInt("bots_skill_allies_med");
self AddMenu("man_team", 12, "Increase amount of med bots on allies team: " + _tempDvar, ::bot_teams, "alliesmedup", _tempDvar);
self AddMenu("man_team", 13, "Decrease amount of med bots on allies team: " + _tempDvar, ::bot_teams, "alliesmeddown", _tempDvar);
//
self AddMenu("Main", 2, "Bot settings", ::OpenSub, "set1", "");
self AddBack("set1", "Main");
_tempDvar = getDvarInt("bots_loadout_reasonable");
if(_tempDvar)
_temp = "true";
else
_temp = "false";
self AddMenu("set1", 0, "Bots use only good class setups: "+_temp, ::bot_func, "reasonable", _tempDvar);
_tempDvar = getDvarInt("bots_loadout_allow_op");
if(_tempDvar)
_temp = "true";
else
_temp = "false";
self AddMenu("set1", 1, "Bots can use op and annoying class setups: "+_temp, ::bot_func, "op", _tempDvar);
}
test(a, b)
bot_func(a, b)
{
self iprintln(a + b);
switch (a)
{
case "reasonable":
setDvar("bots_loadout_reasonable", !b);
self iPrintln("Bots using reasonable setups: " + !b);
break;
case "op":
setDvar("bots_loadout_allow_op", !b);
self iPrintln("Bots using op setups: " + !b);
break;
}
}
bot_teams(a, b)
{
switch(a)
{
case "team":
switch(b)
{
case "autoassign":
setdvar("bots_team", "allies");
self iPrintlnBold("Changed bot team to allies.");
break;
case "allies":
setdvar("bots_team", "axis");
self iPrintlnBold("Changed bot team to axis.");
break;
case "axis":
setdvar("bots_team", "custom");
self iPrintlnBold("Changed bot team to custom.");
break;
default:
setdvar("bots_team", "autoassign");
self iPrintlnBold("Changed bot team to autoassign.");
break;
}
break;
case "teamup":
setdvar("bots_team_amount", b+1);
self iPrintln((b+1)+" bot(s) will try to be on axis team.");
break;
case "teamdown":
setdvar("bots_team_amount", b-1);
self iPrintln((b-1)+" bot(s) will try to be on axis team.");
break;
case "teamforce":
setDvar("bots_team_force", !b);
self iPrintln("Forcing bots to team: " + !b);
break;
case "teammode":
setDvar("bots_team_mode", !b);
self iPrintln("Only count bots on team: " + !b);
break;
case "skill":
switch(b)
{
case 0:
self iPrintlnBold("Changed bot skill to easy.");
setDvar("bots_skill", 1);
break;
case 1:
self iPrintlnBold("Changed bot skill to easy-med.");
setDvar("bots_skill", 2);
break;
case 2:
self iPrintlnBold("Changed bot skill to medium.");
setDvar("bots_skill", 3);
break;
case 3:
self iPrintlnBold("Changed bot skill to med-hard.");
setDvar("bots_skill", 4);
break;
case 4:
self iPrintlnBold("Changed bot skill to hard.");
setDvar("bots_skill", 5);
break;
case 5:
self iPrintlnBold("Changed bot skill to very hard.");
setDvar("bots_skill", 6);
break;
case 6:
self iPrintlnBold("Changed bot skill to hardest.");
setDvar("bots_skill", 7);
break;
case 7:
self iPrintlnBold("Changed bot skill to custom. Base is easy.");
setDvar("bots_skill", 8);
break;
case 8:
self iPrintlnBold("Changed bot skill to complete random. Takes effect at restart.");
setDvar("bots_skill", 9);
break;
default:
self iPrintlnBold("Changed bot skill to random. Takes effect at restart.");
setDvar("bots_skill", 0);
break;
}
break;
case "axishardup":
setdvar("bots_skill_axis_hard", (b+1));
self iPrintln(((b+1))+" hard bots will be on axis team.");
break;
case "axisharddown":
setdvar("bots_skill_axis_hard", (b-1));
self iPrintln(((b-1))+" hard bots will be on axis team.");
break;
case "axismedup":
setdvar("bots_skill_axis_med", (b+1));
self iPrintln(((b+1))+" med bots will be on axis team.");
break;
case "axismeddown":
setdvar("bots_skill_axis_med", (b-1));
self iPrintln(((b-1))+" med bots will be on axis team.");
break;
case "allieshardup":
setdvar("bots_skill_allies_hard", (b+1));
self iPrintln(((b+1))+" hard bots will be on allies team.");
break;
case "alliesharddown":
setdvar("bots_skill_allies_hard", (b-1));
self iPrintln(((b-1))+" hard bots will be on allies team.");
break;
case "alliesmedup":
setdvar("bots_skill_allies_med", (b+1));
self iPrintln(((b+1))+" med bots will be on allies team.");
break;
case "alliesmeddown":
setdvar("bots_skill_allies_med", (b-1));
self iPrintln(((b-1))+" med bots will be on allies team.");
break;
}
}
man_bots(a, b)
{
switch(a)
{
case "add":
setdvar("bots_manage_add", b);
if(b == 1)
{
self iPrintln("Adding "+b+" bot.");
}
else
{
self iPrintln("Adding "+b+" bots.");
}
break;
case "kick":
result = false;
for (i = 0; i < level.players.size; i++)
{
player = level.players[i];
if(player is_bot())
{
result = true;
kick( player getEntityNumber(), "EXE_PLAYERKICKED" );
if(!b)
break;
}
}
if(!result)
self iPrintln("No bots to kick");
break;
case "autokick":
setDvar("bots_manage_fill_kick", !b);
self iPrintln("Kicking bots when bots_fill is exceeded: " + !b);
break;
case "fillmode":
switch(b)
{
case 0:
setdvar("bots_manage_fill_mode", 1);
self iPrintln("bot_fill will now count only bots.");
break;
case 1:
setdvar("bots_manage_fill_mode", 2);
self iPrintln("bot_fill will now count everyone, adjusting to map.");
break;
case 2:
setdvar("bots_manage_fill_mode", 3);
self iPrintln("bot_fill will now count only bots, adjusting to map.");
break;
default:
setdvar("bots_manage_fill_mode", 0);
self iPrintln("bot_fill will now count everyone.");
break;
}
break;
case "fillup":
setdvar("bots_manage_fill", b+1);
self iPrintln("Increased to maintain "+(b+1)+" bot(s).");
break;
case "filldown":
setdvar("bots_manage_fill", b-1);
self iPrintln("Decreased to maintain "+(b-1)+" bot(s).");
break;
case "fillspec":
setDvar("bots_manage_fill_spec", !b);
self iPrintln("Count players on spectator for bots_fill: " + !b);
break;
}
}

View File

@ -1,11 +1,9 @@
_script:
bomb gamemodes,
unreleased gamemodes
tweak chances of camp and others
_other:
dvars
menu
dvars, loadout, behaviour, menu
code comments
documentation and tutorials
modules (iw4x (http), iw4m1)