12#define BOLD_OPERATOR "^BOLD"
27 CASE(MSG, CENTER_KILL)
34 case MSG_ANNCE:
return "MSG_ANNCE";
35 case MSG_INFO:
return "MSG_INFO";
36 case MSG_CENTER:
return "MSG_CENTER";
37 case MSG_MULTI:
return "MSG_MULTI";
38 case MSG_CHOICE:
return "MSG_CHOICE";
39 case MSG_CENTER_KILL:
return "MSG_CENTER_KILL";
46 CASE(CPID, ASSAULT_ROLE)
49 CASE(CPID, CTF_CAPSHIELD)
50 CASE(CPID, CTF_LOWPRIO)
57 CASE(CPID, PREVENT_JOIN)
59 CASE(CPID, KEEPAWAY_WARN)
61 CASE(CPID, KEYHUNT_OTHER)
63 CASE(CPID, MISSING_PLAYERS)
64 CASE(CPID, INSTAGIB_FINDAMMO)
67 CASE(CPID, ONS_CAPSHIELD)
70 CASE(CPID, RACE_FINISHLAP)
72 CASE(CPID, TEAMCHANGE)
76 CASE(CPID, VEHICLES_OTHER)
84#define APP_TEAM_NUM(num, prefix) ((num == NUM_TEAM_1) ? prefix##_RED : ((num == NUM_TEAM_2) ? prefix##_BLUE : ((num == NUM_TEAM_3) ? prefix##_YELLOW : prefix##_PINK)))
85#define APP_NUM(num, prefix) ((num) ? APP_TEAM_NUM(num, prefix) : prefix##_NEUTRAL)
87#define EIGHT_VARS_TO_VARARGS_VARLIST \
89 VARITEM(2, 0, XPD(s1, s2)) \
90 VARITEM(3, 0, XPD(s1, s2, s3)) \
91 VARITEM(4, 0, XPD(s1, s2, s3, s4)) \
93 VARITEM(1, 1, XPD(s1, f1)) \
94 VARITEM(2, 1, XPD(s1, s2, f1)) \
95 VARITEM(3, 1, XPD(s1, s2, s3, f1)) \
96 VARITEM(4, 1, XPD(s1, s2, s3, s4, f1)) \
97 VARITEM(0, 2, XPD(f1, f2)) \
98 VARITEM(1, 2, XPD(s1, f1, f2)) \
99 VARITEM(2, 2, XPD(s1, s2, f1, f2)) \
100 VARITEM(3, 2, XPD(s1, s2, s3, f1, f2)) \
101 VARITEM(4, 2, XPD(s1, s2, s3, s4, f1, f2)) \
102 VARITEM(0, 3, XPD(f1, f2, f3)) \
103 VARITEM(1, 3, XPD(s1, f1, f2, f3)) \
104 VARITEM(2, 3, XPD(s1, s2, f1, f2, f3)) \
105 VARITEM(3, 3, XPD(s1, s2, s3, f1, f2, f3)) \
106 VARITEM(4, 3, XPD(s1, s2, s3, s4, f1, f2, f3)) \
107 VARITEM(0, 4, XPD(f1, f2, f3, f4)) \
108 VARITEM(1, 4, XPD(s1, f1, f2, f3, f4)) \
109 VARITEM(2, 4, XPD(s1, s2, f1, f2, f3, f4)) \
110 VARITEM(3, 4, XPD(s1, s2, s3, f1, f2, f3, f4)) \
111 VARITEM(4, 4, XPD(s1, s2, s3, s4, f1, f2, f3, f4))
164#define DEFAULT_FILENAME "notifications_dump.cfg"
173 string filename =
argv(1);
174 bool alsoprint =
false;
180 else if (filename ==
"-")
189 LOG_INFOF(
"Dumping notifications... File located in ^2data/data/%s^7.", filename);
194 LOG_INFOF(
"^1Error: ^7Could not open file '%s'!", filename);
197 LOG_INFO(
"Notification dump command only works with cl_cmd and sv_cmd.");
206 LOG_HELP(
" if supplied with '-' output to console as well as default,");
207 LOG_HELP(
" if left blank, it will only write to default.");
212#undef DEFAULT_FILENAME
214#ifdef NOTIFICATIONS_DEBUG
215bool autocvar_notification_debug =
false;
216void Debug_Notification(
string input)
218 switch (autocvar_notification_debug)
230 float stringcount,
float floatcount,
231 string s1,
string s2,
string s3,
string s4,
232 float f1,
float f2,
float f3,
float f4);
249 CASE(NOTIF, ONE_ONLY)
253 CASE(NOTIF, TEAM_EXCEPT)
257 CASE(NOTIF, ALL_EXCEPT)
264 case NOTIF_ONE:
return "NOTIF_ONE";
265 case NOTIF_ONE_ONLY:
return "NOTIF_ONE_ONLY";
266 case NOTIF_ALL_EXCEPT:
return "NOTIF_ALL_EXCEPT";
267 case NOTIF_ALL:
return "NOTIF_ALL";
268 case NOTIF_TEAM:
return "NOTIF_TEAM";
269 case NOTIF_TEAM_EXCEPT:
return "NOTIF_TEAM_EXCEPT";
271 LOG_WARNF(
"Get_Notif_BroadcastName(%d): Improper broadcast!", broadcast);
276 NOTIF broadcast,
entity client,
277 MSG net_type, CPID net_name);
279 NOTIF broadcast,
entity client,
283 NOTIF broadcast,
entity client,
285 float stringcount,
float floatcount,
286 string s1,
string s2,
string s3,
string s4,
287 float f1,
float f2,
float f3,
float f4);
289 NOTIF broadcast,
entity client,
291 string s1,
string s2,
string s3,
string s4,
292 float f1,
float f2,
float f3,
float f4);
302#define NOTIF_ADD_AUTOCVAR(name,defaultvalue) float autocvar_notification_##name = defaultvalue;
320float autocvar_notification_item_centerprinttime = 1.5;
324float autocvar_notification_allow_chatboxprint = 0;
326float autocvar_notification_show_sprees_center =
true;
327float autocvar_notification_show_sprees_center_specialonly =
true;
404string hash_replace(
string full_msg,
int ent_msg_num,
string ent_msg,
string attacker_name)
407 while (--ent_msg_num >= 0)
408 s_ofs +=
strstrofs(full_msg,
"%s", s_ofs);
411 int hash_ofs =
strstrofs(ent_msg,
"#", 0);
413 ent_msg =
strcat(ent_msg,
" ",
CCR(
"^BG"), attacker_name, col);
415 ent_msg = strreplace(
"#",
strcat(
CCR(
"^BG"), attacker_name, col), ent_msg);
419#define HASH_REPLACE(full_msg, num, attacker_name) hash_replace(input, num, s##num, attacker_name)
436#define NOTIF_ARGUMENT_LIST \
437 ARG_CASE(ARG_CS_SV_HA, "s1", s1) \
438 ARG_CASE(ARG_CS_SV_HA, "s2", s2) \
439 ARG_CASE(ARG_CS_SV_HA, "s3", s3) \
440 ARG_CASE(ARG_CS_SV_HA, "s4", s4) \
441 ARG_CASE(ARG_CS_SV, "s2loc", ((autocvar_notification_show_location && (s2 != "")) ? sprintf(( ((tmp_s = autocvar_notification_show_location_string) != "") ? tmp_s : _(" (near %s)") ), s2) : "")) \
442 ARG_CASE(ARG_CS_SV, "s3loc", ((autocvar_notification_show_location && (s3 != "")) ? sprintf(( ((tmp_s = autocvar_notification_show_location_string) != "") ? tmp_s : _(" (near %s)") ), s3) : "")) \
443 ARG_CASE(ARG_CS_SV, "s4loc", ((autocvar_notification_show_location && (s4 != "")) ? sprintf(( ((tmp_s = autocvar_notification_show_location_string) != "") ? tmp_s : _(" (near %s)") ), s4) : "")) \
444 ARG_CASE(ARG_CS_SV_DC, "f1", ftos(f1)) \
445 ARG_CASE(ARG_CS_SV_DC, "f2", ftos(f2)) \
446 ARG_CASE(ARG_CS_SV, "f3", ftos(f3)) \
447 ARG_CASE(ARG_CS_SV, "f4", ftos(f4)) \
448 ARG_CASE(ARG_CS_SV, "f1dtime", ftos_decimals(TIME_DECODE(f1), 2)) \
449 ARG_CASE(ARG_CS_SV, "f2dtime", ftos_decimals(TIME_DECODE(f2), 2)) \
450 ARG_CASE(ARG_CS, "f2primsec", (f2 ? _("secondary") : _("primary"))) \
451 ARG_CASE(ARG_CS, "f3primsec", (f3 ? _("secondary") : _("primary"))) \
452 ARG_CASE(ARG_CS, "f1secs", count_seconds(f1)) \
453 ARG_CASE(ARG_CS, "f1points", (f1 == 1 ? _("1 point") : sprintf(_("%d points"), f1))) \
454 ARG_CASE(ARG_CS_SV, "f1ord", count_ordinal(f1)) \
455 ARG_CASE(ARG_CS_SV, "f1time", process_time(2, f1)) \
456 ARG_CASE(ARG_CS_SV_HA, "f1race_time", TIME_ENCODED_TOSTRING(f1, true)) \
457 ARG_CASE(ARG_CS_SV_HA, "f2race_time", TIME_ENCODED_TOSTRING(f2, true)) \
458 ARG_CASE(ARG_CS_SV_HA, "f3race_time", TIME_ENCODED_TOSTRING(f3, true)) \
459 ARG_CASE(ARG_CS_SV, "race_col", CCR((f1 == 1) ? "^F1" : "^F2")) \
460 ARG_CASE(ARG_CS_SV, "race_diff", ((TIME_ENCODED_TOSTRING(fabs(f2 - f3), true) == "0.00") ? "^3[+0.0]" : (f2 > f3) ? sprintf("^1[+%s]", TIME_ENCODED_TOSTRING(f2 - f3, true)) : sprintf("^2[-%s]", TIME_ENCODED_TOSTRING(f3 - f2, true)))) \
461 ARG_CASE(ARG_CS, "pass_key", getcommandkey(_("drop flag"), "+use")) \
462 ARG_CASE(ARG_CS, "nade_key", getcommandkey(_("throw nade"), "dropweapon")) \
463 ARG_CASE(ARG_CS, "join_key", getcommandkey(_("jump"), "+jump")) \
464 ARG_CASE(ARG_CS, "frag_ping", notif_arg_frag_ping(true, f2)) \
465 ARG_CASE(ARG_CS, "frag_stats", notif_arg_frag_stats(f2, f3, f4)) \
467 ARG_CASE(ARG_CS, "spree_cen", (autocvar_notification_show_sprees ? notif_arg_spree_cen(f1) : "")) \
468 ARG_CASE(ARG_CS_SV, "spree_inf", (autocvar_notification_show_sprees ? notif_arg_spree_inf(1, input, s2, f2) : "")) \
469 ARG_CASE(ARG_CS_SV, "spree_end", (autocvar_notification_show_sprees ? notif_arg_spree_inf(-1, "", "", f1) : "")) \
470 ARG_CASE(ARG_CS_SV, "spree_lost", (autocvar_notification_show_sprees ? notif_arg_spree_inf(-2, "", "", f1) : "")) \
471 ARG_CASE(ARG_CS_SV, "item_wepname", REGISTRY_GET(Weapons, f1).m_name) \
472 ARG_CASE(ARG_CS_SV, "item_buffname", BUFF_NAME(f1)) \
473 ARG_CASE(ARG_CS_SV, "f3buffname", BUFF_NAME(f3)) \
474 ARG_CASE(ARG_CS_SV, "item_wepammo", (f2 > 0 ? notif_arg_item_wepammo(f1, f2) : "")) \
475 ARG_CASE(ARG_DC, "item_centime", ftos(autocvar_notification_item_centerprinttime)) \
476 ARG_CASE(ARG_SV, "death_team", Team_ColoredFullName(f1)) \
477 ARG_CASE(ARG_CS, "death_team", Team_ColoredFullName(f1 - 1)) \
478 ARG_CASE(ARG_SV, "s3#s2", s3) \
479 ARG_CASE(ARG_SV, "#s2", s2) \
480 ARG_CASE(ARG_CS, "s3#s2", HASH_REPLACE(input, 3, s2)) \
481 ARG_CASE(ARG_CS, "#s2", "") \
482 ARG_CASE(ARG_CS_SV_HA, "minigame1_name",find(NULL,netname,s1).descriptor.message) \
483 ARG_CASE(ARG_CS_SV_HA, "minigame1_d", find(NULL,netname,s1).descriptor.netname)
485#define NOTIF_HIT_MAX(count,funcname) MACRO_BEGIN \
486 if(sel_num == count) { backtrace(sprintf("%s: Hit maximum arguments!\n", funcname)); break; } \
489#define NOTIF_HIT_UNKNOWN(token,funcname) { backtrace(sprintf("%s: Hit unknown token in selected string! '%s'\n", funcname, selected)); break; }
491#define KILL_SPREE_LIST \
492 SPREE_ITEM(3, 03, _("TRIPLE FRAG!"), _("%s^K1 made a TRIPLE FRAG!"), _("%s^K1 made a TRIPLE SCORE!")) \
493 SPREE_ITEM(5, 05, _("RAGE!"), _("%s^K1 unlocked RAGE!"), _("%s^K1 made FIVE SCORES IN A ROW!")) \
494 SPREE_ITEM(10, 10, _("MASSACRE!"), _("%s^K1 started a MASSACRE!"), _("%s^K1 made TEN SCORES IN A ROW!")) \
495 SPREE_ITEM(15, 15, _("MAYHEM!"), _("%s^K1 executed MAYHEM!"), _("%s^K1 made FIFTEEN SCORES IN A ROW!")) \
496 SPREE_ITEM(20, 20, _("BERSERKER!"), _("%s^K1 is a BERSERKER!"), _("%s^K1 made TWENTY SCORES IN A ROW!")) \
497 SPREE_ITEM(25, 25, _("CARNAGE!"), _("%s^K1 inflicts CARNAGE!"), _("%s^K1 made TWENTY FIVE SCORES IN A ROW!")) \
498 SPREE_ITEM(30, 30, _("ARMAGEDDON!"), _("%s^K1 unleashes ARMAGEDDON!"), _("%s^K1 made THIRTY SCORES IN A ROW!"))
503 string s = newline ?
"\n" :
" ";
505 return sprintf(
CCR(_(
"%s(^F1Bot^BG)")), s);
507 return sprintf(
CCR(_(
"%s(Ping ^F1%d^BG)")), s, fping);
514 return sprintf(
CCR(_(
"\n(Health ^1%d^BG / Armor ^2%d^BG)%s")), fhealth, farmor, s);
516 return sprintf(
CCR(_(
"\n(^F4Dead^BG)%s")), s);
522 if(autocvar_notification_show_sprees_center)
526 #define SPREE_ITEM(counta,countb,center,normal,gentle) \
528 return strcat(normal_or_gentle(center, sprintf(_("%d score spree!"), spree)), " ");
535 if (!autocvar_notification_show_sprees_center_specialonly)
575 string spree_newline =
577 ((
substring(input, 0, 1) ==
"\{3}") ?
"\n\{3}" :
"\n") :
"" );
579 string spree_newline =
585 #define SPREE_ITEM(counta,countb,center,normal,gentle) \
587 return sprintf(CCR(strcat(normal_or_gentle(normal, gentle), " %s^BG")), \
588 player, spree_newline);
600 _(
"%s^K1 has %d frags in a row!"),
601 _(
"%s^K1 made %d scores in a row!")
619 _(
"%s^K1 drew first blood!"),
620 _(
"%s^K1 got the first score!")
636 _(
", ending their %d frag spree"),
637 _(
", ending their %d score spree")
651 _(
", losing their %d frag spree"),
652 _(
", losing their %d score spree")
722#define ACVNN(name) autocvar_notification_##name
745 LOG_FATALF(
"Too many MSG_CHOICE notifications (%d), hit NOTIF_CHOICE_MAX (%d) limit",
751 if(!notif.nent_teamnum)
752 return notif.nent_name;
759 if (it.nent_type != net_type) {
760 LOG_WARNF(
"Get_Notif_Ent(%s (%d), %s (%d)): Improper net type '%s'!",
762 it.registered_id, net_name,
770#define MSG_ANNCE_NOTIF_TEAM(teamnum, name, cvarname, defaultvalue, sound, channel, volume, position, queuetime) \
771 MSG_ANNCE_NOTIF_(teamnum, ANNCE_##name, ANNCE_##cvarname, defaultvalue, sound, channel, volume, position, queuetime)
773#define MSG_ANNCE_NOTIF(name, defaultvalue, sound, channel, volume, position, queuetime) \
774 NOTIF_ADD_AUTOCVAR(ANNCE_##name, defaultvalue) \
775 MSG_ANNCE_NOTIF_(0, ANNCE_##name, ANNCE_##name, defaultvalue, sound, channel, volume, position, queuetime)
777#define MSG_ANNCE_NOTIF_(teamnum, name, cvarname, defaultvalue, sound, channel, volume, position, queuetime) \
778 REGISTER(Notifications, name, m_id, new_pure(msg_annce_notification)) { \
779 Create_Notification_Entity (this, defaultvalue, ACVNN(cvarname), MSG_ANNCE, strtoupper(#name), teamnum); \
780 Create_Notification_Entity_Annce(this, ACVNN(cvarname), strtoupper(#name), \
788#define MSG_INFO_NOTIF_TEAM(teamnum, name, cvarname, defaultvalue, strnum, flnum, args, hudargs, icon, normal, gentle) \
789 MSG_INFO_NOTIF_(teamnum, INFO_##name, INFO_##cvarname, defaultvalue, strnum, flnum, args, hudargs, icon, normal, gentle)
791#define MSG_INFO_NOTIF(name, defaultvalue, strnum, flnum, args, hudargs, icon, normal, gentle) \
792 NOTIF_ADD_AUTOCVAR(INFO_##name, defaultvalue) \
793 MSG_INFO_NOTIF_(0, INFO_##name, INFO_##name, defaultvalue, strnum, flnum, args, hudargs, icon, normal, gentle)
795#define MSG_INFO_NOTIF_(teamnum, name, cvarname, defaultvalue, strnum, flnum, args, hudargs, icon, normal, gentle) \
796 REGISTER(Notifications, name, m_id, new_pure(msg_info_notification)) { \
797 Create_Notification_Entity (this, defaultvalue, ACVNN(cvarname), MSG_INFO, strtoupper(#name), teamnum); \
798 Create_Notification_Entity_InfoCenter(this, ACVNN(cvarname), strtoupper(#name), strnum, flnum, \
809#define MULTIICON_INFO(name, defaultvalue, strnum, flnum, args, hudargs, iconargs, icon, normal, gentle) \
810 MULTIICON_INFO_(INFO_##name, defaultvalue, strnum, flnum, args, hudargs, iconargs, icon, normal, gentle)
811#define MULTIICON_INFO_(name, defaultvalue, strnum, flnum, args, hudargs, iconargs, icon, normal, gentle) \
812 NOTIF_ADD_AUTOCVAR(name, defaultvalue) \
813 REGISTER(Notifications, name, m_id, new_pure(msg_info_notification)) { \
814 Create_Notification_Entity (this, defaultvalue, ACVNN(name), MSG_INFO, strtoupper(#name), 0); \
815 Create_Notification_Entity_InfoCenter(this, ACVNN(name), strtoupper(#name), strnum, flnum, \
823 this.nent_iconargs = iconargs; \
826#define MSG_CENTER_NOTIF_TEAM(teamnum, name, cvarname, defaultvalue, strnum, flnum, args, cpid, durcnt, normal, gentle) \
827 MSG_CENTER_NOTIF_(teamnum, CENTER_##name, CENTER_##cvarname, defaultvalue, strnum, flnum, args, cpid, durcnt, normal, gentle)
829#define MSG_CENTER_NOTIF(name, defaultvalue, strnum, flnum, args, cpid, durcnt, normal, gentle) \
830 NOTIF_ADD_AUTOCVAR(CENTER_##name, defaultvalue) \
831 MSG_CENTER_NOTIF_(0, CENTER_##name, CENTER_##name, defaultvalue, strnum, flnum, args, cpid, durcnt, normal, gentle)
833#define MSG_CENTER_NOTIF_(teamnum, name, cvarname, defaultvalue, strnum, flnum, args, cpid, durcnt, normal, gentle) \
834 REGISTER(Notifications, name, m_id, new_pure(msg_center_notification)) { \
835 Create_Notification_Entity (this, defaultvalue, ACVNN(cvarname), MSG_CENTER, strtoupper(#name), teamnum); \
836 Create_Notification_Entity_InfoCenter(this, ACVNN(cvarname), strtoupper(#name), strnum, flnum, \
846#define MSG_MULTI_NOTIF(name, defaultvalue, anncename, infoname, centername) \
847 NOTIF_ADD_AUTOCVAR(name, defaultvalue) \
848 REGISTER(Notifications, name, m_id, new_pure(msg_multi_notification)) { \
849 Create_Notification_Entity (this, defaultvalue, ACVNN(name), MSG_MULTI, strtoupper(#name), 0); \
850 Create_Notification_Entity_Multi(this, ACVNN(name), strtoupper(#name), \
856#define MSG_CHOICE_NOTIF_TEAM(teamnum, name, cvarname, defaultvalue, challow, chtype, optiona, optionb) \
857 MSG_CHOICE_NOTIF_(teamnum, CHOICE_##name, CHOICE_##cvarname, defaultvalue, challow, chtype, optiona, optionb)
859#define MSG_CHOICE_NOTIF(name, defaultvalue, challow, chtype, optiona, optionb) \
860 NOTIF_ADD_AUTOCVAR(CHOICE_##name, defaultvalue) \
861 NOTIF_ADD_AUTOCVAR(CHOICE_##name##_ALLOWED, challow) \
862 MSG_CHOICE_NOTIF_(0, CHOICE_##name, CHOICE_##name, defaultvalue, challow, chtype, optiona, optionb)
864#define MSG_CHOICE_NOTIF_(teamnum, name, cvarname, defaultvalue, challow, chtype, optiona, optionb) \
865 REGISTER(Notifications, name, m_id, new_pure(msg_choice_notification)) { \
866 this.nent_choice_idx = nent_choice_count; \
867 if (!teamnum || teamnum == NUM_TEAM_4) \
868 nent_choice_count++; \
869 Create_Notification_Entity (this, defaultvalue, ACVNN(cvarname), MSG_CHOICE, strtoupper(#name), teamnum); \
870 Create_Notification_Entity_Choice(this, ACVNN(cvarname), strtoupper(#name), \
872 autocvar_notification_##cvarname##_ALLOWED, \
888 LOG_FATAL(
"Notification initialization failed! Read above and fix the errors!");
890 LOG_SEVERE(
"Notification initialization failed! Read above and fix the errors!");
898 FOREACH(Notifications, it.nent_type == MSG_CHOICE && (!it.nent_teamnum || it.nent_teamnum ==
NUM_TEAM_1), {
899 string cvarname = strcat(
"notification_", Get_Notif_CvarName(it));
901 REPLICATE_SIMPLE(it.cvar_value, cvarname);
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
limitations: NULL cannot be present elements can only be present once a maximum of IL_MAX lists can e...
fields which are explicitly/manually set are marked with "M", fields set automatically are marked wit...
Resource ammo_type
M: ammotype : main ammo type.
const int CMD_REQUEST_COMMAND
const int CMD_REQUEST_USAGE
#define GENERIC_COMMAND(id, description, menubased)
string find_last_color_code(string s)
#define normal_or_gentle(normal, gentle)
string strtolower(string s)
#define ENUMCLASS_END(id)
#define GetProgramCommandPrefix()
#define FOREACH(list, cond, body)
spree_inf s1 s2 s3loc s2 spree_inf s1 s2 s3loc s2 spree_inf s1 s2 s3loc s2 s1 s2loc s1 s2loc s1 s2loc s1 s2loc s1 s2loc s1 s2loc s1 s2 f1points f2
spree_inf s1 s2 s3loc s2 s1
spree_inf s1 s2 s3loc s2 spree_inf s1 s2 s3loc s2 spree_inf s1 s2 s3loc s2 s1 s2loc s1 s2loc s1 s2loc s1 s2loc s1 s2loc s1 s2loc s1 s2 f1points s1 s2
strcat(_("^F4Countdown stopped!"), "\n^BG", _("Teams are too unbalanced."))
void Create_Notification_Entity_InfoCenter(entity notif, float var_cvar, string namestring, int strnum, int flnum, string args, string hudargs, string icon, CPID cpid, string durcnt, string normal, string gentle)
float autocvar_notification_show_location
void Kill_Notification(NOTIF broadcast, entity client, MSG net_type, CPID net_name)
int msg_choice_choices[NOTIF_CHOICE_MAX]
string arg_slot[NOTIF_MAX_ARGS]
void Create_Notification_Entity_Annce(entity notif, float var_cvar, string namestring, float channel, string snd, float vol, float position, float queuetime)
void ReplicateVars(bool would_destroy)
float notif_queue_next_time
void Send_Notification(NOTIF broadcast, entity client, MSG net_type, Notification net_name,...count)
void Create_Notification_Entity_Multi(entity notif, float var_cvar, string namestring, Notification anncename, Notification infoname, Notification centername)
entity notif_queue_entity[NOTIF_QUEUE_MAX]
void Local_Notification(MSG net_type, Notification net_name,...count)
const float NOTIF_MAX_HUDARGS
const float NOTIF_MAX_DURCNT
IntrusiveList g_notifications
float autocvar_notification_lifetime_mapload
Notification Get_Notif_Ent(MSG net_type, int net_name)
const int NOTIF_QUEUE_MAX
MSG notif_queue_type[NOTIF_QUEUE_MAX]
string notif_arg_item_wepammo(float f1, float f2)
void Create_Notification_Entity_Choice(entity notif, float var_cvar, string namestring, float challow_def, float challow_var, MSG chtype, Notification optiona, Notification optionb)
float autocvar_notification_lifetime_runtime
float autocvar_notification_errors_are_fatal
string Get_Notif_BroadcastName(NOTIF broadcast)
send to one client and their spectators
entity Notification
always last
void Send_Notification_WOCOVA(NOTIF broadcast, entity client, MSG net_type, Notification net_name, string s1, string s2, string s3, string s4, float f1, float f2, float f3, float f4)
float autocvar_notification_show_sprees_info
string notif_arg_frag_ping(bool newline, float fping)
void Create_Notification_Entity(entity notif, float var_default, float var_cvar, MSG typeId, string namestring, int teamnum)
void Local_Notification_Queue_Process()
string Get_Notif_TypeName(MSG net_type)
main types/groups of notifications
string autocvar_notification_show_location_string
string hash_replace(string full_msg, int ent_msg_num, string ent_msg, string attacker_name)
string notif_arg_spree_cen(float spree)
void Local_Notification_WOVA(MSG net_type, Notification net_name, float stringcount, float floatcount, string s1, string s2, string s3, string s4, float f1, float f2, float f3, float f4)
glue for networking, forwards to Local_Notification
void Destroy_All_Notifications()
float notif_queue_time[NOTIF_QUEUE_MAX]
float autocvar_notification_show_sprees_info_specialonly
void Send_Notification_WOVA(NOTIF broadcast, entity client, MSG net_type, Notification net_name, float stringcount, float floatcount, string s1, string s2, string s3, string s4, float f1, float f2, float f3, float f4)
const int NOTIF_CHOICE_MAX
string notif_arg_spree_inf(float type, string input, string player, float spree)
string notif_arg_frag_stats(float fhealth, float farmor, float fping)
float autocvar_notification_show_sprees
void Dump_Notifications(int fh, bool alsoprint)
used to output notifications.cfg file
float autocvar_notification_show_sprees_info_newline
const float NOTIF_MAX_ARGS
float autocvar_notification_server_allows_location
string Get_Notif_CvarName(Notification notif)
void Notification_GetCvars(entity this, entity store)
#define REGISTRY_SORT(...)
#define REGISTRY_BEGIN(id)
Called before initializing a registry.
#define REGISTRY_END(id)
Called after initializing a registry.
#define REGISTER_REGISTRY(id)
#define REGISTRY(id, max)
Declare a new registry.
#define REGISTRY_CHECK(id)
#define REGISTRY_DEFINE_GET(id, null)
#define REGISTRY_GET(id, i)
#define STATIC_INIT_LATE(func)
directly after STATIC_INIT
#define STATIC_INIT(func)
during worldspawn
string CCR(string input)
color code replace, place inside of sprintf and parse the string
string Static_Team_ColorName(int teamid)