Allow non-silent chat triggers to go through OnClientSayCommand (bug 5926, r=psychonic).
This commit is contained in:
parent
b99ab3d1d2
commit
c679b97e5f
@ -64,7 +64,7 @@ ChatTriggers::ChatTriggers() : m_pSayCmd(NULL), m_bWillProcessInPost(false),
|
|||||||
m_PubTriggerSize = 1;
|
m_PubTriggerSize = 1;
|
||||||
m_PrivTriggerSize = 1;
|
m_PrivTriggerSize = 1;
|
||||||
m_bIsChatTrigger = false;
|
m_bIsChatTrigger = false;
|
||||||
m_bPluginIgnored = false;
|
m_bPluginIgnored = true;
|
||||||
#if SOURCE_ENGINE == SE_EPISODEONE
|
#if SOURCE_ENGINE == SE_EPISODEONE
|
||||||
m_bIsINS = false;
|
m_bIsINS = false;
|
||||||
#endif
|
#endif
|
||||||
@ -207,10 +207,10 @@ void ChatTriggers::OnSayCommand_Pre()
|
|||||||
int client = g_ConCmds.GetCommandClient();
|
int client = g_ConCmds.GetCommandClient();
|
||||||
m_bIsChatTrigger = false;
|
m_bIsChatTrigger = false;
|
||||||
m_bWasFloodedMessage = false;
|
m_bWasFloodedMessage = false;
|
||||||
m_bPluginIgnored = false;
|
m_bPluginIgnored = true;
|
||||||
|
|
||||||
const char *args = command.ArgS();
|
const char *args = command.ArgS();
|
||||||
|
|
||||||
if (!args)
|
if (!args)
|
||||||
{
|
{
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
@ -224,12 +224,11 @@ void ChatTriggers::OnSayCommand_Pre()
|
|||||||
/* The server console cannot do this */
|
/* The server console cannot do this */
|
||||||
if (client == 0)
|
if (client == 0)
|
||||||
{
|
{
|
||||||
cell_t res = CallOnClientSayCommand(client);
|
if (CallOnClientSayCommand(client) >= Pl_Handled)
|
||||||
if (res >= Pl_Handled)
|
|
||||||
{
|
{
|
||||||
m_bPluginIgnored = (res >= Pl_Stop);
|
|
||||||
RETURN_META(MRES_SUPERCEDE);
|
RETURN_META(MRES_SUPERCEDE);
|
||||||
}
|
}
|
||||||
|
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -304,15 +303,12 @@ void ChatTriggers::OnSayCommand_Pre()
|
|||||||
m_bWillProcessInPost = true;
|
m_bWillProcessInPost = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
cell_t res = CallOnClientSayCommand(client);
|
if (is_silent && (m_bIsChatTrigger || (g_bSupressSilentFails && pPlayer->GetAdminId() != INVALID_ADMIN_ID)))
|
||||||
|
|
||||||
if (res >= Pl_Handled)
|
|
||||||
{
|
{
|
||||||
m_bPluginIgnored = (res >= Pl_Stop);
|
|
||||||
RETURN_META(MRES_SUPERCEDE);
|
RETURN_META(MRES_SUPERCEDE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_silent && (m_bIsChatTrigger || (g_bSupressSilentFails && pPlayer->GetAdminId() != INVALID_ADMIN_ID)))
|
if (CallOnClientSayCommand(client) >= Pl_Handled)
|
||||||
{
|
{
|
||||||
RETURN_META(MRES_SUPERCEDE);
|
RETURN_META(MRES_SUPERCEDE);
|
||||||
}
|
}
|
||||||
@ -335,7 +331,7 @@ void ChatTriggers::OnSayCommand_Post()
|
|||||||
{
|
{
|
||||||
/* Reset this for re-entrancy */
|
/* Reset this for re-entrancy */
|
||||||
m_bWillProcessInPost = false;
|
m_bWillProcessInPost = false;
|
||||||
|
|
||||||
/* Execute the cached command */
|
/* Execute the cached command */
|
||||||
unsigned int old = SetReplyTo(SM_REPLY_CHAT);
|
unsigned int old = SetReplyTo(SM_REPLY_CHAT);
|
||||||
#if SOURCE_ENGINE == SE_DOTA
|
#if SOURCE_ENGINE == SE_DOTA
|
||||||
@ -346,12 +342,8 @@ void ChatTriggers::OnSayCommand_Post()
|
|||||||
SetReplyTo(old);
|
SetReplyTo(old);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_bPluginIgnored)
|
if (!m_bPluginIgnored && m_pOnClientSayCmd_Post->GetFunctionCount() != 0)
|
||||||
{
|
{
|
||||||
m_bPluginIgnored = false;
|
|
||||||
}
|
|
||||||
else if (!m_bWasFloodedMessage && !m_bIsChatTrigger && m_pOnClientSayCmd_Post->GetFunctionCount() != 0)
|
|
||||||
{
|
|
||||||
m_pOnClientSayCmd_Post->PushCell(client);
|
m_pOnClientSayCmd_Post->PushCell(client);
|
||||||
m_pOnClientSayCmd_Post->PushString(m_Arg0Backup);
|
m_pOnClientSayCmd_Post->PushString(m_Arg0Backup);
|
||||||
m_pOnClientSayCmd_Post->PushString(m_ArgSBackup);
|
m_pOnClientSayCmd_Post->PushString(m_ArgSBackup);
|
||||||
@ -404,7 +396,7 @@ bool ChatTriggers::PreProcessTrigger(edict_t *pEdict, const char *args, bool is_
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
prepended = true;
|
prepended = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -420,7 +412,7 @@ bool ChatTriggers::PreProcessTrigger(edict_t *pEdict, const char *args, bool is_
|
|||||||
} else {
|
} else {
|
||||||
len = strncopy(m_ToExecute, args, sizeof(m_ToExecute));
|
len = strncopy(m_ToExecute, args, sizeof(m_ToExecute));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if we need to strip a quote */
|
/* Check if we need to strip a quote */
|
||||||
if (is_quoted)
|
if (is_quoted)
|
||||||
{
|
{
|
||||||
@ -439,13 +431,16 @@ bool ChatTriggers::PreProcessTrigger(edict_t *pEdict, const char *args, bool is_
|
|||||||
cell_t ChatTriggers::CallOnClientSayCommand(int client)
|
cell_t ChatTriggers::CallOnClientSayCommand(int client)
|
||||||
{
|
{
|
||||||
cell_t res = Pl_Continue;
|
cell_t res = Pl_Continue;
|
||||||
if (!m_bIsChatTrigger && m_pOnClientSayCmd->GetFunctionCount() != 0)
|
if (m_pOnClientSayCmd->GetFunctionCount() != 0)
|
||||||
{
|
{
|
||||||
m_pOnClientSayCmd->PushCell(client);
|
m_pOnClientSayCmd->PushCell(client);
|
||||||
m_pOnClientSayCmd->PushString(m_Arg0Backup);
|
m_pOnClientSayCmd->PushString(m_Arg0Backup);
|
||||||
m_pOnClientSayCmd->PushString(m_ArgSBackup);
|
m_pOnClientSayCmd->PushString(m_ArgSBackup);
|
||||||
m_pOnClientSayCmd->Execute(&res);
|
m_pOnClientSayCmd->Execute(&res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_bPluginIgnored = (res >= Pl_Stop);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user