From efe82c27a960d1f7265ae7a1cb9678df5cadb3db Mon Sep 17 00:00:00 2001 From: terencehill Date: Sat, 21 May 2022 01:17:21 +0200 Subject: [PATCH] Fix scoreboard UI input handling, implement team selection in the scoreboard (keyboard only), use it instead of the team selection dialog --- binds-xonotic.cfg | 4 +- commands.cfg | 1 + qcsrc/client/hud/panel/infomessages.qc | 2 +- qcsrc/client/hud/panel/scoreboard.qc | 341 ++++++++++++++++--------- qcsrc/client/hud/panel/scoreboard.qh | 7 +- qcsrc/client/main.qc | 8 + qcsrc/client/view.qc | 5 + qcsrc/menu/xonotic/keybinder.qc | 2 +- qcsrc/server/command/cmd.qc | 2 +- 9 files changed, 241 insertions(+), 131 deletions(-) diff --git a/binds-xonotic.cfg b/binds-xonotic.cfg index 390354b54e..8796d8cddc 100644 --- a/binds-xonotic.cfg +++ b/binds-xonotic.cfg @@ -57,7 +57,7 @@ bind F1 vyes bind F2 vno bind F3 spec bind F4 ready -bind F5 menu_showteamselect +bind F5 scoreboard_team_selection bind F6 team_auto bind F7 menu_showsandboxtools bind F8 "quickmenu" @@ -75,7 +75,7 @@ bind JOY5 "+fire2" bind JOY6 "+fire" bind JOY7 "+zoom" bind JOY8 "dropweapon" -bind JOY9 "menu_showteamselect" +bind JOY9 "scoreboard_team_selection" bind JOY10 "+show_info" bind JOY11 "+showscores" bind JOY12 "+con_chat_maximize" diff --git a/commands.cfg b/commands.cfg index 1e26673d42..51ba1845e3 100644 --- a/commands.cfg +++ b/commands.cfg @@ -149,6 +149,7 @@ alias hud_save "qc_cmd_cl hud save ${* ?}" alias radar "qc_cmd_cl hud radar ${* ?}" alias scoreboard_columns_help "qc_cmd_cl hud scoreboard_columns_help" alias scoreboard_columns_set "qc_cmd_cl hud scoreboard_columns_set ${* ?}" +alias scoreboard_team_selection "_scoreboard_team_selection 1" // ======================================================== diff --git a/qcsrc/client/hud/panel/infomessages.qc b/qcsrc/client/hud/panel/infomessages.qc index 5169ea5f38..554a05a475 100644 --- a/qcsrc/client/hud/panel/infomessages.qc +++ b/qcsrc/client/hud/panel/infomessages.qc @@ -194,7 +194,7 @@ void HUD_InfoMessages() s = strcat(blinkcolor, _("Teamnumbers are unbalanced!")); tm = GetTeam(myteam, false); if (tm && tm.team != NUM_SPECTATOR && tm.team_size == ts_max) - s = strcat(s, sprintf(_(" Press ^3%s%s to adjust"), getcommandkey(_("team menu"), "menu_showteamselect"), blinkcolor)); + s = strcat(s, sprintf(_(" Press ^3%s%s to adjust"), getcommandkey(_("team selection"), "scoreboard_team_selection"), blinkcolor)); InfoMessage(s); } } diff --git a/qcsrc/client/hud/panel/scoreboard.qc b/qcsrc/client/hud/panel/scoreboard.qc index 50555381ed..f1a943c047 100644 --- a/qcsrc/client/hud/panel/scoreboard.qc +++ b/qcsrc/client/hud/panel/scoreboard.qc @@ -165,6 +165,47 @@ string Label_getInfo(string label, int mode) } return label; } + +void HUD_Scoreboard_UI_Disable() +{ + scoreboard_showscores = false; + scoreboard_ui_enabled = 0; + scoreboard_selected_panel = 0; + scoreboard_selected_player = NULL; + scoreboard_selected_team = NULL; + scoreboard_ui_disabled_time = time; +} + +// mode: 0 normal, 1 team selection +void Scoreboard_UI_Enable(int mode) +{ + if (mode == 1) + { + if (scoreboard_ui_enabled == 2 || !teamplay) + return; + // Do not allow reopening the team selection for some time after it has been closed. + // It works around a bug caused by the server sending scoreboard_team_selection every frame + // until client selects a team and joins: scoreboard_team_selection gets executed even + // after client already joined + // For the record, with the menu dialog this workaround is not needed because it takes + // some time to fade away + if (time < scoreboard_ui_disabled_time + 0.5) + return; + scoreboard_ui_enabled = 2; + scoreboard_selected_panel = SB_PANEL_SCOREBOARD; + } + else + { + if (scoreboard_ui_enabled == 1) + return; + scoreboard_ui_enabled = 1; + scoreboard_selected_panel = SB_PANEL_FIRST; + } + scoreboard_selected_player = NULL; + scoreboard_selected_team = NULL; + scoreboard_selected_panel_time = time; +} + int rankings_start_column; int rankings_rows = 0; int rankings_columns = 0; @@ -173,6 +214,9 @@ float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSeconda { string s; + if(!scoreboard_ui_enabled) + return false; + if(bInputType == 3) { mousepos.x = nPrimary; @@ -186,32 +230,13 @@ float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSeconda // at this point bInputType can only be 0 or 1 (key pressed or released) bool key_pressed = (bInputType == 0); - if(scoreboard_ui_enabled) + // ESC to exit (TAB-ESC works too) + if(nPrimary == K_ESCAPE) { - // ESC to exit (TAB-ESC works too) - if(nPrimary == K_ESCAPE) - { - if (!key_pressed) - return true; - scoreboard_showscores = false; - scoreboard_ui_enabled = false; - scoreboard_selected_panel = 0; - scoreboard_selected_player = NULL; + if (!key_pressed) return true; - } - } - else //if(!scoreboard_ui_enabled) - { - // TAB-ESC to enter - if(nPrimary == K_ESCAPE && (hudShiftState & S_TAB)) - { - if (!key_pressed) - return true; - - scoreboard_ui_enabled = true; - scoreboard_selected_panel = SB_PANEL_SCOREBOARD; - scoreboard_selected_panel_time = time; - } + HUD_Scoreboard_UI_Disable(); + return true; } // block any input while a menu dialog is fading @@ -246,13 +271,13 @@ float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSeconda if(nPrimary == K_TAB) hudShiftState -= (hudShiftState & S_TAB); } - if(!scoreboard_ui_enabled) - return false; - if(nPrimary == K_TAB) { if (!key_pressed) return true; + if (scoreboard_ui_enabled == 2) + goto downarrow_action; + ++scoreboard_selected_panel; if (scoreboard_selected_panel == SB_PANEL_RANKINGS && !rankings_cnt) ++scoreboard_selected_panel; @@ -265,56 +290,99 @@ float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSeconda { if (!key_pressed) return true; + LABEL(downarrow_action); if (scoreboard_selected_panel == SB_PANEL_SCOREBOARD) { - entity pl, tm; - entity curr_pl = NULL; - bool scoreboard_selected_player_found = false; - if (!scoreboard_selected_player) - scoreboard_selected_player_found = true; - - for(tm = teams.sort_next; tm; tm = tm.sort_next) + if (scoreboard_ui_enabled == 2) { - if(tm.team != NUM_SPECTATOR) - for(pl = players.sort_next; pl; pl = pl.sort_next) + entity curr_team = NULL; + bool scoreboard_selected_team_found = false; + if (!scoreboard_selected_team) + scoreboard_selected_team_found = true; + + for(entity tm = teams.sort_next; tm; tm = tm.sort_next) { - if(pl.team != tm.team) + if(tm.team == NUM_SPECTATOR) continue; - curr_pl = pl; - if (scoreboard_selected_player_found) - goto ok_done; - if (scoreboard_selected_player == pl) - scoreboard_selected_player_found = true; + curr_team = tm; + if (scoreboard_selected_team_found) + goto ok_team; + if (scoreboard_selected_team == tm) + scoreboard_selected_team_found = true; } + LABEL(ok_team); + if (curr_team == scoreboard_selected_team) // loop reached the last team + curr_team = NULL; + scoreboard_selected_team = curr_team; + } + else + { + entity pl, tm; + entity curr_pl = NULL; + bool scoreboard_selected_player_found = false; + if (!scoreboard_selected_player) + scoreboard_selected_player_found = true; + + for(tm = teams.sort_next; tm; tm = tm.sort_next) + { + if(tm.team != NUM_SPECTATOR) + for(pl = players.sort_next; pl; pl = pl.sort_next) + { + if(pl.team != tm.team) + continue; + curr_pl = pl; + if (scoreboard_selected_player_found) + goto ok_done; + if (scoreboard_selected_player == pl) + scoreboard_selected_player_found = true; + } + } + LABEL(ok_done); + if (curr_pl == scoreboard_selected_player) // loop reached the last player + curr_pl = NULL; + scoreboard_selected_player = curr_pl; } - LABEL(ok_done); - if (curr_pl == scoreboard_selected_player) // loop reached the last player - curr_pl = NULL; - scoreboard_selected_player = curr_pl; } } else if(nPrimary == K_UPARROW) { if (!key_pressed) return true; - entity prev_pl = NULL; if (scoreboard_selected_panel == SB_PANEL_SCOREBOARD) { - entity pl, tm; - for(tm = teams.sort_next; tm; tm = tm.sort_next) + if (scoreboard_ui_enabled == 2) { - if(tm.team != NUM_SPECTATOR) - for(pl = players.sort_next; pl; pl = pl.sort_next) + entity prev_team = NULL; + for(entity tm = teams.sort_next; tm; tm = tm.sort_next) { - if(pl.team != tm.team) + if(tm.team == NUM_SPECTATOR) continue; - if (pl == scoreboard_selected_player) - goto ok_done2; - prev_pl = pl; + if (tm == scoreboard_selected_team) + goto ok_team2; + prev_team = tm; + } + LABEL(ok_team2); + scoreboard_selected_team = prev_team; + } + else + { + entity prev_pl = NULL; + entity pl, tm; + for(tm = teams.sort_next; tm; tm = tm.sort_next) + { + if(tm.team != NUM_SPECTATOR) + for(pl = players.sort_next; pl; pl = pl.sort_next) + { + if(pl.team != tm.team) + continue; + if (pl == scoreboard_selected_player) + goto ok_done2; + prev_pl = pl; + } } + LABEL(ok_done2); + scoreboard_selected_player = prev_pl; } - LABEL(ok_done2); - scoreboard_selected_player = prev_pl; } } else if(nPrimary == K_RIGHTARROW) @@ -337,13 +405,20 @@ float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSeconda return true; if (scoreboard_selected_panel == SB_PANEL_SCOREBOARD) { - if (!scoreboard_selected_player || (hudShiftState & S_SHIFT)) + if (scoreboard_ui_enabled == 2) + { + string team_name; + if (!scoreboard_selected_team || (hudShiftState & S_SHIFT)) + team_name = "auto"; + else + team_name = Static_Team_ColorName(scoreboard_selected_team.team); + localcmd(sprintf("cmd selectteam %s; cmd join", team_name)); + HUD_Scoreboard_UI_Disable(); + } + else if (!scoreboard_selected_player || (hudShiftState & S_SHIFT)) { localcmd("join\n"); - scoreboard_ui_enabled = false; - scoreboard_showscores = false; - scoreboard_selected_panel = 0; - scoreboard_selected_player = NULL; + HUD_Scoreboard_UI_Disable(); } else localcmd(sprintf("spectate %d", scoreboard_selected_player.sv_entnum + 1)); @@ -358,10 +433,7 @@ float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSeconda if (scoreboard_selected_player) { localcmd(sprintf("commandmode tell \"%s^7\"", entcs_GetName(scoreboard_selected_player.sv_entnum))); - scoreboard_ui_enabled = false; - scoreboard_showscores = false; - scoreboard_selected_panel = 0; - scoreboard_selected_player = NULL; + HUD_Scoreboard_UI_Disable(); } } } @@ -1118,10 +1190,10 @@ void Scoreboard_DrawItem(vector item_pos, vector rgb, entity pl, bool is_self, i vector h_pos = item_pos; vector h_size = vec2(panel_size.x, hud_fontsize.y * 1.25); // alternated rows highlighting - if (scoreboard_selected_panel == SB_PANEL_SCOREBOARD) + if (scoreboard_selected_panel == SB_PANEL_SCOREBOARD && scoreboard_ui_enabled == 1) { if (pl == scoreboard_selected_player) - drawfill(h_pos, h_size, rgb, 0.44, DRAWFLAG_NORMAL); + drawfill(h_pos, h_size, rgb, 0.44 * panel_fg_alpha, DRAWFLAG_NORMAL); } else if(is_self) drawfill(h_pos, h_size, rgb, sbt_highlight_alpha_self, DRAWFLAG_NORMAL); @@ -1292,13 +1364,13 @@ vector Scoreboard_DrawOthers(vector item_pos, vector rgb, int this_team, entity } } - if (scoreboard_selected_panel == SB_PANEL_SCOREBOARD) + if (scoreboard_selected_panel == SB_PANEL_SCOREBOARD && scoreboard_ui_enabled == 1) { if (pl == scoreboard_selected_player) { h_size.x = column_width + hud_fontsize.x * 0.25; h_size.y = hud_fontsize.y; - drawfill(pos - hud_fontsize.x * 0.25 * eX, h_size, rgb, 0.44, DRAWFLAG_NORMAL); + drawfill(pos - hud_fontsize.x * 0.25 * eX, h_size, rgb, 0.44 * panel_fg_alpha, DRAWFLAG_NORMAL); } } @@ -1425,8 +1497,13 @@ vector Scoreboard_MakeTable(vector pos, entity tm, vector rgb, vector bg_size) if (scoreboard_selected_panel == SB_PANEL_SCOREBOARD) { - float fade = max(0, (1 - (time - scoreboard_selected_panel_time) * 2)); - drawfill(scoreboard_selected_hl_pos, scoreboard_selected_hl_size, '1 1 1', fade * 0.3, DRAWFLAG_NORMAL); + if (scoreboard_ui_enabled == 1 || (tm && scoreboard_selected_team == tm)) + { + float _alpha = (scoreboard_ui_enabled == 2) ? 0.2 : 0.3 * max(0, (1 - (time - scoreboard_selected_panel_time) * 2)); + _alpha *= panel_fg_alpha; + if (_alpha) + drawfill(scoreboard_selected_hl_pos, scoreboard_selected_hl_size, '1 1 1', _alpha, DRAWFLAG_NORMAL); + } } panel_size.x += panel_bg_padding * 2; // restore initial width @@ -2118,72 +2195,86 @@ void Scoreboard_Draw() // Game Info: Game Type str = MapInfo_Type_ToText(gametype); + if (scoreboard_ui_enabled == 2) + { + if (scoreboard_selected_team) + str = sprintf(_("^7Press ^3%s ^7to join the selected team"), getcommandkey(_("jump"), "+jump")); + else + str = sprintf(_("^7Press ^3%s ^7to join 'best' team (auto-select)"), getcommandkey(_("jump"), "+jump")); + } draw_beginBoldFont(); drawcolorcodedstring(pos + '0.5 0 0' * (panel_size.x - stringwidth(str, true, sb_gameinfo_type_fontsize)), str, sb_gameinfo_type_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL); draw_endBoldFont(); + pos.y += sb_gameinfo_type_fontsize.y; // Game Info: Game Detail - float tl = STAT(TIMELIMIT); - float fl = STAT(FRAGLIMIT); - float ll = STAT(LEADLIMIT); - float ll_and_fl = STAT(LEADLIMIT_AND_FRAGLIMIT); - str = ""; - if(tl > 0) - str = strcat(str, sprintf(_("^3%1.0f minutes"), tl)); - if(!gametype.m_hidelimits) - { - if(fl > 0) - { - if(tl > 0) - str = strcat(str, "^7 / "); // delimiter - if(teamplay) - { - str = strcat(str, sprintf(_("^5%s %s"), ScoreString(teamscores_flags(ts_primary), fl), - (teamscores_label(ts_primary) == "score") ? CTX(_("SCO^points")) : - (teamscores_label(ts_primary) == "fastest") ? "" : - TranslateScoresLabel(teamscores_label(ts_primary)))); - } - else - { - str = strcat(str, sprintf(_("^5%s %s"), ScoreString(scores_flags(ps_primary), fl), - (scores_label(ps_primary) == "score") ? CTX(_("SCO^points")) : - (scores_label(ps_primary) == "fastest") ? "" : - TranslateScoresLabel(scores_label(ps_primary)))); - } - } - if(ll > 0) + if (scoreboard_ui_enabled == 2) + { + str = sprintf(_("^7Press ^3%s ^7to select a specific team"), translate_key("TAB")); + drawcolorcodedstring(pos + '0.5 0 0' * (panel_size.x - stringwidth(str, true, sb_gameinfo_detail_fontsize)), str, sb_gameinfo_detail_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL); + } + else + { + float tl = STAT(TIMELIMIT); + float fl = STAT(FRAGLIMIT); + float ll = STAT(LEADLIMIT); + float ll_and_fl = STAT(LEADLIMIT_AND_FRAGLIMIT); + str = ""; + if(tl > 0) + str = strcat(str, sprintf(_("^3%1.0f minutes"), tl)); + if(!gametype.m_hidelimits) { - if(tl > 0 || fl > 0) + if(fl > 0) { - // delimiter - if (ll_and_fl && fl > 0) - str = strcat(str, "^7 & "); + if(tl > 0) + str = strcat(str, "^7 / "); // delimiter + if(teamplay) + { + str = strcat(str, sprintf(_("^5%s %s"), ScoreString(teamscores_flags(ts_primary), fl), + (teamscores_label(ts_primary) == "score") ? CTX(_("SCO^points")) : + (teamscores_label(ts_primary) == "fastest") ? "" : + TranslateScoresLabel(teamscores_label(ts_primary)))); + } else - str = strcat(str, "^7 / "); + { + str = strcat(str, sprintf(_("^5%s %s"), ScoreString(scores_flags(ps_primary), fl), + (scores_label(ps_primary) == "score") ? CTX(_("SCO^points")) : + (scores_label(ps_primary) == "fastest") ? "" : + TranslateScoresLabel(scores_label(ps_primary)))); + } } - - if(teamplay) + if(ll > 0) { - str = strcat(str, sprintf(_("^2+%s %s"), ScoreString(teamscores_flags(ts_primary), ll), - (teamscores_label(ts_primary) == "score") ? CTX(_("SCO^points")) : - (teamscores_label(ts_primary) == "fastest") ? "" : - TranslateScoresLabel(teamscores_label(ts_primary)))); - } - else - { - str = strcat(str, sprintf(_("^2+%s %s"), ScoreString(scores_flags(ps_primary), ll), - (scores_label(ps_primary) == "score") ? CTX(_("SCO^points")) : - (scores_label(ps_primary) == "fastest") ? "" : - TranslateScoresLabel(scores_label(ps_primary)))); + if(tl > 0 || fl > 0) + { + // delimiter + if (ll_and_fl && fl > 0) + str = strcat(str, "^7 & "); + else + str = strcat(str, "^7 / "); + } + + if(teamplay) + { + str = strcat(str, sprintf(_("^2+%s %s"), ScoreString(teamscores_flags(ts_primary), ll), + (teamscores_label(ts_primary) == "score") ? CTX(_("SCO^points")) : + (teamscores_label(ts_primary) == "fastest") ? "" : + TranslateScoresLabel(teamscores_label(ts_primary)))); + } + else + { + str = strcat(str, sprintf(_("^2+%s %s"), ScoreString(scores_flags(ps_primary), ll), + (scores_label(ps_primary) == "score") ? CTX(_("SCO^points")) : + (scores_label(ps_primary) == "fastest") ? "" : + TranslateScoresLabel(scores_label(ps_primary)))); + } } } + drawcolorcodedstring(pos + '1 0 0' * (panel_size.x - stringwidth(str, true, sb_gameinfo_detail_fontsize)), str, sb_gameinfo_detail_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL); // align right + // map name + str = sprintf(_("^7Map: ^2%s"), shortmapname); + drawcolorcodedstring(pos, str, sb_gameinfo_detail_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL); // align left } - - pos.y += sb_gameinfo_type_fontsize.y; - drawcolorcodedstring(pos + '1 0 0' * (panel_size.x - stringwidth(str, true, sb_gameinfo_detail_fontsize)), str, sb_gameinfo_detail_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL); // align right - // map name - str = sprintf(_("^7Map: ^2%s"), shortmapname); - drawcolorcodedstring(pos, str, sb_gameinfo_detail_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL); // align left // End of Game Info Section pos.y += sb_gameinfo_detail_fontsize.y + hud_fontsize.y * 0.3; // space between Game Info Section and score table diff --git a/qcsrc/client/hud/panel/scoreboard.qh b/qcsrc/client/hud/panel/scoreboard.qh index 2b43dcfa3a..8e01c6a669 100644 --- a/qcsrc/client/hud/panel/scoreboard.qh +++ b/qcsrc/client/hud/panel/scoreboard.qh @@ -23,15 +23,20 @@ void Scoreboard_UpdatePlayerTeams(); void Scoreboard_UpdatePlayerPos(entity pl); void Scoreboard_UpdateTeamPos(entity Team); bool Scoreboard_WouldDraw(); +void Scoreboard_UI_Enable(int mode); -bool scoreboard_ui_enabled; +int scoreboard_ui_enabled; +float scoreboard_ui_disabled_time; +bool autocvar__scoreboard_team_selection; float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSecondary); int scoreboard_selected_panel; float scoreboard_selected_panel_time; entity scoreboard_selected_player; +entity scoreboard_selected_team; // start from 1 +int SB_PANEL_FIRST = 1; int SB_PANEL_SCOREBOARD = 1; int SB_PANEL_RANKINGS = 2; int SB_PANEL_MAX = 2; diff --git a/qcsrc/client/main.qc b/qcsrc/client/main.qc index bf34cce82f..0e5b4b5e10 100644 --- a/qcsrc/client/main.qc +++ b/qcsrc/client/main.qc @@ -486,15 +486,23 @@ float CSQC_InputEvent(int bInputType, float nPrimary, float nSecondary) if(nPrimary == K_ALT) hudShiftState |= S_ALT; if(nPrimary == K_CTRL) hudShiftState |= S_CTRL; if(nPrimary == K_SHIFT) hudShiftState |= S_SHIFT; + if(nPrimary == K_TAB) hudShiftState |= S_TAB; } else { if(nPrimary == K_ALT) hudShiftState -= (hudShiftState & S_ALT); if(nPrimary == K_CTRL) hudShiftState -= (hudShiftState & S_CTRL); if(nPrimary == K_SHIFT) hudShiftState -= (hudShiftState & S_SHIFT); + if(nPrimary == K_TAB) hudShiftState -= (hudShiftState & S_TAB); } + // NOTE: Shift-Escape must be filtered out because it's the hardcoded console shortcut if (nPrimary == K_ESCAPE && !(hudShiftState & S_SHIFT) && key_pressed) { + if (hudShiftState & S_TAB) + { + Scoreboard_UI_Enable(0); + return true; + } if (!isdemo() && cvar("_menu_gamemenu_dialog_available")) { localcmd("\nmenu_showgamemenudialog\n"); diff --git a/qcsrc/client/view.qc b/qcsrc/client/view.qc index 855d20f818..cd36c1000e 100644 --- a/qcsrc/client/view.qc +++ b/qcsrc/client/view.qc @@ -1705,6 +1705,11 @@ void CSQC_UpdateView(entity this, float w, float h) Debug_Draw(); #endif + if (autocvar__scoreboard_team_selection) + { + Scoreboard_UI_Enable(1); + cvar_set("_scoreboard_team_selection", "0"); + } scoreboard_active = Scoreboard_WouldDraw(); HUD_Draw(this); // this parameter for deep vehicle function diff --git a/qcsrc/menu/xonotic/keybinder.qc b/qcsrc/menu/xonotic/keybinder.qc index c76af8ceed..abaac73094 100644 --- a/qcsrc/menu/xonotic/keybinder.qc +++ b/qcsrc/menu/xonotic/keybinder.qc @@ -111,7 +111,7 @@ void KeyBinds_BuildList() KEYBIND_HEADER(_("Teamplay")); KEYBIND_DEF("team_auto" , _("auto-join team")); - KEYBIND_DEF("menu_showteamselect" , _("team menu")); + KEYBIND_DEF("scoreboard_team_selection" , _("team selection")); KEYBIND_DEF("spec" , _("spectate")); KEYBIND_EMPTY_LINE(); diff --git a/qcsrc/server/command/cmd.qc b/qcsrc/server/command/cmd.qc index 9feb068a81..0ffd87e866 100644 --- a/qcsrc/server/command/cmd.qc +++ b/qcsrc/server/command/cmd.qc @@ -114,7 +114,7 @@ void ClientCommand_clientversion(entity caller, int request, int argc) // inter else if (teamplay && !autocvar_sv_spectate && !(Player_GetForcedTeamIndex(caller) > 0)) { TRANSMUTE(Observer, caller); // really? - stuffcmd(caller, "menu_showteamselect\n"); + stuffcmd(caller, "scoreboard_team_selection\n"); } } -- 2.39.2