52#define QuickMenu_Buffer_Set(tag, string) bufstr_set(QuickMenu_Buffer, QuickMenu_Buffer_Size, strcat(tag, string))
53#define QuickMenu_Buffer_Get() bufstr_get(QuickMenu_Buffer, QuickMenu_Buffer_Index)
66#define QUICKMENU_ENTRY_TAG(title, command, tag) QuickMenu_Entry_WithTag(title, command, tag);
68#define QUICKMENU_ENTRY(title, command) QUICKMENU_ENTRY_TAG(title, command, QM_TAG_COMMAND)
71#define QUICKMENU_ENTRY_SPECIAL(title, command) QUICKMENU_ENTRY(title, strcat("\n", command))
117 if (file ==
"" || file ==
"0")
123 if (mode ==
"default")
134 if (file ==
"" || file ==
"0")
135 LOG_INFO(
"No file name is set in hud_panel_quickmenu_file, loading default quickmenu");
140 LOG_INFOF(
"Couldn't open file \"%s\", loading default quickmenu", file);
146 if (mode ==
"default")
154 else if (mode ==
"file")
170 if (argc == 0 ||
argv(0) ==
"")
182 else if (argc == 3 &&
argv(2) ==
"KEEP_OPEN")
193 float teamplayers = 0, without_me = 0;
196 case "ALLPLAYERS_BUT_ME": without_me = 1;
197 case "ALLPLAYERS": teamplayers = 0;
break;
198 case "OWNTEAMPLAYERS_BUT_ME": without_me = 1;
199 case "OWNTEAMPLAYERS": teamplayers = 1;
break;
200 case "ENEMYTEAMPLAYERS": teamplayers = 2;
break;
222 string prev_value =
cvar_string(
"hud_panel_quickmenu_server_is_default");
223 QUICKMENU_ENTRY_SPECIAL(_(
"Standard quick menu"), sprintf(
"hud_panel_quickmenu_server_is_default 0; quickmenu; wait; quickmenu; wait; hud_panel_quickmenu_server_is_default \"%s\"", prev_value))
278 strcpy(z_submenu, submenu);
298 TC(
int, teamplayers);
TC(
bool, without_me);
330 string z_submenu =
strzone(target_submenu);
353 LOG_WARNF(
"Couldn't find submenu \"%s\"", z_submenu);
365 if (z_submenu !=
"" &&
substring(s, 1, -1) == z_submenu)
371 if (entry_num >= first_entry)
388 if (entry_num >= first_entry)
395 if (entry_num >= first_entry)
504 bool key_pressed = bInputType == 0;
525 if (nPrimary ==
K_ESCAPE && key_pressed)
527 else if (nPrimary >=
'0' && nPrimary <=
'9' && key_pressed)
532 string con_keys = findkeysforcommand(
"toggleconsole", 0);
534 for (
int i = 0; i < keys; ++i)
586 entry_pos.y = first_entry_pos + entry_num * fontsize.y;
607 pic =
strcat(
"gfx/hud/default/", option);
608 vector option_size =
'1 1 0' * fontsize.y * 0.8;
609 desc_width -= option_size.x;
611 desc_width -= fontsize.x / 4;
623 if (offset + real_desc_width + extra_offset < desc_width)
624 offset += extra_offset;
626 offset =
max(0, desc_width - real_desc_width);
713 float ON_value = 1, OFF_value = 0;
720 OFF_value = !ON_value;
723 if (value == ON_value)
724 option =
"checkbox_checked";
725 else if (value == OFF_value)
726 option =
"checkbox_empty";
728 option =
"checkbox_undefined";
756#define QUICKMENU_SMENU(submenu, eng_submenu) { \
757 if (target_submenu == eng_submenu && target_submenu_found) \
759 if (QuickMenu_Buffer_Size < QUICKMENU_BUFFER_MAXENTRIES) \
760 QuickMenu_Buffer_Set(QM_TAG_SUBMENU, submenu); \
761 ++QuickMenu_Buffer_Size; \
762 if (target_submenu == eng_submenu && !target_submenu_found) \
764 QuickMenu_Buffer_Size = 0; \
765 target_submenu_found = true; \
769#define QUICKMENU_SMENU_PL(submenu, eng_submenu, command, teamplayers, without_me) { \
770 if (QuickMenu_Buffer_Size + 3 < QUICKMENU_BUFFER_MAXENTRIES) \
772 QUICKMENU_SMENU(submenu, eng_submenu) \
773 QuickMenu_Buffer_Set(QM_TAG_TITLE, strcat(ftos(teamplayers), ftos(without_me))); \
774 ++QuickMenu_Buffer_Size; \
775 QuickMenu_Buffer_Set(QM_TAG_PLCOMMAND, command); \
776 ++QuickMenu_Buffer_Size; \
777 QUICKMENU_SMENU(submenu, eng_submenu) \
784#define QUICKMENU_ENTRY_TC(title, command, text, translated_text) { \
785 if (prvm_language == "en") \
788 tc_cmd = sprintf(command, text); \
790 else if (!autocvar_hud_panel_quickmenu_translatecommands || translated_text == text) \
792 tc_title = strcat("(en)", title); \
793 tc_cmd = sprintf(command, text); \
797 tc_title = strcat("(", prvm_language, ")", title); \
798 tc_cmd = sprintf(command, translated_text); \
800 QUICKMENU_ENTRY(tc_title, tc_cmd) \
805 TC(
int, teamplayers);
TC(
bool, without_me);
832 bool target_submenu_found =
false;
833 if (target_submenu !=
"")
840 QUICKMENU_SMENU_PL(
CTX(_(
"QMCMD^Send public message to")),
"Send public message to",
"commandmode say %s:^7", 0, 1)
843 QUICKMENU_ENTRY_TC(
CTX(_(
"QMCMD^hi / good luck")),
"say %s",
"hi / good luck and have fun",
CTX(_(
"QMCMD^hi / good luck and have fun")))
845 QUICKMENU_ENTRY(
CTX(_(
"QMCMD^Send in English")),
"toggle hud_panel_quickmenu_translatecommands 0 1; quickmenu; wait; quickmenu default Chat")
852 QUICKMENU_ENTRY_TC(
CTX(_(
"QMCMD^free item, icon")),
"say_team %s; g_waypointsprite_team_here_p",
"free item %x^7 (l:%y^7)",
CTX(_(
"QMCMD^free item %x^7 (l:%y^7)")))
853 QUICKMENU_ENTRY_TC(
CTX(_(
"QMCMD^took item, icon")),
"say_team %s; g_waypointsprite_team_here",
"took item (l:%l^7)",
CTX(_(
"QMCMD^took item (l:%l^7)")))
856 QUICKMENU_ENTRY_TC(
CTX(_(
"QMCMD^need help, icon")),
"say_team %s; g_waypointsprite_team_helpme; cmd voice needhelp",
"need help (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)",
CTX(_(
"QMCMD^need help (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)")))
857 QUICKMENU_ENTRY_TC(
CTX(_(
"QMCMD^enemy seen, icon")),
"say_team %s; g_waypointsprite_team_danger_p; cmd voice incoming",
"enemy seen (l:%y^7)",
CTX(_(
"QMCMD^enemy seen (l:%y^7)")))
858 QUICKMENU_ENTRY_TC(
CTX(_(
"QMCMD^flag seen, icon")),
"say_team %s; g_waypointsprite_team_here_p; cmd voice seenflag",
"flag seen (l:%y^7)",
CTX(_(
"QMCMD^flag seen (l:%y^7)")))
859 QUICKMENU_ENTRY_TC(
CTX(_(
"QMCMD^defending, icon")),
"say_team %s; g_waypointsprite_team_here",
"defending (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)",
CTX(_(
"QMCMD^defending (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)")))
860 QUICKMENU_ENTRY_TC(
CTX(_(
"QMCMD^roaming, icon")),
"say_team %s; g_waypointsprite_team_here",
"roaming (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)",
CTX(_(
"QMCMD^roaming (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)")))
861 QUICKMENU_ENTRY_TC(
CTX(_(
"QMCMD^attacking, icon")),
"say_team %s; g_waypointsprite_team_here",
"attacking (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)",
CTX(_(
"QMCMD^attacking (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)")))
862 QUICKMENU_ENTRY_TC(
CTX(_(
"QMCMD^killed flagcarrier, icon")),
"say_team %s; g_waypointsprite_team_here_p",
"killed flagcarrier (l:%y^7)",
CTX(_(
"QMCMD^killed flagcarrier (l:%y^7)")))
863 QUICKMENU_ENTRY_TC(
CTX(_(
"QMCMD^dropped flag, icon")),
"say_team %s; g_waypointsprite_team_here_d",
"dropped flag (l:%d^7)",
CTX(_(
"QMCMD^dropped flag (l:%d^7)")))
864 QUICKMENU_ENTRY_TC(
CTX(_(
"QMCMD^drop weapon, icon")),
"say_team %s; g_waypointsprite_team_here; wait; dropweapon",
"dropped gun %w^7 (l:%l^7)",
CTX(_(
"QMCMD^dropped weapon %w^7 (l:%l^7)")))
865 QUICKMENU_ENTRY_TC(
CTX(_(
"QMCMD^drop flag/key, icon")),
"say_team %s; g_waypointsprite_team_here; wait; use",
"dropped flag/key %w^7 (l:%l^7)",
CTX(_(
"QMCMD^dropped flag/key %w^7 (l:%l^7)")))
869 QUICKMENU_SMENU_PL(
CTX(_(
"QMCMD^Send private message to")),
"Send private message to",
"commandmode tell \"%s^7\"", 0, 1)
874 QUICKMENU_ENTRY(
CTX(_(
"QMCMD^Player models like mine")),
"toggle cl_forceplayermodels")
905 if (
STAT(TIMELIMIT) > 0)
916 string entry_name = _(
"Server quick menu");
918 entry_name = _(
"Waypoint editor menu");
919 QUICKMENU_ENTRY_SPECIAL(entry_name,
"quickmenu; wait; quickmenu \"\" \"\" $_hud_panel_quickmenu_file_from_server")
921 entry_name = _(
"Waypoint editor menu as default");
923 entry_name = _(
"Server quick menu as default");
924 QUICKMENU_ENTRY(entry_name,
"toggle hud_panel_quickmenu_server_is_default")
929 QUICKMENU_SMENU_PL(
CTX(_(
"QMCMD^Spectate a player")),
"Spectate a player",
"spectate \"%s^7\"", 0, 1)
932 if (target_submenu !=
"" && !target_submenu_found)
934 LOG_INFOF(
"Couldn't find submenu \"%s\"", target_submenu);
936 LOG_INFO(
"^3Warning: submenu title must be in English");
940#undef QuickMenu_Buffer_Set
941#undef QuickMenu_Buffer_Get
942#undef QUICKMENU_ENTRY
943#undef QUICKMENU_ENTRY_SPECIAL
944#undef QUICKMENU_SMENU
945#undef QUICKMENU_ENTRY
946#undef QUICKMENU_ENTRY_TC
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
bool HUD_MinigameMenu_IsOpened()
#define drawcolorcodedstring(position, text, scale, alpha, flag)
#define drawpic(position, pic, size, rgb, alpha, flag)
#define drawfill(position, size, rgb, alpha, flag)
void Release_Common_Keys()
int spectatee_status
the -1 disables HUD panels before CSQC receives necessary data
string textShortenToWidth(string theText, float maxWidth, vector theFontSize, textLengthUpToWidth_widthFunction_t tw)
const float DRAWFLAG_NORMAL
const float DRAWFLAG_ADDITIVE
string entcs_GetName(int i)
void HUD_Panel_LoadCvars()
#define HUD_Panel_DrawBg()
#define HUD_Write_Cvar(cvar)
bool autocvar__hud_configure
ERASEABLE string CTX(string s)
spree_inf s1 s2 s3loc s2 s1
strcat(_("^F4Countdown stopped!"), "\n^BG", _("Teams are too unbalanced."))
void Scoreboard_UpdatePlayerTeams()
int scoreboard_ui_enabled
float stringwidth_colors(string s, vector theSize)