@@ -260,21 +260,27 @@ bool CStaticFunctionDefinitions::ClearChatBox()
260260
261261bool CStaticFunctionDefinitions::OutputChatBox (const char * szText, unsigned char ucRed, unsigned char ucGreen, unsigned char ucBlue, bool bColorCoded)
262262{
263- if (strlen (szText) <= MAX_OUTPUTCHATBOX_LENGTH)
264- {
265- CLuaArguments Arguments;
266- Arguments.PushString (szText);
267- Arguments.PushNumber (ucRed);
268- Arguments.PushNumber (ucGreen);
269- Arguments.PushNumber (ucBlue);
263+ if (!szText || szText[0 ] == ' \0 ' )
264+ return false ;
265+
266+ SString textToProcess = bColorCoded ? RemoveColorCodes (szText) : szText;
267+
268+ if (textToProcess.length () > MAX_OUTPUTCHATBOX_LENGTH) {
269+ return false ;
270+ }
270271
271- bool bCancelled = !g_pClientGame->GetRootEntity ()->CallEvent (" onClientChatMessage" , Arguments, false );
272- if (!bCancelled)
273- {
274- m_pCore->ChatPrintfColor (" %s" , bColorCoded, ucRed, ucGreen, ucBlue, szText);
275- return true ;
276- }
272+ CLuaArguments Arguments;
273+ Arguments.PushString (szText);
274+ Arguments.PushNumber (ucRed);
275+ Arguments.PushNumber (ucGreen);
276+ Arguments.PushNumber (ucBlue);
277+
278+ bool bCancelled = !g_pClientGame->GetRootEntity ()->CallEvent (" onClientChatMessage" , Arguments, false );
279+ if (!bCancelled) {
280+ m_pCore->ChatPrintfColor (" %s" , bColorCoded, ucRed, ucGreen, ucBlue, szText);
281+ return true ;
277282 }
283+
278284 return false ;
279285}
280286
0 commit comments