From c0da9b1a0adec128087eb5652bffef099bc0610b Mon Sep 17 00:00:00 2001 From: OciXCrom Date: Wed, 12 Sep 2018 14:54:07 +0200 Subject: [PATCH 1/7] Initial commit --- plugins/imessage.sma | 71 ++++++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 29 deletions(-) diff --git a/plugins/imessage.sma b/plugins/imessage.sma index f03c11a1b3..136c8a246c 100755 --- a/plugins/imessage.sma +++ b/plugins/imessage.sma @@ -14,60 +14,73 @@ #include #include +#pragma semicolon 1 + #define X_POS -1.0 #define Y_POS 0.20 #define HOLD_TIME 12.0 +#define MAX_MSG_LEN 384 +#define TASK_MSG 12345 + +enum _:MessageInfo +{ + Message[MAX_MSG_LEN], + R, + G, + B +} -new Array:g_Values -new Array:g_Messages -new g_MessagesNum -new g_Current -new amx_freq_imessage; +new Array:g_Messages; +new g_MessagesNum; +new g_Current; + +new g_amx_freq_imessage; +new g_hostname; public plugin_init() { - g_Messages=ArrayCreate(384); - g_Values=ArrayCreate(3); - register_plugin("Info. Messages", AMXX_VERSION_STR, "AMXX Dev Team") - register_dictionary("imessage.txt") - register_dictionary("common.txt") - register_srvcmd("amx_imessage", "setMessage") - amx_freq_imessage=register_cvar("amx_freq_imessage", "10") - - new lastinfo[8] - get_localinfo("lastinfomsg", lastinfo, charsmax(lastinfo)) - g_Current = str_to_num(lastinfo) - set_localinfo("lastinfomsg", "") + register_plugin("Info. Messages", AMXX_VERSION_STR, "AMXX Dev Team"); + register_dictionary("imessage.txt"); + register_dictionary("common.txt"); + register_srvcmd("amx_imessage", "setMessage"); + + g_Messages = ArrayCreate(MessageInfo); + g_amx_freq_imessage = create_cvar("amx_freq_imessage", "10", _, "Frequency in seconds of colored messages", true, 0.0); + g_hostname + + new lastinfo[8]; + get_localinfo("lastinfomsg", lastinfo, charsmax(lastinfo)); + g_Current = str_to_num(lastinfo); + set_localinfo("lastinfomsg", ""); } public infoMessage() { + // If the last message is reached, go back to the first one if (g_Current >= g_MessagesNum) - g_Current = 0 + { + g_Current = 0; + } // No messages, just get out of here - if (g_MessagesNum==0) + if (g_MessagesNum == 0) { return; } - new values[3]; - new Message[384]; - - ArrayGetString(g_Messages, g_Current, Message, charsmax(Message)); - ArrayGetArray(g_Values, g_Current, values); - - new hostname[64]; + static message[MessageInfo]; + ArrayGetArray(g_Messages, g_Current, message); + new hostname[64]; get_cvar_string("hostname", hostname, charsmax(hostname)); - replace(Message, charsmax(Message), "%hostname%", hostname); + replace(message, charsmax(message), "%hostname%", hostname); set_hudmessage(values[0], values[1], values[2], X_POS, Y_POS, 0, 0.5, HOLD_TIME, 2.0, 2.0, -1); - show_hudmessage(0, "%s", Message); + show_hudmessage(0, "%s", message); - client_print(0, print_console, "%s", Message); + client_print(0, print_console, "%s", message); ++g_Current; new Float:freq_im = get_pcvar_float(amx_freq_imessage); From 4846a350cb4f311b3d29bcf3d4edcd8ad76b2974 Mon Sep 17 00:00:00 2001 From: OciXCrom Date: Wed, 12 Sep 2018 16:21:10 +0200 Subject: [PATCH 2/7] Modernize imessage.sma --- plugins/imessage.sma | 143 +++++++++++++++++++++++-------------------- 1 file changed, 76 insertions(+), 67 deletions(-) diff --git a/plugins/imessage.sma b/plugins/imessage.sma index 136c8a246c..37cf8860a4 100755 --- a/plugins/imessage.sma +++ b/plugins/imessage.sma @@ -14,11 +14,6 @@ #include #include -#pragma semicolon 1 - -#define X_POS -1.0 -#define Y_POS 0.20 -#define HOLD_TIME 12.0 #define MAX_MSG_LEN 384 #define TASK_MSG 12345 @@ -31,106 +26,120 @@ enum _:MessageInfo } -new Array:g_Messages; -new g_MessagesNum; -new g_Current; +new Array:g_messages; +new g_messagesNum; +new g_hudObject; +new g_current; -new g_amx_freq_imessage; -new g_hostname; +new g_hostname[64]; +new Float:g_amx_freq_imessage; +new Float:g_amx_imessage_x_pos; +new Float:g_amx_imessage_y_pos; +new Float:g_amx_imessage_holdtime; +new g_amx_imessage_only_dead; public plugin_init() { register_plugin("Info. Messages", AMXX_VERSION_STR, "AMXX Dev Team"); + register_srvcmd("amx_imessage", "setMessage", _, " [color in RRRGGGBBB format]"); + register_dictionary("imessage.txt"); register_dictionary("common.txt"); - register_srvcmd("amx_imessage", "setMessage"); - g_Messages = ArrayCreate(MessageInfo); - g_amx_freq_imessage = create_cvar("amx_freq_imessage", "10", _, "Frequency in seconds of colored messages", true, 0.0); - g_hostname + g_messages = ArrayCreate(MessageInfo); + g_hudObject = CreateHudSyncObj(); + + bind_pcvar_num(create_cvar("amx_imessage_only_dead", "0", _, "Set to 1 if to show info messages only to dead clients", true, 0.0, true, 1.0), g_amx_imessage_only_dead); + bind_pcvar_float(create_cvar("amx_freq_imessage", "180", _, "Frequency in seconds of info messages", true, 0.0), g_amx_freq_imessage); + bind_pcvar_float(create_cvar("amx_imessage_x_pos", "-1.0", _, "X position for info messages", true, -1.0, true, 1.0), g_amx_imessage_x_pos); + bind_pcvar_float(create_cvar("amx_imessage_y_pos", "0.20", _, "Y position for info messages", true, -1.0, true, 1.0), g_amx_imessage_y_pos); + bind_pcvar_float(create_cvar("amx_imessage_holdtime", "12.0", _, "Hold time for info messages", true, -1.0, true, 1.0), g_amx_imessage_holdtime); + bind_pcvar_string(get_cvar_pointer("hostname"), g_hostname, charsmax(g_hostname)); new lastinfo[8]; get_localinfo("lastinfomsg", lastinfo, charsmax(lastinfo)); - g_Current = str_to_num(lastinfo); + g_current = str_to_num(lastinfo); set_localinfo("lastinfomsg", ""); } public infoMessage() { // If the last message is reached, go back to the first one - if (g_Current >= g_MessagesNum) + if (g_current >= g_messagesNum) { - g_Current = 0; + g_current = 0; } // No messages, just get out of here - if (g_MessagesNum == 0) + if (g_messagesNum == 0) { return; } static message[MessageInfo]; - ArrayGetArray(g_Messages, g_Current, message); - - new hostname[64]; - get_cvar_string("hostname", hostname, charsmax(hostname)); - replace(message, charsmax(message), "%hostname%", hostname); + ArrayGetArray(g_messages, g_current, message); + replace_stringex(message[Message], charsmax(message[Message]), "%hostname%", g_hostname); - set_hudmessage(values[0], values[1], values[2], X_POS, Y_POS, 0, 0.5, HOLD_TIME, 2.0, 2.0, -1); - - show_hudmessage(0, "%s", message); - - client_print(0, print_console, "%s", message); - ++g_Current; + set_hudmessage(message[R], message[G], message[B], g_amx_imessage_x_pos, g_amx_imessage_y_pos, 0, 0.5, g_amx_imessage_holdtime, 2.0, 2.0, -1); + + if(g_amx_imessage_only_dead) + { + new players[MAX_PLAYERS], pnum; + get_players_ex(players, pnum, GetPlayers_ExcludeAlive); + + for(new player, i; i < pnum; i++) + { + player = players[i]; + + ShowSyncHudMsg(player, g_hudObject, message[Message]); + console_print(player, message[Message]); + } + } + else + { + ShowSyncHudMsg(0, g_hudObject, message[Message]); + console_print(0, message[Message]); + } - new Float:freq_im = get_pcvar_float(amx_freq_imessage); + g_current++; - if (freq_im > 0.0) - set_task(freq_im, "infoMessage", 12345); + if (g_amx_freq_imessage > 0.0) + { + set_task(g_amx_freq_imessage, "infoMessage", TASK_MSG); + } } public setMessage() { + remove_task(TASK_MSG); - new Message[384]; - - remove_task(12345) - read_argv(1, Message, charsmax(Message)) - - while (replace(Message, charsmax(Message), "\n", "^n")) {} - - new mycol[12] - new vals[3]; - - read_argv(2, mycol, charsmax(mycol)) // RRRGGGBBB - vals[2] = str_to_num(mycol[6]) - - mycol[6] = 0 - vals[1] = str_to_num(mycol[3]) - - mycol[3] = 0 - vals[0] = str_to_num(mycol[0]) - - g_MessagesNum++ - - new Float:freq_im = get_pcvar_float(amx_freq_imessage) - - ArrayPushString(g_Messages, Message); - ArrayPushArray(g_Values, vals); + static message[MessageInfo]; + read_argv(1, message[Message], charsmax(message[Message])); + replace_string(message[Message], charsmax(message[Message]), "\n", "^n"); + + new fullcolor[10]; + read_argv(2, fullcolor, charsmax(fullcolor)); + + message[B] = str_to_num(fullcolor[6]); + fullcolor[6] = 0; + + message[G] = str_to_num(fullcolor[3]); + fullcolor[3] = 0; + + message[R] = str_to_num(fullcolor[0]); + fullcolor[0] = 0; + + g_messagesNum++; + ArrayPushArray(g_messages, message); - if (freq_im > 0.0) - set_task(freq_im, "infoMessage", 12345) + if (g_amx_freq_imessage > 0.0) + set_task(g_amx_freq_imessage, "infoMessage", TASK_MSG); - return PLUGIN_HANDLED + return PLUGIN_HANDLED; } public plugin_end() { - new lastinfo[8] - - num_to_str(g_Current, lastinfo, charsmax(lastinfo)) - set_localinfo("lastinfomsg", lastinfo) - - ArrayDestroy(g_Messages) - ArrayDestroy(g_Values) + ArrayDestroy(g_messages); + set_localinfo("lastinfomsg", fmt("%i", g_current)); } From 42adcc77009221bdbb6f7685ef0d74ec0961e9da Mon Sep 17 00:00:00 2001 From: OciXCrom Date: Wed, 12 Sep 2018 16:25:51 +0200 Subject: [PATCH 3/7] Update amxx.cfg for all games --- configs/amxx.cfg | 24 ++++++++++++++++++++++-- configs/cstrike/amxx.cfg | 24 ++++++++++++++++++++++-- configs/ns/amxx.cfg | 24 ++++++++++++++++++++++-- plugins/imessage.sma | 21 +++++++++++---------- 4 files changed, 77 insertions(+), 16 deletions(-) diff --git a/configs/amxx.cfg b/configs/amxx.cfg index 00d3447451..7641f5f744 100755 --- a/configs/amxx.cfg +++ b/configs/amxx.cfg @@ -37,18 +37,38 @@ amx_show_activity 2 // Default value: "Welcome to %hostname% -- This server is using AMX Mod X" 600 amx_scrollmsg "Welcome to %hostname% -- This server is using AMX Mod X" 600 -// Center typed colored messages (last parameter is a color in RRRGGGBBB format) +// Center typed colored info messages (last parameter is a color in RRRGGGBBB format) // // Default values: "Welcome to %hostname%" "000255100" // "This server is using AMX ModX\nVisit http://www.amxmodx.org" "000100255" amx_imessage "Welcome to %hostname%" "000255100" amx_imessage "This server is using AMX Mod X\nVisit http://www.amxmodx.org" "000100255" -// Frequency in seconds of colored messages +// Frequency in seconds of info messages // // Default value: 180 amx_freq_imessage 180 +// X position on the screen for info messages +// +// Default value: -1.0 +amx_imessage_x_pos -1.0 + +// Y position on the screen for info messages +// +// Default value: 0.2 +amx_imessage_y_pos 0.2 + +// Hold time for info messages +// +// Default value: 12.0 +amx_imessage_x_pos 12.0 + +// Set to 1 if you want to show info messages only to dead clients +// +// Default value: 0 +amx_imessage_only_dead 0 + // Ban times for the main ban menu (amx_banmenu) // Use 0 for permanent ban. // Default values: 0 5 10 15 30 45 60 diff --git a/configs/cstrike/amxx.cfg b/configs/cstrike/amxx.cfg index a6fb7ba33f..0dffa597ca 100755 --- a/configs/cstrike/amxx.cfg +++ b/configs/cstrike/amxx.cfg @@ -37,18 +37,38 @@ amx_show_activity 2 // Default value: "Welcome to %hostname% -- This server is using AMX Mod X" 600 amx_scrollmsg "Welcome to %hostname% -- This server is using AMX Mod X" 600 -// Center typed colored messages (last parameter is a color in RRRGGGBBB format) +// Center typed colored info messages (last parameter is a color in RRRGGGBBB format) // // Default values: "Welcome to %hostname%" "000255100" // "This server is using AMX ModX\nVisit http://www.amxmodx.org" "000100255" amx_imessage "Welcome to %hostname%" "000255100" amx_imessage "This server is using AMX Mod X\nVisit http://www.amxmodx.org" "000100255" -// Frequency in seconds of colored messages +// Frequency in seconds of info messages // // Default value: 180 amx_freq_imessage 180 +// X position on the screen for info messages +// +// Default value: -1.0 +amx_imessage_x_pos -1.0 + +// Y position on the screen for info messages +// +// Default value: 0.2 +amx_imessage_y_pos 0.2 + +// Hold time for info messages +// +// Default value: 12.0 +amx_imessage_x_pos 12.0 + +// Set to 1 if you want to show info messages only to dead clients +// +// Default value: 0 +amx_imessage_only_dead 0 + // Ban times for the main ban menu (amx_banmenu) // Use 0 for permanent ban // Default values: 0 5 10 15 30 45 60 diff --git a/configs/ns/amxx.cfg b/configs/ns/amxx.cfg index 047fadf9c8..a2c175ef08 100755 --- a/configs/ns/amxx.cfg +++ b/configs/ns/amxx.cfg @@ -37,18 +37,38 @@ amx_show_activity 2 // Default value: "Welcome to %hostname% -- This server is using AMX Mod X" 600 amx_scrollmsg "Welcome to %hostname% -- This server is using AMX Mod X" 600 -// Center typed colored messages (last parameter is a color in RRRGGGBBB format) +// Center typed colored info messages (last parameter is a color in RRRGGGBBB format) // // Default values: "Welcome to %hostname%" "000255100" // "This server is using AMX ModX\nVisit http://www.amxmodx.org" "000100255" amx_imessage "Welcome to %hostname%" "000255100" amx_imessage "This server is using AMX Mod X\nVisit http://www.amxmodx.org" "000100255" -// Frequency in seconds of colored messages +// Frequency in seconds of info messages // // Default value: 180 amx_freq_imessage 180 +// X position on the screen for info messages +// +// Default value: -1.0 +amx_imessage_x_pos -1.0 + +// Y position on the screen for info messages +// +// Default value: 0.2 +amx_imessage_y_pos 0.2 + +// Hold time for info messages +// +// Default value: 12.0 +amx_imessage_x_pos 12.0 + +// Set to 1 if you want to show info messages only to dead clients +// +// Default value: 0 +amx_imessage_only_dead 0 + // Ban times for the main ban menu (amx_banmenu) // Use 0 for permanent ban. // Default values: 0 5 10 15 30 45 60 diff --git a/plugins/imessage.sma b/plugins/imessage.sma index 37cf8860a4..18ab00d6ee 100755 --- a/plugins/imessage.sma +++ b/plugins/imessage.sma @@ -25,7 +25,6 @@ enum _:MessageInfo B } - new Array:g_messages; new g_messagesNum; new g_hudObject; @@ -42,17 +41,17 @@ public plugin_init() { register_plugin("Info. Messages", AMXX_VERSION_STR, "AMXX Dev Team"); register_srvcmd("amx_imessage", "setMessage", _, " [color in RRRGGGBBB format]"); - + register_dictionary("imessage.txt"); register_dictionary("common.txt"); g_messages = ArrayCreate(MessageInfo); g_hudObject = CreateHudSyncObj(); - bind_pcvar_num(create_cvar("amx_imessage_only_dead", "0", _, "Set to 1 if to show info messages only to dead clients", true, 0.0, true, 1.0), g_amx_imessage_only_dead); + bind_pcvar_num(create_cvar("amx_imessage_only_dead", "0", _, "Set to 1 to show info messages only to dead clients", true, 0.0, true, 1.0), g_amx_imessage_only_dead); bind_pcvar_float(create_cvar("amx_freq_imessage", "180", _, "Frequency in seconds of info messages", true, 0.0), g_amx_freq_imessage); bind_pcvar_float(create_cvar("amx_imessage_x_pos", "-1.0", _, "X position for info messages", true, -1.0, true, 1.0), g_amx_imessage_x_pos); - bind_pcvar_float(create_cvar("amx_imessage_y_pos", "0.20", _, "Y position for info messages", true, -1.0, true, 1.0), g_amx_imessage_y_pos); + bind_pcvar_float(create_cvar("amx_imessage_y_pos", "0.2", _, "Y position for info messages", true, -1.0, true, 1.0), g_amx_imessage_y_pos); bind_pcvar_float(create_cvar("amx_imessage_holdtime", "12.0", _, "Hold time for info messages", true, -1.0, true, 1.0), g_amx_imessage_holdtime); bind_pcvar_string(get_cvar_pointer("hostname"), g_hostname, charsmax(g_hostname)); @@ -64,17 +63,17 @@ public plugin_init() public infoMessage() { + // No messages, just get out of here + if (!g_messagesNum) + { + return; + } + // If the last message is reached, go back to the first one if (g_current >= g_messagesNum) { g_current = 0; } - - // No messages, just get out of here - if (g_messagesNum == 0) - { - return; - } static message[MessageInfo]; ArrayGetArray(g_messages, g_current, message); @@ -133,7 +132,9 @@ public setMessage() ArrayPushArray(g_messages, message); if (g_amx_freq_imessage > 0.0) + { set_task(g_amx_freq_imessage, "infoMessage", TASK_MSG); + } return PLUGIN_HANDLED; } From ba8a9e11f3299db486ad0a8ed682ac3b962f82a1 Mon Sep 17 00:00:00 2001 From: OciXCrom Date: Wed, 12 Sep 2018 16:26:46 +0200 Subject: [PATCH 4/7] Fix wrong cvar name --- configs/amxx.cfg | 2 +- configs/cstrike/amxx.cfg | 2 +- configs/ns/amxx.cfg | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/configs/amxx.cfg b/configs/amxx.cfg index 7641f5f744..a6c1a3e2d3 100755 --- a/configs/amxx.cfg +++ b/configs/amxx.cfg @@ -62,7 +62,7 @@ amx_imessage_y_pos 0.2 // Hold time for info messages // // Default value: 12.0 -amx_imessage_x_pos 12.0 +amx_imessage_holdtime 12.0 // Set to 1 if you want to show info messages only to dead clients // diff --git a/configs/cstrike/amxx.cfg b/configs/cstrike/amxx.cfg index 0dffa597ca..1c886816ca 100755 --- a/configs/cstrike/amxx.cfg +++ b/configs/cstrike/amxx.cfg @@ -62,7 +62,7 @@ amx_imessage_y_pos 0.2 // Hold time for info messages // // Default value: 12.0 -amx_imessage_x_pos 12.0 +amx_imessage_holdtime 12.0 // Set to 1 if you want to show info messages only to dead clients // diff --git a/configs/ns/amxx.cfg b/configs/ns/amxx.cfg index a2c175ef08..cf8d643858 100755 --- a/configs/ns/amxx.cfg +++ b/configs/ns/amxx.cfg @@ -62,7 +62,7 @@ amx_imessage_y_pos 0.2 // Hold time for info messages // // Default value: 12.0 -amx_imessage_x_pos 12.0 +amx_imessage_holdtime 12.0 // Set to 1 if you want to show info messages only to dead clients // From 775083816f009813b1242d036d366be16c285ef3 Mon Sep 17 00:00:00 2001 From: OciXCrom Date: Wed, 12 Sep 2018 19:21:42 +0200 Subject: [PATCH 5/7] Constify defines and fix min/max values for cvars --- plugins/imessage.sma | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/imessage.sma b/plugins/imessage.sma index 18ab00d6ee..6e83f476d8 100755 --- a/plugins/imessage.sma +++ b/plugins/imessage.sma @@ -14,8 +14,8 @@ #include #include -#define MAX_MSG_LEN 384 -#define TASK_MSG 12345 +const MAX_MSG_LEN = 384; +const TASK_MSG = 12345; enum _:MessageInfo { @@ -52,7 +52,7 @@ public plugin_init() bind_pcvar_float(create_cvar("amx_freq_imessage", "180", _, "Frequency in seconds of info messages", true, 0.0), g_amx_freq_imessage); bind_pcvar_float(create_cvar("amx_imessage_x_pos", "-1.0", _, "X position for info messages", true, -1.0, true, 1.0), g_amx_imessage_x_pos); bind_pcvar_float(create_cvar("amx_imessage_y_pos", "0.2", _, "Y position for info messages", true, -1.0, true, 1.0), g_amx_imessage_y_pos); - bind_pcvar_float(create_cvar("amx_imessage_holdtime", "12.0", _, "Hold time for info messages", true, -1.0, true, 1.0), g_amx_imessage_holdtime); + bind_pcvar_float(create_cvar("amx_imessage_holdtime", "12.0", _, "Hold time for info messages", true, 0.0), g_amx_imessage_holdtime); bind_pcvar_string(get_cvar_pointer("hostname"), g_hostname, charsmax(g_hostname)); new lastinfo[8]; From 577101579c840a40a19ad52ac8526707c9d24ed3 Mon Sep 17 00:00:00 2001 From: OciXCrom Date: Thu, 13 Sep 2018 15:23:48 +0200 Subject: [PATCH 6/7] Fix brackets in syntax --- plugins/imessage.sma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/imessage.sma b/plugins/imessage.sma index 6e83f476d8..963f3a4452 100755 --- a/plugins/imessage.sma +++ b/plugins/imessage.sma @@ -40,7 +40,7 @@ new g_amx_imessage_only_dead; public plugin_init() { register_plugin("Info. Messages", AMXX_VERSION_STR, "AMXX Dev Team"); - register_srvcmd("amx_imessage", "setMessage", _, " [color in RRRGGGBBB format]"); + register_srvcmd("amx_imessage", "setMessage", _, " "); register_dictionary("imessage.txt"); register_dictionary("common.txt"); From 7483c0babbe44ec05685ab970f865cffdd56cb48 Mon Sep 17 00:00:00 2001 From: OciXCrom Date: Thu, 13 Sep 2018 16:03:58 +0200 Subject: [PATCH 7/7] Add space after if/for --- plugins/imessage.sma | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/imessage.sma b/plugins/imessage.sma index 963f3a4452..af0bf26d5d 100755 --- a/plugins/imessage.sma +++ b/plugins/imessage.sma @@ -81,12 +81,12 @@ public infoMessage() set_hudmessage(message[R], message[G], message[B], g_amx_imessage_x_pos, g_amx_imessage_y_pos, 0, 0.5, g_amx_imessage_holdtime, 2.0, 2.0, -1); - if(g_amx_imessage_only_dead) + if (g_amx_imessage_only_dead) { new players[MAX_PLAYERS], pnum; get_players_ex(players, pnum, GetPlayers_ExcludeAlive); - for(new player, i; i < pnum; i++) + for (new player, i; i < pnum; i++) { player = players[i];