X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fnotifications.qc;h=c2420d4435ba7bdc7ca4647edcbfb015164ba9eb;hp=58dcdc82e641c9042517f0c132cecb72c79c9ad1;hb=69baf80f2b53994c0181240bd39ad878ac87ca7e;hpb=9d9f334fa8f8a325bd9e74e0b2af01187be8d1df diff --git a/qcsrc/common/notifications.qc b/qcsrc/common/notifications.qc index 58dcdc82e..c2420d443 100644 --- a/qcsrc/common/notifications.qc +++ b/qcsrc/common/notifications.qc @@ -1,6 +1,6 @@ // ================================================ // Unified notification system, written by Samual -// Last updated: June, 2013 +// Last updated: August, 2013 // ================================================ string Get_Notif_TypeName(float net_type) @@ -104,14 +104,19 @@ string Notification_CheckArgs( } case NOTIF_TEAM: + { + if not(teamplay) + { checkargs = sprintf("%sTeamplay not active!", checkargs); } + //else if not(client.team) { checkargs = sprintf("%sNo team provided!", checkargs); } + break; + } + case NOTIF_TEAM_EXCEPT: { - if not(teamplay) { checkargs = sprintf("%sTeamplay not active!", checkargs); } + if not(teamplay) + { checkargs = sprintf("%sTeamplay not active!", checkargs); } else if(IS_NOT_A_CLIENT(client)) - { - if(broadcast == NOTIF_TEAM) { checkargs = sprintf("%sNo client provided!", checkargs); } - else { checkargs = sprintf("%sException can't be a non-client!", checkargs); } - } + { checkargs = sprintf("%sException can't be a non-client!", checkargs); } break; } @@ -448,15 +453,14 @@ void Create_Notification_Entity( float typeid, float nameid, string namestring, - float anncename, - float infoname, - float centername, - float channel, + float strnum, + float flnum, + /* MSG_ANNCE */ + float channel, string snd, float vol, float position, - float strnum, - float flnum, + /* MSG_INFO & MSG_CENTER */ string args, string hudargs, string icon, @@ -464,6 +468,11 @@ void Create_Notification_Entity( string durcnt, string normal, string gentle, + /* MSG_MULTI */ + float anncename, + float infoname, + float centername, + /* MSG_CHOICE */ float challow_def, float challow_var, float chtype, @@ -474,7 +483,6 @@ void Create_Notification_Entity( // Global Entity Setup // ===================== entity notif = spawn(); - string typestring = ""; switch(typeid) { case MSG_ANNCE: @@ -522,12 +530,12 @@ void Create_Notification_Entity( } } notif.nent_default = var_default; - notif.nent_name = strzone(namestring); + notif.nent_enabled = (1 <= var_cvar); notif.nent_type = typeid; notif.nent_id = nameid; - notif.nent_enabled = (1 <= var_cvar); - - typestring = Get_Notif_TypeName(typeid); + notif.nent_name = strzone(namestring); + + string typestring = Get_Notif_TypeName(typeid); // Other pre-notif-setup requisites notif_error = FALSE; @@ -822,7 +830,7 @@ void Create_Notification_Entity( default: { - error(sprintf( + print(sprintf( strcat( "^1NOTIFICATION WITH IMPROPER TYPE: ", "^7net_type = %d, net_name = %s.\n" @@ -839,27 +847,43 @@ void Create_Notification_Entity( notif.nent_stringcount = max(notif.nent_optiona.nent_stringcount, notif.nent_optionb.nent_stringcount); notif.nent_floatcount = max(notif.nent_optiona.nent_floatcount, notif.nent_optionb.nent_floatcount); - #ifdef NOTIFICATIONS_DEBUG + /*#ifdef NOTIFICATIONS_DEBUG Debug_Notification(sprintf( - "Create_Notification_Entity(...): MSG_CHOICE: %s\n" - "^ optiona: %s %s : %d %d\n" - "^ optionb: %s %s : %d %d\n", + "Create_Notification_Entity(...): MSG_CHOICE: %s\n%s\n%s\n", notif.nent_name, - Get_Notif_TypeName(notif.nent_optiona.nent_type), - notif.nent_optiona.nent_name, - notif.nent_optiona.nent_stringcount, - notif.nent_optiona.nent_floatcount, - Get_Notif_TypeName(notif.nent_optiona.nent_type), - notif.nent_optiona.nent_name, - notif.nent_optiona.nent_stringcount, - notif.nent_optiona.nent_floatcount + sprintf( + "^ optiona: %s %s : %d %d", + Get_Notif_TypeName(notif.nent_optiona.nent_type), + notif.nent_optiona.nent_name, + notif.nent_optiona.nent_stringcount, + notif.nent_optiona.nent_floatcount + ), + sprintf( + "^ optionb: %s %s : %d %d", + Get_Notif_TypeName(notif.nent_optionb.nent_type), + notif.nent_optionb.nent_name, + notif.nent_optionb.nent_stringcount, + notif.nent_optionb.nent_floatcount + ) )); - #endif + #endif*/ } break; } - default: print("DAFUQ?\n"); notif_error = TRUE; break; + default: + { + print(sprintf( + strcat( + "^1NOTIFICATION WITH IMPROPER TYPE: ", + "^7net_type = %d, net_name = %s.\n" + ), + typeid, + namestring + )); + notif_error = TRUE; + break; + } } // now check to see if any errors happened @@ -889,8 +913,6 @@ void Notification_GetCvars(void) sprintf("notification_%s", msg_choice_notifs[i].nent_name) ); } - - GetCvars_handleFloat(get_cvars_s, get_cvars_f, FRAG_VERBOSE, "notification_frag_verbose"); } #endif @@ -1017,21 +1039,6 @@ void Dump_Notifications(float fh, float alsoprint) "(You can also set this cvar to 2 to force ALL notifications to be printed to the chatbox)" ); - NOTIF_WRITE_HARDCODED( - "ctf_capture_verbose", "0", - "Show extra information when someone captures a flag" - ); - - NOTIF_WRITE_HARDCODED( - "ctf_pickup_enemy_verbose", "0", - "Show extra information if an enemy picks up a flag" - ); - - NOTIF_WRITE_HARDCODED( - "ctf_pickup_team_verbose", "0", - "Show extra information if a team mate picks up a flag" - ); - NOTIF_WRITE_HARDCODED( "debug", "0", "Print extra debug information on all notification function calls " @@ -1333,7 +1340,8 @@ void Local_Notification_centerprint_generic( MakeConsoleSafe(input), durcnt, f1, f2, - stof(arg_slot[0]), stof(arg_slot[1]) + stof(arg_slot[0]), + stof(arg_slot[1]) )); #endif centerprint_generic(cpid, input, stof(arg_slot[0]), stof(arg_slot[1])); @@ -1342,48 +1350,59 @@ void Local_Notification_centerprint_generic( void Local_Notification(float net_type, float net_name, ...count) { + // check if this should be aborted + if(net_name == NOTIF_ABORT) + { + #ifdef NOTIFICATIONS_DEBUG + Debug_Notification(sprintf( + "Local_Notification(%s, %s, ...);\n", + Get_Notif_TypeName(net_type), + "NOTIF_ABORT" + )); + #endif + return; + } + // check supplied type and name for errors string checkargs = Notification_CheckArgs_TypeName(net_type, net_name); - if(checkargs != "") { backtrace(sprintf("Incorrect usage of Local_Notification: %s\n", checkargs)); return; } - - entity notif = Get_Notif_Ent(net_type, net_name); - if not(notif) { backtrace("Local_Notification: Could not find notification entity!\n"); return; } - if not(notif.nent_enabled) + if(checkargs != "") { #ifdef NOTIFICATIONS_DEBUG Debug_Notification(sprintf( - "Local_Notification(%s, %s): Entity was disabled...\n", + "Local_Notification(%s, %d, ...);\n", Get_Notif_TypeName(net_type), - notif.nent_name + Get_Notif_Ent(net_type, net_name).nent_name )); #endif + backtrace(sprintf("Incorrect usage of Local_Notification: %s\n", checkargs)); return; } - - if((notif.nent_stringcount + notif.nent_floatcount) > count) + + // retreive entity of this notification + entity notif = Get_Notif_Ent(net_type, net_name); + if not(notif) { - backtrace(sprintf( - strcat( - "Not enough arguments for Local_Notification(%s, %s, ...)! ", - "stringcount(%d) + floatcount(%d) > count(%d)\n", - "Check the definition and function call for accuracy...?\n" - ), - Get_Notif_TypeName(net_type), notif.nent_name, - notif.nent_stringcount, notif.nent_floatcount, count + #ifdef NOTIFICATIONS_DEBUG + Debug_Notification(sprintf( + "Local_Notification(%s, %d, ...);\n", + Get_Notif_TypeName(net_type), + net_name )); + #endif + backtrace("Local_Notification: Could not find notification entity!\n"); return; } - else if((notif.nent_stringcount + notif.nent_floatcount) < count) + + // check if the notification is enabled + if not(notif.nent_enabled) { - backtrace(sprintf( - strcat( - "Too many arguments for Local_Notification(%s, %s, ...)! ", - "stringcount(%d) + floatcount(%d) < count(%d)\n", - "Check the definition and function call for accuracy...?\n" - ), - Get_Notif_TypeName(net_type), notif.nent_name, - notif.nent_stringcount, notif.nent_floatcount, count + #ifdef NOTIFICATIONS_DEBUG + Debug_Notification(sprintf( + "Local_Notification(%s, %s, ...): Entity was disabled...\n", + Get_Notif_TypeName(net_type), + notif.nent_name )); + #endif return; } @@ -1406,6 +1425,39 @@ void Local_Notification(float net_type, float net_name, ...count) )); #endif + if((notif.nent_stringcount + notif.nent_floatcount) > count) + { + backtrace(sprintf( + strcat( + "Not enough arguments for Local_Notification(%s, %s, ...)! ", + "stringcount(%d) + floatcount(%d) > count(%d)\n", + "Check the definition and function call for accuracy...?\n" + ), + Get_Notif_TypeName(net_type), + notif.nent_name, + notif.nent_stringcount, + notif.nent_floatcount, + count + )); + return; + } + else if((notif.nent_stringcount + notif.nent_floatcount) < count) + { + backtrace(sprintf( + strcat( + "Too many arguments for Local_Notification(%s, %s, ...)! ", + "stringcount(%d) + floatcount(%d) < count(%d)\n", + "Check the definition and function call for accuracy...?\n" + ), + Get_Notif_TypeName(net_type), + notif.nent_name, + notif.nent_stringcount, + notif.nent_floatcount, + count + )); + return; + } + switch(net_type) { case MSG_ANNCE: @@ -1659,9 +1711,6 @@ void Kill_Notification( float broadcast, entity client, float net_type, float net_name) { - string checkargs = Notification_CheckArgs(broadcast, client, 1, 1); - if(checkargs != "") { backtrace(sprintf("Incorrect usage of Kill_Notification: %s\n", checkargs)); return; } - #ifdef NOTIFICATIONS_DEBUG Debug_Notification(sprintf( "Kill_Notification(%s, '%s', %s, %d);\n", @@ -1671,6 +1720,9 @@ void Kill_Notification( net_name )); #endif + + string checkargs = Notification_CheckArgs(broadcast, client, 1, 1); + if(checkargs != "") { backtrace(sprintf("Incorrect usage of Kill_Notification: %s\n", checkargs)); return; } entity notif, net_notif; float killed_cpid = NO_CPID; @@ -1753,13 +1805,54 @@ void Send_Notification( float net_type, float net_name, ...count) { + // check if this should be aborted + if(net_name == NOTIF_ABORT) + { + #ifdef NOTIFICATIONS_DEBUG + Debug_Notification(sprintf( + "Send_Notification(%s, '%s', %s, %s, ...);\n", + Get_Notif_BroadcastName(broadcast), + client.classname, + Get_Notif_TypeName(net_type), + "NOTIF_ABORT" + )); + #endif + return; + } + // check supplied broadcast, target, type, and name for errors string checkargs = Notification_CheckArgs(broadcast, client, net_type, net_name); - if(checkargs != "") { backtrace(sprintf("Incorrect usage of Send_Notification: %s\n", checkargs)); return; } + if(checkargs != "") + { + #ifdef NOTIFICATIONS_DEBUG + Debug_Notification(sprintf( + "Send_Notification(%s, '%s', %s, %s, ...);\n", + Get_Notif_BroadcastName(broadcast), + client.classname, + Get_Notif_TypeName(net_type), + Get_Notif_Ent(net_type, net_name).nent_name + )); + #endif + backtrace(sprintf("Incorrect usage of Send_Notification: %s\n", checkargs)); + return; + } - // retreive counts for the arguments of this notification + // retreive entity of this notification entity notif = Get_Notif_Ent(net_type, net_name); - if not(notif) { backtrace("Send_Notification: Could not find notification entity!\n"); return; } + if not(notif) + { + #ifdef NOTIFICATIONS_DEBUG + Debug_Notification(sprintf( + "Send_Notification(%s, '%s', %s, %d, ...);\n", + Get_Notif_BroadcastName(broadcast), + client.classname, + Get_Notif_TypeName(net_type), + net_name + )); + #endif + backtrace("Send_Notification: Could not find notification entity!\n"); + return; + } string s1 = ((0 < notif.nent_stringcount) ? ...(0, string) : ""); string s2 = ((1 < notif.nent_stringcount) ? ...(1, string) : ""); @@ -1772,10 +1865,14 @@ void Send_Notification( #ifdef NOTIFICATIONS_DEBUG Debug_Notification(sprintf( - "Send_Notification(%s, %s, %s, %s, %s);\n", - Get_Notif_BroadcastName(broadcast), - Get_Notif_TypeName(net_type), - notif.nent_name, + "Send_Notification(%s, %s, %s);\n", + sprintf( + "%s, '%s', %s, %s", + Get_Notif_BroadcastName(broadcast), + client.classname, + Get_Notif_TypeName(net_type), + notif.nent_name + ), MakeConsoleSafe(sprintf("'%s^7', '%s^7', '%s^7', '%s^7'", s1, s2, s3, s4)), sprintf("%d, %d, %d, %d", f1, f2, f3, f4) )); @@ -1785,13 +1882,25 @@ void Send_Notification( { backtrace(sprintf( strcat( - "Not enough arguments for Send_Notification(%s, %s, %s, ...)! ", + "Not enough arguments for Send_Notification(%s, ...)! ", "stringcount(%d) + floatcount(%d) > count(%d)\n", "Check the definition and function call for accuracy...?\n" ), - Get_Notif_BroadcastName(broadcast), - Get_Notif_TypeName(net_type), notif.nent_name, - notif.nent_stringcount, notif.nent_floatcount, count + sprintf( + #ifdef NOTIFICATIONS_DEBUG + "%s, '%s', %s, %s", + Get_Notif_BroadcastName(broadcast), + #else + "%d, '%s', %s, %s", + broadcast, + #endif + client.classname, + Get_Notif_TypeName(net_type), + notif.nent_name + ), + notif.nent_stringcount, + notif.nent_floatcount, + count )); return; } @@ -1799,13 +1908,25 @@ void Send_Notification( { backtrace(sprintf( strcat( - "Too many arguments for Send_Notification(%s, %s, %s, ...)! ", + "Too many arguments for Send_Notification(%s, ...)! ", "stringcount(%d) + floatcount(%d) < count(%d)\n", "Check the definition and function call for accuracy...?\n" ), - Get_Notif_BroadcastName(broadcast), - Get_Notif_TypeName(net_type), notif.nent_name, - notif.nent_stringcount, notif.nent_floatcount, count + sprintf( + #ifdef NOTIFICATIONS_DEBUG + "%s, '%s', %s, %s", + Get_Notif_BroadcastName(broadcast), + #else + "%d, '%s', %s, %s", + broadcast, + #endif + client.classname, + Get_Notif_TypeName(net_type), + notif.nent_name + ), + notif.nent_stringcount, + notif.nent_floatcount, + count )); return; } @@ -1924,10 +2045,14 @@ void Send_Notification_WOVA( #ifdef NOTIFICATIONS_DEBUG entity notif = Get_Notif_Ent(net_type, net_name); Debug_Notification(sprintf( - "Send_Notification_WOVA(%s, %s, %d, %d, %d, %s, %s);\n", - Get_Notif_BroadcastName(broadcast), - Get_Notif_TypeName(net_type), - notif.nent_name, + "Send_Notification_WOVA(%s, %d, %d, %s, %s);\n", + sprintf( + "%s, '%s', %s, %s", + Get_Notif_BroadcastName(broadcast), + client.classname, + Get_Notif_TypeName(net_type), + notif.nent_name + ), stringcount, floatcount, MakeConsoleSafe(sprintf("'%s^7', '%s^7', '%s^7', '%s^7'", s1, s2, s3, s4)), @@ -1954,10 +2079,14 @@ void Send_Notification_WOCOVA( #ifdef NOTIFICATIONS_DEBUG Debug_Notification(sprintf( - "Send_Notification_WOCOVA(%s, %s, %s, %s, %s);\n", - Get_Notif_BroadcastName(broadcast), - Get_Notif_TypeName(net_type), - notif.nent_name, + "Send_Notification_WOCOVA(%s, %s, %s);\n", + sprintf( + "%s, '%s', %s, %s", + Get_Notif_BroadcastName(broadcast), + client.classname, + Get_Notif_TypeName(net_type), + notif.nent_name + ), MakeConsoleSafe(sprintf("'%s^7', '%s^7', '%s^7', '%s^7'", s1, s2, s3, s4)), sprintf("%d, %d, %d, %d", f1, f2, f3, f4) ));