1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-29 08:30:03 -05:00

Encounter: add game mode voting on servers

Encounter: add voting timer on servers
This commit is contained in:
Jbleezy
2023-03-20 19:10:21 -07:00
parent 0a2bfcf03b
commit 6d17086fc6
2 changed files with 128 additions and 20 deletions

View File

@ -571,7 +571,7 @@
* Added player downed and bled out icons on scoreboard
* Announcer audio always plays
* Last player alive audio only plays for the player who is alive instead of every player on the team
* Added map voting on servers
* Added map and game mode voting on servers
#### Grief
* Gain score by making enemy players bleed out

View File

@ -173,6 +173,8 @@ get_mapname_from_rotation(rotation)
map_vote()
{
level.vote_time = (level.zombie_vars["zombie_intermission_time"] / 2) - 0.25;
level waittill("intermission");
maps = [];
@ -199,7 +201,6 @@ map_vote()
maps[1]["rotation_string"] = "exec zm_grief_" + location + ".cfg map " + level.script;
maps[1]["map_name"] = level.script;
maps[1]["loc_name"] = location;
maps[1]["gametype_name"] = level.scr_zm_ui_gametype_obj;
exclude_locs[exclude_locs.size] = maps[1]["loc_name"];
rotation = undefined;
@ -214,7 +215,6 @@ map_vote()
maps[0]["rotation_string"] = rotation;
maps[0]["map_name"] = get_mapname_from_rotation(rotation);
maps[0]["loc_name"] = get_location_from_rotation(rotation);
maps[0]["gametype_name"] = random(strTok(getDvar("ui_gametype_obj"), " "));
exclude_locs[exclude_locs.size] = maps[0]["loc_name"];
rotation = undefined;
@ -229,7 +229,14 @@ map_vote()
maps[2]["rotation_string"] = rotation;
maps[2]["map_name"] = get_mapname_from_rotation(rotation);
maps[2]["loc_name"] = get_location_from_rotation(rotation);
maps[2]["gametype_name"] = random(strTok(getDvar("ui_gametype_obj"), " "));
gametype_array = array_randomize(strTok(getDvar("ui_gametype_obj"), " "));
maps[1]["gametype_name"] = level.scr_zm_ui_gametype_obj;
arrayRemoveValue(gametype_array, maps[1]["gametype_name"]);
maps[0]["gametype_name"] = gametype_array[0];
maps[2]["gametype_name"] = gametype_array[1];
image_hud = [];
image_hud[0] = create_map_image_hud(get_image_for_loc(maps[0]["map_name"], maps[0]["loc_name"]), -200, 170);
@ -241,11 +248,6 @@ map_vote()
name_hud[1] = create_map_name_hud(get_name_for_loc(maps[1]["loc_name"]), 0, 170);
name_hud[2] = create_map_name_hud(get_name_for_loc(maps[2]["loc_name"]), 200, 170);
gametype_hud = [];
gametype_hud[0] = create_map_gametype_hud(scripts\zm\zgrief\zgrief_reimagined::get_gamemode_display_name(maps[0]["gametype_name"]), -200, 187.5);
gametype_hud[1] = create_map_gametype_hud(scripts\zm\zgrief\zgrief_reimagined::get_gamemode_display_name(maps[1]["gametype_name"]), 0, 187.5);
gametype_hud[2] = create_map_gametype_hud(scripts\zm\zgrief\zgrief_reimagined::get_gamemode_display_name(maps[2]["gametype_name"]), 200, 187.5);
level.map_votes = [];
level.map_votes[0] = 0;
level.map_votes[1] = 0;
@ -256,15 +258,96 @@ map_vote()
level.vote_hud[1] = create_map_vote_hud(0, 205);
level.vote_hud[2] = create_map_vote_hud(200, 205);
vote_timer_hud = create_map_vote_timer_hud(0, 230);
array_thread( get_players(), ::player_choose_map );
level waittill("stop_intermission");
wait level.vote_time;
map_won_ind = get_map_winner();
for (i = 0; i < 3; i++)
{
if (i != map_won_ind)
{
image_hud[i].alpha = 0;
name_hud[i].alpha = 0;
level.vote_hud[i].alpha = 0;
}
}
map_won_ind_x = undefined;
if (map_won_ind != 1)
{
map_won_ind_x = image_hud[map_won_ind].x;
image_hud[map_won_ind] moveOverTime(0.5);
name_hud[map_won_ind] moveOverTime(0.5);
level.vote_hud[map_won_ind] moveOverTime(0.5);
image_hud[map_won_ind].x = 0;
name_hud[map_won_ind].x = 0;
level.vote_hud[map_won_ind].x = 0;
}
players = get_players();
foreach (player in players)
{
player.map_select_hud.alpha = 0;
}
wait 0.5;
for (i = 0; i < 3; i++)
{
if (i != map_won_ind)
{
image_hud[i] setShader(get_image_for_loc(maps[map_won_ind]["map_name"], maps[map_won_ind]["loc_name"]), 175, 100);
name_hud[i] setText(get_name_for_loc(maps[map_won_ind]["loc_name"]));
image_hud[i].alpha = 1;
name_hud[i].alpha = 1;
}
}
if (isDefined(map_won_ind_x))
{
image_hud[map_won_ind].x = map_won_ind_x;
name_hud[map_won_ind].x = map_won_ind_x;
level.vote_hud[map_won_ind].x = map_won_ind_x;
}
for (i = 0; i < level.vote_hud.size; i++)
{
level.map_votes[i] = 0;
level.vote_hud[i] setValue(0);
level.vote_hud[i].alpha = 1;
}
players = get_players();
foreach (player in players)
{
player.map_select_hud.x = 0;
player.map_select_hud.alpha = 1;
player.map_select_ind = 1;
player.map_selected = 0;
}
gametype_hud = [];
gametype_hud[0] = create_map_gametype_hud(scripts\zm\zgrief\zgrief_reimagined::get_gamemode_display_name(maps[0]["gametype_name"]), -200, 187.5);
gametype_hud[1] = create_map_gametype_hud(scripts\zm\zgrief\zgrief_reimagined::get_gamemode_display_name(maps[1]["gametype_name"]), 0, 187.5);
gametype_hud[2] = create_map_gametype_hud(scripts\zm\zgrief\zgrief_reimagined::get_gamemode_display_name(maps[2]["gametype_name"]), 200, 187.5);
vote_timer_hud setTimer(level.vote_time);
level waittill("stop_intermission");
gametype_won_ind = get_map_winner();
for (i = 0; i < 3; i++)
{
if (i != gametype_won_ind)
{
image_hud[i].alpha = 0;
name_hud[i].alpha = 0;
@ -273,19 +356,27 @@ map_vote()
}
}
if (map_won_ind != 1)
if (gametype_won_ind != 1)
{
image_hud[map_won_ind] moveOverTime(0.5);
name_hud[map_won_ind] moveOverTime(0.5);
gametype_hud[map_won_ind] moveOverTime(0.5);
level.vote_hud[map_won_ind] moveOverTime(0.5);
image_hud[gametype_won_ind] moveOverTime(0.5);
name_hud[gametype_won_ind] moveOverTime(0.5);
gametype_hud[gametype_won_ind] moveOverTime(0.5);
level.vote_hud[gametype_won_ind] moveOverTime(0.5);
image_hud[map_won_ind].x = 0;
name_hud[map_won_ind].x = 0;
gametype_hud[map_won_ind].x = 0;
level.vote_hud[map_won_ind].x = 0;
image_hud[gametype_won_ind].x = 0;
name_hud[gametype_won_ind].x = 0;
gametype_hud[gametype_won_ind].x = 0;
level.vote_hud[gametype_won_ind].x = 0;
}
players = get_players();
foreach (player in players)
{
player.map_select_hud.alpha = 0;
}
vote_timer_hud.alpha = 0;
if (map_won_ind == 1)
{
level.map_restart = 1;
@ -295,7 +386,7 @@ map_vote()
makeDvarServerInfo("ui_zm_mapstartlocation", maps[map_won_ind]["loc_name"]);
setDvar("ui_zm_mapstartlocation", maps[map_won_ind]["loc_name"]);
setDvar("ui_gametype_obj_cur", maps[map_won_ind]["gametype_name"]);
setDvar("ui_gametype_obj_cur", maps[gametype_won_ind]["gametype_name"]);
// can only map_restart() from and to added Tranzit maps, others get client field mismatch
added_maps = array("diner", "power", "tunnel", "cornfield");
@ -378,6 +469,23 @@ create_map_vote_hud(x, y)
return hud;
}
create_map_vote_timer_hud(x, y)
{
hud = newHudElem();
hud.x = 0;
hud.y = y;
hud.font = "objective";
hud.fontscale = 1.2;
hud.horzalign = "center";
hud.vertalign = "middle";
hud.alignx = "center";
hud.aligny = "middle";
hud.alpha = 1;
hud setTimer(level.vote_time);
return hud;
}
create_map_select_hud(x, y)
{
hud = newClientHudElem(self);