+#include "all.qh"
#if defined(CSQC)
#include <client/announcer.qh>
#elif defined(MENUQC)
#elif defined(SVQC)
#include <common/constants.qh>
+ #include <common/net_linked.qh>
#include <common/teams.qh>
#include <server/autocvars.qh>
#include <server/constants.qh>
#include <server/defs.qh>
- #include "all.qh"
- #include <server/mutators/all.qh>
+ #include <server/mutators/_mod.qh>
#endif
// ================================================
return (
(to_client == other_client)
||
- (
- IS_SPEC(to_client)
- &&
- (to_client.enemy == other_client)
- )
+ (IS_SPEC(to_client) && (to_client.enemy == other_client))
);
case NOTIF_ONE_ONLY:
return (to_client == other_client);
float var_default,
float var_cvar,
MSG typeId,
- string namestring)
+ string namestring,
+ int teamnum)
{
// =====================
// Global Entity Setup
notif.nent_enabled = (var_cvar >= 1);
notif.nent_type = typeId;
notif.nent_name = strzone(namestring);
+ notif.nent_teamnum = teamnum;
// Other pre-notif-setup requisites
notif_error = false;
}
}
+#define AnnouncerFilename(snd) sprintf("announcer/%s/%s.wav", AnnouncerOption(), snd)
+
void Create_Notification_Entity_Annce(entity notif,
float var_cvar,
string namestring,
{
if(notif.nent_enabled)
{
- precache_sound(sprintf("announcer/%s/%s.wav", AnnouncerOption(), snd));
+ precache_sound(AnnouncerFilename(snd));
notif.nent_channel = channel;
notif.nent_snd = strzone(snd);
notif.nent_vol = vol;
}
else if(icon != "")
{
- LOG_WARNINGF(
+ LOG_WARNF(
(
"^1NOTIFICATION HAS ICON BUT NO HUDARGS: "
"^7net_type = %s, net_name = %s.\n"
if (cpid == CPID_Null && durcnt != "0 0")
{
- LOG_WARNINGF(
+ LOG_WARNF(
(
"Notification has durcnt but no cpid: "
"net_type = %s, net_name = %s."
get_cvars_s,
get_cvars_f,
msg_choice_choices[it.nent_choice_idx],
- sprintf("notification_%s", it.nent_name)
+ sprintf("notification_%s", Get_Notif_CvarName(it))
);
});
}
#define NOTIF_WRITE_ENTITY(e, description) MACRO_BEGIN { \
string notif_msg = sprintf( \
"seta notification_%s \"%d\" \"%s\"\n", \
- e.nent_name, e.nent_default, description \
+ Get_Notif_CvarName(e), e.nent_default, description \
); \
NOTIF_WRITE(notif_msg); \
} MACRO_END
string notif_msg = sprintf( \
"seta notification_%s \"%d\" \"%s\"\n" \
"seta notification_%s_ALLOWED \"%d\" \"%s\"\n", \
- e.nent_name, e.nent_default, descriptiona, \
- e.nent_name, e.nent_challow_def, descriptionb \
+ Get_Notif_CvarName(e), e.nent_default, descriptiona, \
+ Get_Notif_CvarName(e), e.nent_challow_def, descriptionb \
); \
NOTIF_WRITE(notif_msg); \
} MACRO_END
int NOTIF_ANNCE_COUNT = 0; FOREACH(Notifications, it.nent_type == MSG_ANNCE, { ++NOTIF_ANNCE_COUNT; });
NOTIF_WRITE(sprintf("\n// MSG_ANNCE notifications (count = %d):\n", NOTIF_ANNCE_COUNT));
- FOREACH(Notifications, it.nent_type == MSG_ANNCE, {
+ FOREACH(Notifications, it.nent_type == MSG_ANNCE && (!it.nent_teamnum || it.nent_teamnum == NUM_TEAM_1), {
NOTIF_WRITE_ENTITY(it,
"0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled"
);
int NOTIF_INFO_COUNT = 0; FOREACH(Notifications, it.nent_type == MSG_INFO, { ++NOTIF_INFO_COUNT; });
NOTIF_WRITE(sprintf("\n// MSG_INFO notifications (count = %d):\n", NOTIF_INFO_COUNT));
- FOREACH(Notifications, it.nent_type == MSG_INFO, {
+ FOREACH(Notifications, it.nent_type == MSG_INFO && (!it.nent_teamnum || it.nent_teamnum == NUM_TEAM_1), {
NOTIF_WRITE_ENTITY(it,
"0 = off, 1 = print to console, "
"2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
int NOTIF_CENTER_COUNT = 0; FOREACH(Notifications, it.nent_type == MSG_CENTER, { ++NOTIF_CENTER_COUNT; });
NOTIF_WRITE(sprintf("\n// MSG_CENTER notifications (count = %d):\n", NOTIF_CENTER_COUNT));
- FOREACH(Notifications, it.nent_type == MSG_CENTER, {
+ FOREACH(Notifications, it.nent_type == MSG_CENTER && (!it.nent_teamnum || it.nent_teamnum == NUM_TEAM_1), {
NOTIF_WRITE_ENTITY(it,
"0 = off, 1 = centerprint"
);
int NOTIF_MULTI_COUNT = 0; FOREACH(Notifications, it.nent_type == MSG_MULTI, { ++NOTIF_MULTI_COUNT; });
NOTIF_WRITE(sprintf("\n// MSG_MULTI notifications (count = %d):\n", NOTIF_MULTI_COUNT));
- FOREACH(Notifications, it.nent_type == MSG_MULTI, {
+ FOREACH(Notifications, it.nent_type == MSG_MULTI && (!it.nent_teamnum || it.nent_teamnum == NUM_TEAM_1), {
NOTIF_WRITE_ENTITY(it,
"Enable this multiple notification"
);
int NOTIF_CHOICE_COUNT = 0; FOREACH(Notifications, it.nent_type == MSG_CHOICE, { ++NOTIF_CHOICE_COUNT; });
NOTIF_WRITE(sprintf("\n// MSG_CHOICE notifications (count = %d):\n", NOTIF_CHOICE_COUNT));
- FOREACH(Notifications, it.nent_type == MSG_CHOICE, {
+ FOREACH(Notifications, it.nent_type == MSG_CHOICE && (!it.nent_teamnum || it.nent_teamnum == NUM_TEAM_1), {
NOTIF_WRITE_ENTITY_CHOICE(it,
"Choice for this notification 0 = off, 1 = default message, 2 = verbose message",
"Allow choice for this notification 0 = off, 1 = only in warmup mode, 2 = always"
NOTIF_WRITE_HARDCODED(
"allow_chatboxprint", "1",
- "Allow INFO notifications to be printed to chat box"
+ "Allow INFO notifications to be printed to chat box "
"0 = do not allow, "
"1 = allow only if allowed by individual notification_INFO* cvars, "
"2 = force all INFO notifications to be printed to the chatbox"
}
#ifdef CSQC
-void Local_Notification_sound(
- int soundchannel, string soundfile,
- float soundvolume, float soundposition)
+void Local_Notification_sound(int soundchannel, string soundfile, float soundvolume, float soundposition)
{
if ((soundfile != prev_soundfile) || (time >= (prev_soundtime + autocvar_cl_announcer_antispam)))
{
Debug_Notification(sprintf(
"Local_Notification_sound(%f, '%s', %f, %f);\n",
soundchannel,
- sprintf(
- "announcer/%s/%s.wav",
- AnnouncerOption(),
- soundfile
- ),
+ AnnouncerFilename(soundfile),
soundvolume,
soundposition
));
#endif
- _sound(
- NULL,
- soundchannel,
- sprintf(
- "announcer/%s/%s.wav",
- AnnouncerOption(),
- soundfile
- ),
- soundvolume,
- soundposition
- );
+ _sound(NULL, soundchannel, AnnouncerFilename(soundfile), soundvolume, soundposition);
if (prev_soundfile) strunzone(prev_soundfile);
prev_soundfile = strzone(soundfile);
#ifdef NOTIFICATIONS_DEBUG
Debug_Notification(sprintf(
(
- "Local_Notification_sound(NULL, %f, '%s', %f, %f) "
+ "Local_Notification_sound(%f, '%s', %f, %f) "
"^1BLOCKED BY ANTISPAM:^7 prevsnd: '%s', timediff: %f, limit: %f\n"
- ),
- soundchannel,
- sprintf(
- "announcer/%s/%s.wav",
- AnnouncerOption(),
- soundfile
),
+ soundchannel,
+ AnnouncerFilename(soundfile),
soundvolume,
soundposition,
prev_soundfile,
Get_Notif_TypeName(net_type)
));
#endif
- LOG_WARNINGF("Incorrect usage of Local_Notification: %s\n", "Null notification");
+ LOG_WARNF("Incorrect usage of Local_Notification: %s", "Null notification");
return;
}
return;
}
- string s1 = ((notif.nent_stringcount > 0) ? ...(0, string) : "");
- string s2 = ((notif.nent_stringcount > 1) ? ...(1, string) : "");
- string s3 = ((notif.nent_stringcount > 2) ? ...(2, string) : "");
- string s4 = ((notif.nent_stringcount > 3) ? ...(3, string) : "");
+ string s1 = CCR((notif.nent_stringcount > 0) ? ...(0, string) : "");
+ string s2 = CCR((notif.nent_stringcount > 1) ? ...(1, string) : "");
+ string s3 = CCR((notif.nent_stringcount > 2) ? ...(2, string) : "");
+ string s4 = CCR((notif.nent_stringcount > 3) ? ...(3, string) : "");
float f1 = ((notif.nent_floatcount > 0) ? ...((notif.nent_stringcount + 0), float) : 0);
float f2 = ((notif.nent_floatcount > 1) ? ...((notif.nent_stringcount + 1), float) : 0);
float f3 = ((notif.nent_floatcount > 2) ? ...((notif.nent_stringcount + 2), float) : 0);
case MSG_ANNCE:
{
#ifdef CSQC
- Local_Notification_sound(
- notif.nent_channel,
- notif.nent_snd,
- notif.nent_vol,
- notif.nent_position
- );
+ Local_Notification_sound(notif.nent_channel, notif.nent_snd, notif.nent_vol, notif.nent_position);
#else
backtrace("MSG_ANNCE on server?... Please notify Samual immediately!\n");
#endif
{
entity found_choice = notif.nent_optiona;
if (notif.nent_challow_var && (warmup_stage || (notif.nent_challow_var == 2))) {
- switch (cvar(sprintf("notification_%s", notif.nent_name)))
+ switch (cvar(sprintf("notification_%s", Get_Notif_CvarName(notif))))
{
case 1: break;
case 2: found_choice = notif.nent_optionb; break;
#endif
string checkargs = Notification_CheckArgs(broadcast, client);
- if (checkargs != "") { LOG_WARNINGF("Incorrect usage of Kill_Notification: %s", checkargs); return; }
+ if (checkargs != "") { LOG_WARNF("Incorrect usage of Kill_Notification: %s", checkargs); return; }
entity net_notif = new_pure(net_kill_notification);
net_notif.nent_broadcast = broadcast;
net_notif.nent_net_name = ORDINAL(net_cpid);
Net_LinkEntity(net_notif, false, autocvar_notification_lifetime_runtime, Net_Write_Notification);
- FOREACH_ENTITY_CLASS(
- "net_notification",
+ IL_EACH(g_notifications,
(it.owner.nent_type == net_type || net_type == MSG_Null) && (it.owner.nent_cpid == net_cpid || net_cpid == CPID_Null),
{
it.nent_net_name = -1;
if (!notif)
{
- LOG_WARNING("Send_Notification: Could not find notification entity!");
+ LOG_WARN("Send_Notification: Could not find notification entity!");
return;
}
if (!net_name) { checkargs = sprintf("No notification provided! %s", checkargs); }
if (checkargs != "")
{
- LOG_WARNINGF("Incorrect usage of Send_Notification: %s", checkargs);
+ LOG_WARNF("Incorrect usage of Send_Notification: %s", checkargs);
return;
}
if ((notif.nent_stringcount + notif.nent_floatcount) != count)
{
- LOG_WARNINGF(
+ LOG_WARNF(
"Argument mismatch for Send_Notification(%s, ...)! "
"stringcount(%d) + floatcount(%d) != count(%d)\n"
"Check the definition and function call for accuracy...?\n",
return;
}
- if (
- server_is_dedicated
- &&
- (
- broadcast == NOTIF_ALL
- ||
- broadcast == NOTIF_ALL_EXCEPT
- )
- &&
- !(
- net_type == MSG_ANNCE
- ||
- net_type == MSG_CENTER
- )
+ if (server_is_dedicated
+ && (broadcast == NOTIF_ALL || broadcast == NOTIF_ALL_EXCEPT)
+ && !(net_type == MSG_ANNCE || net_type == MSG_CENTER)
)
{
Local_Notification_WOVA(
else
{
entity net_notif = new_pure(net_notification);
+ IL_PUSH(g_notifications, net_notif);
net_notif.owner = notif;
net_notif.nent_broadcast = broadcast;
net_notif.nent_client = client;