Allow non-silent chat triggers to go through OnClientSayCommand (bug 5926, r=psychonic).
authorSystematicMania <systematicmania@gmail.com>
Thu Feb 27 20:22:01 2014 -0500 (2014-02-27)
changeset 42569f0db041581a
parent 4255 dbfcf51478ee
child 4257 fbe69cd9afdf
Allow non-silent chat triggers to go through OnClientSayCommand (bug 5926, r=psychonic).
core/ChatTriggers.cpp
     1.1 --- a/core/ChatTriggers.cpp	Thu Feb 27 09:53:57 2014 -0500
     1.2 +++ b/core/ChatTriggers.cpp	Thu Feb 27 20:22:01 2014 -0500
     1.3 @@ -64,7 +64,7 @@
     1.4  	m_PubTriggerSize = 1;
     1.5  	m_PrivTriggerSize = 1;
     1.6  	m_bIsChatTrigger = false;
     1.7 -	m_bPluginIgnored = false;
     1.8 +	m_bPluginIgnored = true;
     1.9  #if SOURCE_ENGINE == SE_EPISODEONE
    1.10  	m_bIsINS = false;
    1.11  #endif
    1.12 @@ -207,10 +207,10 @@
    1.13  	int client = g_ConCmds.GetCommandClient();
    1.14  	m_bIsChatTrigger = false;
    1.15  	m_bWasFloodedMessage = false;
    1.16 -	m_bPluginIgnored = false;
    1.17 +	m_bPluginIgnored = true;
    1.18  
    1.19  	const char *args = command.ArgS();
    1.20 -	
    1.21 +
    1.22  	if (!args)
    1.23  	{
    1.24  		RETURN_META(MRES_IGNORED);
    1.25 @@ -224,12 +224,11 @@
    1.26  	/* The server console cannot do this */
    1.27  	if (client == 0)
    1.28  	{
    1.29 -		cell_t res = CallOnClientSayCommand(client);
    1.30 -		if (res >= Pl_Handled)
    1.31 +		if (CallOnClientSayCommand(client) >= Pl_Handled)
    1.32  		{
    1.33 -			m_bPluginIgnored = (res >= Pl_Stop);
    1.34  			RETURN_META(MRES_SUPERCEDE);
    1.35  		}
    1.36 +
    1.37  		RETURN_META(MRES_IGNORED);
    1.38  	}
    1.39  
    1.40 @@ -304,15 +303,12 @@
    1.41  		m_bWillProcessInPost = true;
    1.42  	}
    1.43  
    1.44 -	cell_t res = CallOnClientSayCommand(client);
    1.45 -
    1.46 -	if (res >= Pl_Handled)
    1.47 +	if (is_silent && (m_bIsChatTrigger || (g_bSupressSilentFails && pPlayer->GetAdminId() != INVALID_ADMIN_ID)))
    1.48  	{
    1.49 -		m_bPluginIgnored = (res >= Pl_Stop);
    1.50  		RETURN_META(MRES_SUPERCEDE);
    1.51  	}
    1.52  
    1.53 -	if (is_silent && (m_bIsChatTrigger || (g_bSupressSilentFails && pPlayer->GetAdminId() != INVALID_ADMIN_ID)))
    1.54 +	if (CallOnClientSayCommand(client) >= Pl_Handled)
    1.55  	{
    1.56  		RETURN_META(MRES_SUPERCEDE);
    1.57  	}
    1.58 @@ -335,7 +331,7 @@
    1.59  	{
    1.60  		/* Reset this for re-entrancy */
    1.61  		m_bWillProcessInPost = false;
    1.62 -		
    1.63 +
    1.64  		/* Execute the cached command */
    1.65  		unsigned int old = SetReplyTo(SM_REPLY_CHAT);
    1.66  #if SOURCE_ENGINE == SE_DOTA
    1.67 @@ -346,12 +342,8 @@
    1.68  		SetReplyTo(old);
    1.69  	}
    1.70  
    1.71 -	if (m_bPluginIgnored)
    1.72 +	if (!m_bPluginIgnored && m_pOnClientSayCmd_Post->GetFunctionCount() != 0)
    1.73  	{
    1.74 -		m_bPluginIgnored = false;
    1.75 -	}
    1.76 -	else if (!m_bWasFloodedMessage && !m_bIsChatTrigger && m_pOnClientSayCmd_Post->GetFunctionCount() != 0)
    1.77 -	{	
    1.78  		m_pOnClientSayCmd_Post->PushCell(client);
    1.79  		m_pOnClientSayCmd_Post->PushString(m_Arg0Backup);
    1.80  		m_pOnClientSayCmd_Post->PushString(m_ArgSBackup);
    1.81 @@ -404,7 +396,7 @@
    1.82  		{
    1.83  			return false;
    1.84  		}
    1.85 -		
    1.86 +
    1.87  		prepended = true;
    1.88  	}
    1.89  
    1.90 @@ -420,7 +412,7 @@
    1.91  		} else {
    1.92  			len = strncopy(m_ToExecute, args, sizeof(m_ToExecute));
    1.93  		}
    1.94 -		
    1.95 +
    1.96  		/* Check if we need to strip a quote */
    1.97  		if (is_quoted)
    1.98  		{
    1.99 @@ -439,13 +431,16 @@
   1.100  cell_t ChatTriggers::CallOnClientSayCommand(int client)
   1.101  {
   1.102  	cell_t res = Pl_Continue;
   1.103 -	if (!m_bIsChatTrigger && m_pOnClientSayCmd->GetFunctionCount() != 0)
   1.104 +	if (m_pOnClientSayCmd->GetFunctionCount() != 0)
   1.105  	{
   1.106  		m_pOnClientSayCmd->PushCell(client);
   1.107  		m_pOnClientSayCmd->PushString(m_Arg0Backup);
   1.108  		m_pOnClientSayCmd->PushString(m_ArgSBackup);
   1.109  		m_pOnClientSayCmd->Execute(&res);
   1.110  	}
   1.111 +
   1.112 +	m_bPluginIgnored = (res >= Pl_Stop);
   1.113 +
   1.114  	return res;
   1.115  }
   1.116