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)
56 CASE(CPID, PREVENT_JOIN)
58 CASE(CPID, KEEPAWAY_WARN)
60 CASE(CPID, KEYHUNT_OTHER)
62 CASE(CPID, MISSING_TEAMS)
63 CASE(CPID, MISSING_PLAYERS)
64 CASE(CPID, INSTAGIB_FINDAMMO)
65 CASE(CPID, CAMPAIGN_MESSAGE)
69 CASE(CPID, ONS_CAPSHIELD)
72 CASE(CPID, RACE_FINISHLAP)
73 CASE(CPID, TEAMCHANGE)
77 CASE(CPID, VEHICLES_OTHER)
85 #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))) 86 #define APP_NUM(num, prefix) ((num) ? APP_TEAM_NUM(num, prefix) : prefix##_NEUTRAL) 88 #define EIGHT_VARS_TO_VARARGS_VARLIST \ 90 VARITEM(2, 0, XPD(s1, s2)) \ 91 VARITEM(3, 0, XPD(s1, s2, s3)) \ 92 VARITEM(4, 0, XPD(s1, s2, s3, s4)) \ 94 VARITEM(1, 1, XPD(s1, f1)) \ 95 VARITEM(2, 1, XPD(s1, s2, f1)) \ 96 VARITEM(3, 1, XPD(s1, s2, s3, f1)) \ 97 VARITEM(4, 1, XPD(s1, s2, s3, s4, f1)) \ 98 VARITEM(0, 2, XPD(f1, f2)) \ 99 VARITEM(1, 2, XPD(s1, f1, f2)) \ 100 VARITEM(2, 2, XPD(s1, s2, f1, f2)) \ 101 VARITEM(3, 2, XPD(s1, s2, s3, f1, f2)) \ 102 VARITEM(4, 2, XPD(s1, s2, s3, s4, f1, f2)) \ 103 VARITEM(0, 3, XPD(f1, f2, f3)) \ 104 VARITEM(1, 3, XPD(s1, f1, f2, f3)) \ 105 VARITEM(2, 3, XPD(s1, s2, f1, f2, f3)) \ 106 VARITEM(3, 3, XPD(s1, s2, s3, f1, f2, f3)) \ 107 VARITEM(4, 3, XPD(s1, s2, s3, s4, f1, f2, f3)) \ 108 VARITEM(0, 4, XPD(f1, f2, f3, f4)) \ 109 VARITEM(1, 4, XPD(s1, f1, f2, f3, f4)) \ 110 VARITEM(2, 4, XPD(s1, s2, f1, f2, f3, f4)) \ 111 VARITEM(3, 4, XPD(s1, s2, s3, f1, f2, f3, f4)) \ 112 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.");
204 LOG_HELP(
"Usage:^3 ", GetProgramCommandPrefix(),
" dumpnotifs [<filename>]");
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 215 bool autocvar_notification_debug =
false;
216 void 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);
235 string prev_soundfile;
236 float prev_soundtime;
249 CASE(NOTIF, ONE_ONLY)
253 CASE(NOTIF, TEAM_EXCEPT)
257 CASE(NOTIF, ALL_EXCEPT)
260 string Get_Notif_BroadcastName(NOTIF broadcast)
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);
275 void Kill_Notification(
276 NOTIF broadcast,
entity client,
277 MSG net_type, CPID net_name);
278 void Send_Notification(
279 NOTIF broadcast,
entity client,
282 void Send_Notification_WOVA(
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);
288 void Send_Notification_WOCOVA(
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; 312 float autocvar_notification_lifetime_runtime = 0.5;
313 float autocvar_notification_lifetime_mapload = 10;
318 float autocvar_notification_server_allows_location = 1;
403 #define NOTIF_ARGUMENT_LIST \ 404 ARG_CASE(ARG_CS_SV_HA, "s1", s1) \ 405 ARG_CASE(ARG_CS_SV_HA, "s2", s2) \ 406 ARG_CASE(ARG_CS_SV_HA, "s3", s3) \ 407 ARG_CASE(ARG_CS_SV_HA, "s4", s4) \ 408 ARG_CASE(ARG_CS_SV, "s2loc", ((autocvar_notification_show_location && (s2 != "")) ? sprintf(( ((tmp_s = autocvar_notification_show_location_string) != "") ? tmp_s : _(" (near %s)") ), s2) : "")) \ 409 ARG_CASE(ARG_CS_SV, "s3loc", ((autocvar_notification_show_location && (s3 != "")) ? sprintf(( ((tmp_s = autocvar_notification_show_location_string) != "") ? tmp_s : _(" (near %s)") ), s3) : "")) \ 410 ARG_CASE(ARG_CS_SV_DC, "f1", ftos(f1)) \ 411 ARG_CASE(ARG_CS_SV_DC, "f2", ftos(f2)) \ 412 ARG_CASE(ARG_CS_SV, "f3", ftos(f3)) \ 413 ARG_CASE(ARG_CS_SV, "f4", ftos(f4)) \ 414 ARG_CASE(ARG_CS_SV, "f1dtime", ftos_decimals(TIME_DECODE(f1), 2)) \ 415 ARG_CASE(ARG_CS_SV, "f2dtime", ftos_decimals(TIME_DECODE(f2), 2)) \ 416 ARG_CASE(ARG_CS, "f2primsec", (f2 ? _("secondary") : _("primary"))) \ 417 ARG_CASE(ARG_CS, "f3primsec", (f3 ? _("secondary") : _("primary"))) \ 418 ARG_CASE(ARG_CS, "f1secs", count_seconds(f1)) \ 419 ARG_CASE(ARG_CS, "f1points", (f1 == 1 ? _("point") : _("points"))) \ 420 ARG_CASE(ARG_CS_SV, "f1ord", count_ordinal(f1)) \ 421 ARG_CASE(ARG_CS_SV, "f1time", process_time(2, f1)) \ 422 ARG_CASE(ARG_CS_SV_HA, "f1race_time", mmssth(f1)) \ 423 ARG_CASE(ARG_CS_SV_HA, "f2race_time", mmssth(f2)) \ 424 ARG_CASE(ARG_CS_SV_HA, "f3race_time", mmssth(f3)) \ 425 ARG_CASE(ARG_CS_SV, "race_col", CCR(((f1 == 1) ? "^F1" : "^F2"))) \ 426 ARG_CASE(ARG_CS_SV, "race_diff", ((f2 > f3) ? sprintf(CCR("^1[+%s]"), mmssth(f2 - f3)) : sprintf(CCR("^2[-%s]"), mmssth(f3 - f2)))) \ 427 ARG_CASE(ARG_CS, "missing_teams", notif_arg_missing_teams(f1)) \ 428 ARG_CASE(ARG_CS, "pass_key", getcommandkey(_("drop flag"), "+use")) \ 429 ARG_CASE(ARG_CS, "nade_key", getcommandkey(_("throw nade"), "dropweapon")) \ 430 ARG_CASE(ARG_CS, "join_key", getcommandkey(_("jump"), "+jump")) \ 431 ARG_CASE(ARG_CS, "frag_ping", notif_arg_frag_ping(true, f2)) \ 432 ARG_CASE(ARG_CS, "frag_stats", notif_arg_frag_stats(f2, f3, f4)) \ 434 ARG_CASE(ARG_CS, "spree_cen", (autocvar_notification_show_sprees ? notif_arg_spree_cen(f1) : "")) \ 435 ARG_CASE(ARG_CS_SV, "spree_inf", (autocvar_notification_show_sprees ? notif_arg_spree_inf(1, input, s2, f2) : "")) \ 436 ARG_CASE(ARG_CS_SV, "spree_end", (autocvar_notification_show_sprees ? notif_arg_spree_inf(-1, "", "", f1) : "")) \ 437 ARG_CASE(ARG_CS_SV, "spree_lost", (autocvar_notification_show_sprees ? notif_arg_spree_inf(-2, "", "", f1) : "")) \ 438 ARG_CASE(ARG_CS_SV, "item_wepname", REGISTRY_GET(Weapons, f1).m_name) \ 439 ARG_CASE(ARG_CS_SV, "item_buffname", BUFF_NAME(f1)) \ 440 ARG_CASE(ARG_CS_SV, "f3buffname", BUFF_NAME(f3)) \ 441 ARG_CASE(ARG_CS_SV, "item_wepammo", (f2 > 0 ? notif_arg_item_wepammo(f1, f2) : "")) \ 442 ARG_CASE(ARG_DC, "item_centime", ftos(autocvar_notification_item_centerprinttime)) \ 443 ARG_CASE(ARG_SV, "death_team", Team_ColoredFullName(f1)) \ 444 ARG_CASE(ARG_CS, "death_team", Team_ColoredFullName(f1 - 1)) \ 445 ARG_CASE(ARG_CS_SV_HA, "minigame1_name",find(NULL,netname,s1).descriptor.message) \ 446 ARG_CASE(ARG_CS_SV_HA, "minigame1_d", find(NULL,netname,s1).descriptor.netname) 448 #define NOTIF_HIT_MAX(count,funcname) MACRO_BEGIN \ 449 if(sel_num == count) { backtrace(sprintf("%s: Hit maximum arguments!\n", funcname)); break; } \ 452 #define NOTIF_HIT_UNKNOWN(token,funcname) { backtrace(sprintf("%s: Hit unknown token in selected string! '%s'\n", funcname, selected)); break; } 454 #define KILL_SPREE_LIST \ 455 SPREE_ITEM(3, 03, _("TRIPLE FRAG! "), _("%s^K1 made a TRIPLE FRAG! %s^BG"), _("%s^K1 made a TRIPLE SCORE! %s^BG")) \ 456 SPREE_ITEM(5, 05, _("RAGE! "), _("%s^K1 unlocked RAGE! %s^BG"), _("%s^K1 made FIVE SCORES IN A ROW! %s^BG")) \ 457 SPREE_ITEM(10, 10, _("MASSACRE! "), _("%s^K1 started a MASSACRE! %s^BG"), _("%s^K1 made TEN SCORES IN A ROW! %s^BG")) \ 458 SPREE_ITEM(15, 15, _("MAYHEM! "), _("%s^K1 executed MAYHEM! %s^BG"), _("%s^K1 made FIFTEEN SCORES IN A ROW! %s^BG")) \ 459 SPREE_ITEM(20, 20, _("BERSERKER! "), _("%s^K1 is a BERSERKER! %s^BG"), _("%s^K1 made TWENTY SCORES IN A ROW! %s^BG")) \ 460 SPREE_ITEM(25, 25, _("CARNAGE! "), _("%s^K1 inflicts CARNAGE! %s^BG"), _("%s^K1 made TWENTY FIVE SCORES IN A ROW! %s^BG")) \ 461 SPREE_ITEM(30, 30, _("ARMAGEDDON! "), _("%s^K1 unleashes ARMAGEDDON! %s^BG"), _("%s^K1 made THIRTY SCORES IN A ROW! %s^BG")) 464 string notif_arg_frag_ping(
bool newline,
float fping)
466 string s = newline ?
"\n" :
" ";
468 return sprintf(CCR(_(
"%s(^F1Bot^BG)")), s);
470 return sprintf(CCR(_(
"%s(Ping ^F1%d^BG)")), s, fping);
473 string notif_arg_frag_stats(
float fhealth,
float farmor,
float fping)
475 string s = notif_arg_frag_ping(
false, fping);
477 return sprintf(CCR(_(
"\n(Health ^1%d^BG / Armor ^2%d^BG)%s")), fhealth, farmor, s);
479 return sprintf(CCR(_(
"\n(^F4Dead^BG)%s")), s);
482 string notif_arg_missing_teams(
float f1)
492 string notif_arg_spree_cen(
float spree)
499 #define SPREE_ITEM(counta,countb,center,normal,gentle) \ 500 case counta: { return normal_or_gentle(center, sprintf(_("%d score spree! "), spree)); } 512 _(
"%d frag spree! "),
513 _(
"%d score spree! ")
525 return normal_or_gentle(_(
"First blood! "), _(
"First score! "));
529 return normal_or_gentle(_(
"First victim! "), _(
"First casualty! "));
547 string spree_newline =
549 ((
substring(input, 0, 1) ==
"\{3}") ?
"\n\{3}" :
"\n") :
"" );
551 string spree_newline =
557 #define SPREE_ITEM(counta,countb,center,normal,gentle) \ 558 case counta: { return sprintf(CCR(normal_or_gentle(normal, gentle)), player, spree_newline); } 569 CCR(normal_or_gentle(
570 _(
"%s^K1 has %d frags in a row! %s^BG"),
571 _(
"%s^K1 made %d scores in a row! %s^BG")
588 CCR(normal_or_gentle(
589 _(
"%s^K1 drew first blood! %s^BG"),
590 _(
"%s^K1 got the first score! %s^BG")
605 sprintf(normal_or_gentle(
606 _(
", ending their %d frag spree"),
607 _(
", ending their %d score spree")
620 sprintf(normal_or_gentle(
621 _(
", losing their %d frag spree"),
622 _(
", losing their %d score spree")
635 string ammoitems =
"";
640 case RES_SHELLS: ammoitems = ITEM_Shells.m_name;
break;
641 case RES_BULLETS: ammoitems = ITEM_Bullets.m_name;
break;
642 case RES_ROCKETS: ammoitems = ITEM_Rockets.m_name;
break;
643 case RES_CELLS: ammoitems = ITEM_Cells.m_name;
break;
644 case RES_PLASMA: ammoitems = ITEM_Plasma.m_name;
break;
645 case RES_FUEL: ammoitems = ITEM_JetpackFuel.m_name;
break;
648 return sprintf(_(
" with %d %s"), f2, ammoitems);
692 .NOTIF nent_broadcast;
700 #define ACVNN(name) autocvar_notification_##name 722 if (nent_choice_count > NOTIF_CHOICE_MAX)
723 LOG_FATALF(
"Too many MSG_CHOICE notifications (%d), hit NOTIF_CHOICE_MAX (%d) limit",
724 nent_choice_count, NOTIF_CHOICE_MAX);
729 if(!notif.nent_teamnum)
730 return notif.nent_name;
737 if (it.nent_type != net_type) {
738 LOG_WARNF(
"Get_Notif_Ent(%s (%d), %s (%d)): Improper net type '%s'!",
740 it.registered_id, net_name,
748 #define MSG_ANNCE_NOTIF_TEAM(teamnum, name, cvarname, defaultvalue, sound, channel, volume, position) \ 749 MSG_ANNCE_NOTIF_(teamnum, ANNCE_##name, ANNCE_##cvarname, defaultvalue, sound, channel, volume, position) 751 #define MSG_ANNCE_NOTIF(name, defaultvalue, sound, channel, volume, position) \ 752 NOTIF_ADD_AUTOCVAR(ANNCE_##name, defaultvalue) \ 753 MSG_ANNCE_NOTIF_(0, ANNCE_##name, ANNCE_##name, defaultvalue, sound, channel, volume, position) 755 #define MSG_ANNCE_NOTIF_(teamnum, name, cvarname, defaultvalue, sound, channel, volume, position) \ 756 REGISTER(Notifications, name, m_id, new_pure(msg_annce_notification)) { \ 757 Create_Notification_Entity (this, defaultvalue, ACVNN(cvarname), MSG_ANNCE, strtoupper(#name), teamnum); \ 758 Create_Notification_Entity_Annce(this, ACVNN(cvarname), strtoupper(#name), \ 765 #define MSG_INFO_NOTIF_TEAM(teamnum, name, cvarname, defaultvalue, strnum, flnum, args, hudargs, icon, normal, gentle) \ 766 MSG_INFO_NOTIF_(teamnum, INFO_##name, INFO_##cvarname, defaultvalue, strnum, flnum, args, hudargs, icon, normal, gentle) 768 #define MSG_INFO_NOTIF(name, defaultvalue, strnum, flnum, args, hudargs, icon, normal, gentle) \ 769 NOTIF_ADD_AUTOCVAR(INFO_##name, defaultvalue) \ 770 MSG_INFO_NOTIF_(0, INFO_##name, INFO_##name, defaultvalue, strnum, flnum, args, hudargs, icon, normal, gentle) 772 #define MSG_INFO_NOTIF_(teamnum, name, cvarname, defaultvalue, strnum, flnum, args, hudargs, icon, normal, gentle) \ 773 REGISTER(Notifications, name, m_id, new_pure(msg_info_notification)) { \ 774 Create_Notification_Entity (this, defaultvalue, ACVNN(cvarname), MSG_INFO, strtoupper(#name), teamnum); \ 775 Create_Notification_Entity_InfoCenter(this, ACVNN(cvarname), strtoupper(#name), strnum, flnum, \ 786 #define MULTIICON_INFO(name, defaultvalue, strnum, flnum, args, hudargs, iconargs, icon, normal, gentle) \ 787 MULTIICON_INFO_(INFO_##name, defaultvalue, strnum, flnum, args, hudargs, iconargs, icon, normal, gentle) 788 #define MULTIICON_INFO_(name, defaultvalue, strnum, flnum, args, hudargs, iconargs, icon, normal, gentle) \ 789 NOTIF_ADD_AUTOCVAR(name, defaultvalue) \ 790 REGISTER(Notifications, name, m_id, new_pure(msg_info_notification)) { \ 791 Create_Notification_Entity (this, defaultvalue, ACVNN(name), MSG_INFO, strtoupper(#name), 0); \ 792 Create_Notification_Entity_InfoCenter(this, ACVNN(name), strtoupper(#name), strnum, flnum, \ 800 this.nent_iconargs = iconargs; \ 803 #define MSG_CENTER_NOTIF_TEAM(teamnum, name, cvarname, defaultvalue, strnum, flnum, args, cpid, durcnt, normal, gentle) \ 804 MSG_CENTER_NOTIF_(teamnum, CENTER_##name, CENTER_##cvarname, defaultvalue, strnum, flnum, args, cpid, durcnt, normal, gentle) 806 #define MSG_CENTER_NOTIF(name, defaultvalue, strnum, flnum, args, cpid, durcnt, normal, gentle) \ 807 NOTIF_ADD_AUTOCVAR(CENTER_##name, defaultvalue) \ 808 MSG_CENTER_NOTIF_(0, CENTER_##name, CENTER_##name, defaultvalue, strnum, flnum, args, cpid, durcnt, normal, gentle) 810 #define MSG_CENTER_NOTIF_(teamnum, name, cvarname, defaultvalue, strnum, flnum, args, cpid, durcnt, normal, gentle) \ 811 REGISTER(Notifications, name, m_id, new_pure(msg_center_notification)) { \ 812 Create_Notification_Entity (this, defaultvalue, ACVNN(cvarname), MSG_CENTER, strtoupper(#name), teamnum); \ 813 Create_Notification_Entity_InfoCenter(this, ACVNN(cvarname), strtoupper(#name), strnum, flnum, \ 823 #define MSG_MULTI_NOTIF(name, defaultvalue, anncename, infoname, centername) \ 824 NOTIF_ADD_AUTOCVAR(name, defaultvalue) \ 825 REGISTER(Notifications, name, m_id, new_pure(msg_multi_notification)) { \ 826 Create_Notification_Entity (this, defaultvalue, ACVNN(name), MSG_MULTI, strtoupper(#name), 0); \ 827 Create_Notification_Entity_Multi(this, ACVNN(name), strtoupper(#name), \ 833 #define MSG_CHOICE_NOTIF_TEAM(teamnum, name, cvarname, defaultvalue, challow, chtype, optiona, optionb) \ 834 MSG_CHOICE_NOTIF_(teamnum, CHOICE_##name, CHOICE_##cvarname, defaultvalue, challow, chtype, optiona, optionb) 836 #define MSG_CHOICE_NOTIF(name, defaultvalue, challow, chtype, optiona, optionb) \ 837 NOTIF_ADD_AUTOCVAR(CHOICE_##name, defaultvalue) \ 838 NOTIF_ADD_AUTOCVAR(CHOICE_##name##_ALLOWED, challow) \ 839 MSG_CHOICE_NOTIF_(0, CHOICE_##name, CHOICE_##name, defaultvalue, challow, chtype, optiona, optionb) 841 #define MSG_CHOICE_NOTIF_(teamnum, name, cvarname, defaultvalue, challow, chtype, optiona, optionb) \ 842 REGISTER(Notifications, name, m_id, new_pure(msg_choice_notification)) { \ 843 this.nent_choice_idx = nent_choice_count; \ 844 if (!teamnum || teamnum == NUM_TEAM_4) \ 845 nent_choice_count++; \ 846 Create_Notification_Entity (this, defaultvalue, ACVNN(cvarname), MSG_CHOICE, strtoupper(#name), teamnum); \ 847 Create_Notification_Entity_Choice(this, ACVNN(cvarname), strtoupper(#name), \ 849 autocvar_notification_##cvarname##_ALLOWED, \ 865 LOG_FATAL(
"Notification initialization failed! Read above and fix the errors!");
867 LOG_SEVERE(
"Notification initialization failed! Read above and fix the errors!");
872 void ReplicateVars(
bool would_destroy)
875 FOREACH(Notifications, it.nent_type == MSG_CHOICE && (!it.nent_teamnum || it.nent_teamnum ==
NUM_TEAM_1), {
876 string cvarname = strcat(
"notification_", Get_Notif_CvarName(it));
878 REPLICATE_SIMPLE(it.cvar_value, cvarname);
string autocvar_notification_show_location_string
int msg_choice_choices[NOTIF_CHOICE_MAX]
REGISTRY(Weapons, 72) STATIC_INIT(WeaponPickup)
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 s2loc s1 s2 f1 f1points s1 s2
float autocvar_notification_item_centerprinttime
const float NOTIF_MAX_HUDARGS
void Dump_Notifications(int fh, bool alsoprint)
used to output notifications.cfg file
void Create_Notification_Entity_Multi(entity notif, float var_cvar, string namestring, Notification anncename, Notification infoname, Notification centername)
REGISTRY_SORT(Notifications)
Notification Get_Notif_Ent(MSG net_type, int net_name)
STATIC_INIT_LATE(Notif_Choices)
const int CMD_REQUEST_USAGE
#define REGISTRY_GET(id, i)
#define REGISTRY_CHECK(id)
const float NOTIF_MAX_ARGS
float autocvar_notification_show_sprees_info
string notif_arg_item_wepammo(float f1, float f2)
limitations: NULL cannot be present elements can only be present once a maximum of IL_MAX lists can e...
const float NOTIF_MAX_DURCNT
string Static_Team_ColorName(int teamid)
float autocvar_notification_allow_chatboxprint
spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 f1
#define REGISTER_REGISTRY(id)
string Get_Notif_TypeName(MSG net_type)
main types/groups of notifications
#define REGISTRY_DEFINE_GET(id, null)
#define BIT(n)
Only ever assign into the first 24 bits in QC (so max is BIT(23)).
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 s2loc s1 s2 f1 f1points f2
float autocvar_notification_show_sprees_info_newline
spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 f1 s1 strcat(_("Level %s: "), "^BG%s\3\, _("^BGPress ^F2%s^BG to enter the game"))
Resource ammo_type
M: ammotype : main ammo type.
float autocvar_notification_show_sprees_info_specialonly
const int CMD_REQUEST_COMMAND
void Create_Notification_Entity(entity notif, float var_default, float var_cvar, MSG typeId, string namestring, int teamnum)
void Create_Notification_Entity_Annce(entity notif, float var_cvar, string namestring, float channel, string snd, float vol, float position)
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)
void Local_Notification(MSG net_type, Notification net_name,...count)
string Get_Notif_CvarName(Notification notif)
REGISTRY_END(Notifications)
#define ENUMCLASS_END(id)
entity Notification
always last
const int NOTIF_CHOICE_MAX
float autocvar_notification_show_sprees_center
void Destroy_All_Notifications()
STATIC_INIT(IMPULSES_renumber)
float autocvar_notification_show_location
float autocvar_notification_errors_are_fatal
REGISTRY_BEGIN(Notifications)
GENERIC_COMMAND(dumpitems, "Dump all items to the console", false)
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 Create_Notification_Entity_Choice(entity notif, float var_cvar, string namestring, float challow_def, float challow_var, MSG chtype, Notification optiona, Notification optionb)
fields which are explicitly/manually set are marked with "M", fields set automatically are marked wit...
string arg_slot[NOTIF_MAX_ARGS]
#define Team_ColoredFullName(teamid)
float autocvar_notification_show_sprees_center_specialonly
#define FOREACH(list, cond, body)
float autocvar_notification_show_sprees
string notif_arg_spree_inf(float type, string input, string player, float spree)