diff --git a/configs/core.cfg b/configs/core.cfg index 02889b7c..72872455 100644 --- a/configs/core.cfg +++ b/configs/core.cfg @@ -46,6 +46,13 @@ * String to use as the silent chat trigger. Set an empty string to disable. */ "SilentChatTrigger" "/" + + /** + * Optional, second string to use as the silent chat trigger. Set an empty + * string to disable. This is can be useful on games that steal the primary + * choice (such as TF2 and "/") + */ + "SilentChatTrigger2" "." /** * If a say command is a silent chat trigger, and is used by an admin, diff --git a/core/ChatTriggers.cpp b/core/ChatTriggers.cpp index 0cfc9042..127a616a 100644 --- a/core/ChatTriggers.cpp +++ b/core/ChatTriggers.cpp @@ -63,8 +63,10 @@ ChatTriggers::ChatTriggers() : m_pSayCmd(NULL), m_bWillProcessInPost(false), { m_PubTrigger = sm_strdup("!"); m_PrivTrigger = sm_strdup("/"); + m_PrivTrigger2 = sm_strdup("."); m_PubTriggerSize = 1; m_PrivTriggerSize = 1; + m_PrivTriggerSize2 = 1; m_bIsChatTrigger = false; } @@ -74,6 +76,8 @@ ChatTriggers::~ChatTriggers() m_PubTrigger = NULL; delete [] m_PrivTrigger; m_PrivTrigger = NULL; + delete [] m_PrivTrigger2; + m_PrivTrigger2 = NULL; } ConfigResult ChatTriggers::OnSourceModConfigChanged(const char *key, @@ -96,6 +100,13 @@ ConfigResult ChatTriggers::OnSourceModConfigChanged(const char *key, m_PrivTriggerSize = strlen(m_PrivTrigger); return ConfigResult_Accept; } + else if (strcmp(key, "SilentChatTrigger2") == 0) + { + delete [] m_PrivTrigger2; + m_PrivTrigger2 = sm_strdup(value); + m_PrivTriggerSize2 = strlen(m_PrivTrigger2); + return ConfigResult_Accept; + } else if (strcmp(key, "SilentFailSuppress") == 0) { g_bSupressSilentFails = strcmp(value, "yes") == 0; @@ -252,12 +263,18 @@ void ChatTriggers::OnSayCommand_Pre() is_trigger = true; args = &args[m_PubTriggerSize]; } - else if (m_PrivTriggerSize && strncmp(args, m_PrivTrigger, m_PrivTriggerSize) == 0) + else if (m_PrivTriggerSize && strncmp(args, m_PrivTrigger, m_PrivTriggerSize) == 0) { is_trigger = true; is_silent = true; args = &args[m_PrivTriggerSize]; } + else if (m_PrivTriggerSize2 && strncmp(args, m_PrivTrigger2, m_PrivTriggerSize2) == 0) + { + is_trigger = true; + is_silent = true; + args = &args[m_PrivTriggerSize2]; + } if (!is_trigger) { diff --git a/core/ChatTriggers.h b/core/ChatTriggers.h index c003f997..4b9c73d0 100644 --- a/core/ChatTriggers.h +++ b/core/ChatTriggers.h @@ -75,7 +75,9 @@ private: char *m_PubTrigger; size_t m_PubTriggerSize; char *m_PrivTrigger; + char *m_PrivTrigger2; size_t m_PrivTriggerSize; + size_t m_PrivTriggerSize2; bool m_bWillProcessInPost; bool m_bTriggerWasSilent; bool m_bIsChatTrigger;