From 0d39c66c077ba6525a8b5aac43f71f8c53e18c5b Mon Sep 17 00:00:00 2001 From: Samual Lenks Date: Wed, 27 Feb 2013 02:42:30 -0500 Subject: [PATCH] Re-write a bit of how dump_notifications works, no more duped defaults --- qcsrc/common/notifications.qc | 68 +++++++++++++++++++++-------------- qcsrc/common/notifications.qh | 36 ++++++++++--------- 2 files changed, 61 insertions(+), 43 deletions(-) diff --git a/qcsrc/common/notifications.qc b/qcsrc/common/notifications.qc index 9260b5b18..9c3eccca6 100644 --- a/qcsrc/common/notifications.qc +++ b/qcsrc/common/notifications.qc @@ -105,11 +105,18 @@ void Dump_Notifications(float fh, float alsoprint) #define NOTIF_WRITE(a) { \ fputs(fh, a); \ if(alsoprint) { print(a); } } - #define NOTIF_WRITE_SETA(name,default,text) { \ + #define NOTIF_WRITE_ENTITY(name,default,desc,text) { \ notif_msg = \ sprintf( \ - "seta notification_%s %d \"notif string: %s^7\"\n", \ - name, default, strreplace("\{3}", "", strreplace("\n", "\\n", text)) \ + "seta notification_%s %d \"%s\" // notif string: %s\n", \ + name, default, desc, strreplace("\{3}", "", strreplace("\n", "\\n", text)) \ + ); \ + NOTIF_WRITE(notif_msg) } + #define NOTIF_WRITE_HARDCODED(cvar,description) { \ + notif_msg = \ + sprintf( \ + "seta notification_%s %s \"%s\"\n", \ + cvar, cvar_defstring(strcat("notification_", cvar)), description \ ); \ NOTIF_WRITE(notif_msg) } @@ -145,7 +152,7 @@ void Dump_Notifications(float fh, float alsoprint) { e = Get_Notif_Ent(MSG_INFO, i); if not(e) { backtrace("Dump_Notifications(): Missing notification entity!\n"); return; } - NOTIF_WRITE_SETA(e.nent_name, e.nent_default, e.nent_string); + NOTIF_WRITE_ENTITY(e.nent_name, e.nent_default, "Notification control cvar: 0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)", e.nent_string); } NOTIF_WRITE(sprintf("\n// MSG_CENTER notifications (count = %d):\n", NOTIF_CENTER_COUNT)); @@ -153,7 +160,7 @@ void Dump_Notifications(float fh, float alsoprint) { e = Get_Notif_Ent(MSG_CENTER, i); if not(e) { backtrace("Dump_Notifications(): Missing notification entity!\n"); return; } - NOTIF_WRITE_SETA(e.nent_name, e.nent_default, e.nent_string); + NOTIF_WRITE_ENTITY(e.nent_name, e.nent_default, "Notification control cvar: 0 = off, 1 = centerprint", e.nent_string); } NOTIF_WRITE(sprintf("\n// MSG_WEAPON notifications (count = %d):\n", NOTIF_WEAPON_COUNT)); @@ -161,8 +168,12 @@ void Dump_Notifications(float fh, float alsoprint) { e = Get_Notif_Ent(MSG_WEAPON, i); if not(e) { backtrace("Dump_Notifications(): Missing notification entity!\n"); return; } - NOTIF_WRITE_SETA(e.nent_name, e.nent_default, sprintf("infoname: %s, centername: %s", - e.nent_msginfo.nent_name, e.nent_msgcenter.nent_name)); + NOTIF_WRITE_ENTITY(e.nent_name, e.nent_default, "Notification control cvar: 0 = off, 1 = trigger subcalls", + sprintf("%s%s", + (e.nent_msginfo.nent_id ? sprintf("infoname: %s... ", e.nent_msginfo.nent_name) : ""), + (e.nent_msgcenter.nent_id ? sprintf("centername: ", e.nent_msgcenter.nent_name) : "") + ) + ); } NOTIF_WRITE(sprintf("\n// MSG_DEATH notifications (count = %d):\n", NOTIF_DEATH_COUNT)); @@ -170,35 +181,40 @@ void Dump_Notifications(float fh, float alsoprint) { e = Get_Notif_Ent(MSG_DEATH, i); if not(e) { backtrace("Dump_Notifications(): Missing notification entity!\n"); return; } - NOTIF_WRITE_SETA(e.nent_name, e.nent_default, sprintf("infoname: %s, centername: %s", - e.nent_msginfo.nent_name, e.nent_msgcenter.nent_name)); + NOTIF_WRITE_ENTITY(e.nent_name, e.nent_default, "Notification control cvar: 0 = off, 1 = trigger subcalls", + sprintf("%s%s", + (e.nent_msginfo.nent_id ? sprintf("infoname: %s... ", e.nent_msginfo.nent_name) : ""), + (e.nent_msgcenter.nent_id ? sprintf("centername: ", e.nent_msgcenter.nent_name) : "") + ) + ); } // edit these to match whichever cvars are used for specific notification options NOTIF_WRITE("\n// HARD CODED notification variables:\n"); - NOTIF_WRITE("seta notification_allow_chatboxprint 1 \"Allow notifications to be printed to chat box by setting notification cvar to 2 (You can also set this cvar to 2 to force ALL notifications to be printed to the chatbox)\"\n"); - NOTIF_WRITE("seta notification_show_location 0 \"Append location information to MSG_INFO death/kill messages\"\n"); - NOTIF_WRITE("seta notification_show_location_string \"\" \"Replacement string piped into sprintf, so you can do different messages like this: ' at the %s' or ' (near %s)'\"\n"); - NOTIF_WRITE("seta notification_show_sprees 1 \"Print information about sprees in death/kill messages\"\n"); - NOTIF_WRITE("seta notification_show_sprees_center 1 \"Show spree information in MSG_CENTER messages... 0 = off, 1 = target (but only for first victim) and attacker\"\n"); - NOTIF_WRITE("seta notification_show_sprees_center_specialonly 1 \"Don't show spree information in MSG_CENTER messages if it isn't an achievement\"\n"); - NOTIF_WRITE("seta notification_show_sprees_info 3 \"Show spree information in MSG_INFO messages... 0 = off, 1 = target only, 2 = attacker only, 3 = target and attacker\"\n"); - NOTIF_WRITE("seta notification_show_sprees_info_newline 0 \"Show attacker spree information for MSG_INFO messages on a separate line than the death notification itself\"\n"); - NOTIF_WRITE("seta notification_show_sprees_info_specialonly 1 \"Don't show attacker spree information in MSG_INFO messages if it isn't an achievement\"\n"); - NOTIF_WRITE("seta notification_errors_are_fatal 1 \"If a notification fails upon initialization, cause a Host_Error to stop the program\"\n"); - NOTIF_WRITE("seta notification_ctf_pickup_team_verbose 1 \"Show extra information if a team mate picks up a flag\"\n"); - NOTIF_WRITE("seta notification_ctf_pickup_enemy_verbose 1 \"Show extra information if an enemy picks up a flag\"\n"); - NOTIF_WRITE("seta notification_ctf_capture_verbose 1 \"Show extra information when someone captures a flag\"\n"); - NOTIF_WRITE("seta notification_frag_verbose 1 \"Show extra information when you frag someone (or when you are fragged\"\n"); - NOTIF_WRITE("seta notification_lifetime_runtime 0.5 \"Amount of time that notification entities last on the server during runtime (In seconds)\"\n"); - NOTIF_WRITE("seta notification_lifetime_mapload 10 \"Amount of time that notification entities last immediately at mapload (in seconds) to help prevent notifications from being lost on early init (like gamestart countdown)\"\n"); + NOTIF_WRITE_HARDCODED("allow_chatboxprint", "Allow notifications to be printed to chat box by setting notification cvar to 2 (You can also set this cvar to 2 to force ALL notifications to be printed to the chatbox)"); + NOTIF_WRITE_HARDCODED("show_location", "Append location information to MSG_INFO death/kill messages"); + NOTIF_WRITE_HARDCODED("show_location_string", "Replacement string piped into sprintf, so you can do different messages like this: ' at the %s' or ' (near %s)'"); + NOTIF_WRITE_HARDCODED("show_sprees", "Print information about sprees in death/kill messages"); + NOTIF_WRITE_HARDCODED("show_sprees_center", "Show spree information in MSG_CENTER messages... 0 = off, 1 = target (but only for first victim) and attacker"); + NOTIF_WRITE_HARDCODED("show_sprees_center_specialonly", "Don't show spree information in MSG_CENTER messages if it isn't an achievement"); + NOTIF_WRITE_HARDCODED("show_sprees_info", "Show spree information in MSG_INFO messages... 0 = off, 1 = target only, 2 = attacker only, 3 = target and attacker"); + NOTIF_WRITE_HARDCODED("show_sprees_info_newline", "Show attacker spree information for MSG_INFO messages on a separate line than the death notification itself"); + NOTIF_WRITE_HARDCODED("show_sprees_info_specialonly", "Don't show attacker spree information in MSG_INFO messages if it isn't an achievement"); + NOTIF_WRITE_HARDCODED("item_centerprinttime", "How long to show item information centerprint messages (like 'You got the Electro' or such)"); + NOTIF_WRITE_HARDCODED("errors_are_fatal", "If a notification fails upon initialization, cause a Host_Error to stop the program"); + NOTIF_WRITE_HARDCODED("ctf_pickup_team_verbose", "Show extra information if a team mate picks up a flag"); + NOTIF_WRITE_HARDCODED("ctf_pickup_enemy_verbose", "Show extra information if an enemy picks up a flag"); + NOTIF_WRITE_HARDCODED("ctf_capture_verbose", "Show extra information when someone captures a flag"); + NOTIF_WRITE_HARDCODED("frag_verbose", "Show extra information when you frag someone (or when you are fragged"); + NOTIF_WRITE_HARDCODED("lifetime_runtime", "Amount of time that notification entities last on the server during runtime (In seconds)"); + NOTIF_WRITE_HARDCODED("lifetime_mapload", "Amount of time that notification entities last immediately at mapload (in seconds) to help prevent notifications from being lost on early init (like gamestart countdown)"); NOTIF_WRITE(sprintf("\n// Notification counts (total = %d): MSG_INFO = %d, MSG_CENTER = %d, MSG_WEAPON = %d, MSG_DEATH = %d\n", (NOTIF_INFO_COUNT + NOTIF_CENTER_COUNT + NOTIF_WEAPON_COUNT + NOTIF_DEATH_COUNT), NOTIF_INFO_COUNT, NOTIF_CENTER_COUNT, NOTIF_WEAPON_COUNT, NOTIF_DEATH_COUNT)); return; - #undef NOTIF_WRITE_SETA + #undef NOTIF_WRITE_ENTITY #undef NOTIF_WRITE } diff --git a/qcsrc/common/notifications.qh b/qcsrc/common/notifications.qh index 07b93c2b1..d596d2225 100644 --- a/qcsrc/common/notifications.qh +++ b/qcsrc/common/notifications.qh @@ -1047,23 +1047,25 @@ string Process_Notif_Args(float arg_type, string args, string notiftype, string } \ else if(args != "") { notif.nent_args = strzone(Process_Notif_Args(1, args, strtoupper(#type), #name)); } \ \ - /* MSG_INFO only */ \ - if(hudargs != "") \ - { \ - notif.nent_hudargs = strzone(Process_Notif_Args(2, hudargs, strtoupper(#type), #name)); \ - if(icon != "") { notif.nent_icon = strzone(icon); } \ - else { print(sprintf("^1NOTIFICATION HAS HUDARGS BUT NO ICON: ^7net_type = MSG_%s, net_name = %s.\n", strtoupper(#type), #name)); notif_error = TRUE; } \ - } \ - else if(icon != "") { print(sprintf("^1NOTIFICATION HAS ICON BUT NO HUDARGS: ^7net_type = MSG_%s, net_name = %s.\n", strtoupper(#type), #name)); notif_error = TRUE; } \ - \ - /* MSG_CENTER only */ \ - if(durcnt != "") \ - { \ - notif.nent_durcnt = strzone(Process_Notif_Args(3, durcnt, strtoupper(#type), #name)); \ - if(cpid != NO_MSG) { notif.nent_cpid = cpid; } \ - else { print(sprintf("^1NOTIFICATION HAS DURCNT BUT NO CPID: ^7net_type = MSG_%s, net_name = %s.\n", strtoupper(#type), #name)); notif_error = TRUE; } \ - } \ - else if(cpid != NO_MSG) { notif.nent_cpid = cpid; } \ + #ifdef CSQC \ + /* MSG_INFO only */ \ + if(hudargs != "") \ + { \ + notif.nent_hudargs = strzone(Process_Notif_Args(2, hudargs, strtoupper(#type), #name)); \ + if(icon != "") { notif.nent_icon = strzone(icon); } \ + else { print(sprintf("^1NOTIFICATION HAS HUDARGS BUT NO ICON: ^7net_type = MSG_%s, net_name = %s.\n", strtoupper(#type), #name)); notif_error = TRUE; } \ + } \ + else if(icon != "") { print(sprintf("^1NOTIFICATION HAS ICON BUT NO HUDARGS: ^7net_type = MSG_%s, net_name = %s.\n", strtoupper(#type), #name)); notif_error = TRUE; } \ + \ + /* MSG_CENTER only */ \ + if(durcnt != "") \ + { \ + notif.nent_durcnt = strzone(Process_Notif_Args(3, durcnt, strtoupper(#type), #name)); \ + if(cpid != NO_MSG) { notif.nent_cpid = cpid; } \ + else { print(sprintf("^1NOTIFICATION HAS DURCNT BUT NO CPID: ^7net_type = MSG_%s, net_name = %s.\n", strtoupper(#type), #name)); notif_error = TRUE; } \ + } \ + else if(cpid != NO_MSG) { notif.nent_cpid = cpid; } \ + #endif \ \ /* string setup */ \ /* select gentle/normal string and bake color codes in on init, this way it does not need to be re-processed at run time */ \ -- 2.39.2