added amb968 - setting for suppressing potential chat triggers from admins
--HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401800
This commit is contained in:
parent
d87e00a82d
commit
c9a9826989
@ -47,6 +47,15 @@
|
|||||||
*/
|
*/
|
||||||
"SilentChatTrigger" "/"
|
"SilentChatTrigger" "/"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If a say command is a silent chat trigger, and is used by an admin,
|
||||||
|
* but it does not evaluate to an actual command, it will be displayed
|
||||||
|
* publicly. This setting allows you to suppress accidental typings.
|
||||||
|
*
|
||||||
|
* The default value is "no". A value of "yes" will supress.
|
||||||
|
*/
|
||||||
|
"SilentFailSuppress" "no"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Password setinfo key that clients must set. You must change this in order for
|
* Password setinfo key that clients must set. You must change this in order for
|
||||||
* passwords to work, for security reasons.
|
* passwords to work, for security reasons.
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
#include "ChatTriggers.h"
|
#include "ChatTriggers.h"
|
||||||
#include "sm_stringutil.h"
|
#include "sm_stringutil.h"
|
||||||
#include "ConCmdManager.h"
|
#include "ConCmdManager.h"
|
||||||
#include <IPlayerHelpers.h>
|
#include "PlayerManager.h"
|
||||||
|
|
||||||
/* :HACKHACK: We can't SH_DECL here because ConCmdManager.cpp does.
|
/* :HACKHACK: We can't SH_DECL here because ConCmdManager.cpp does.
|
||||||
* While the OB build only runs on MM:S 1.6.0+ (SH 5+), the older one
|
* While the OB build only runs on MM:S 1.6.0+ (SH 5+), the older one
|
||||||
@ -54,6 +54,7 @@ extern bool __SourceHook_FHAddConCommandDispatch(void *, bool, class fastdelegat
|
|||||||
#endif //ORANGEBOX_BUILD
|
#endif //ORANGEBOX_BUILD
|
||||||
|
|
||||||
ChatTriggers g_ChatTriggers;
|
ChatTriggers g_ChatTriggers;
|
||||||
|
bool g_bSupressSilentFails = false;
|
||||||
|
|
||||||
ChatTriggers::ChatTriggers() : m_pSayCmd(NULL), m_bWillProcessInPost(false),
|
ChatTriggers::ChatTriggers() : m_pSayCmd(NULL), m_bWillProcessInPost(false),
|
||||||
m_bTriggerWasSilent(false), m_ReplyTo(SM_REPLY_CONSOLE)
|
m_bTriggerWasSilent(false), m_ReplyTo(SM_REPLY_CONSOLE)
|
||||||
@ -85,12 +86,19 @@ ConfigResult ChatTriggers::OnSourceModConfigChanged(const char *key,
|
|||||||
m_PubTrigger = sm_strdup(value);
|
m_PubTrigger = sm_strdup(value);
|
||||||
m_PubTriggerSize = strlen(m_PubTrigger);
|
m_PubTriggerSize = strlen(m_PubTrigger);
|
||||||
return ConfigResult_Accept;
|
return ConfigResult_Accept;
|
||||||
} else if (strcmp(key, "SilentChatTrigger") == 0) {
|
}
|
||||||
|
else if (strcmp(key, "SilentChatTrigger") == 0)
|
||||||
|
{
|
||||||
delete [] m_PrivTrigger;
|
delete [] m_PrivTrigger;
|
||||||
m_PrivTrigger = sm_strdup(value);
|
m_PrivTrigger = sm_strdup(value);
|
||||||
m_PrivTriggerSize = strlen(m_PrivTrigger);
|
m_PrivTriggerSize = strlen(m_PrivTrigger);
|
||||||
return ConfigResult_Accept;
|
return ConfigResult_Accept;
|
||||||
}
|
}
|
||||||
|
else if (strcmp(key, "SilentFailSuppress") == 0)
|
||||||
|
{
|
||||||
|
g_bSupressSilentFails = strcmp(value, "yes") == 0;
|
||||||
|
return ConfigResult_Accept;
|
||||||
|
}
|
||||||
|
|
||||||
return ConfigResult_Ignore;
|
return ConfigResult_Ignore;
|
||||||
}
|
}
|
||||||
@ -205,6 +213,15 @@ void ChatTriggers::OnSayCommand_Pre()
|
|||||||
*/
|
*/
|
||||||
if (!PreProcessTrigger(engine->PEntityOfEntIndex(client), args, is_quoted))
|
if (!PreProcessTrigger(engine->PEntityOfEntIndex(client), args, is_quoted))
|
||||||
{
|
{
|
||||||
|
CPlayer *pPlayer;
|
||||||
|
if (is_silent
|
||||||
|
&& g_bSupressSilentFails
|
||||||
|
&& client != 0
|
||||||
|
&& (pPlayer = g_Players.GetPlayerByIndex(client)) != NULL
|
||||||
|
&& pPlayer->GetAdminId() != INVALID_ADMIN_ID)
|
||||||
|
{
|
||||||
|
RETURN_META(MRES_SUPERCEDE);
|
||||||
|
}
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user