mirror of
https://github.com/WPMGPRoSToTeMa/SafeNameAndChat.git
synced 2025-02-12 06:48:49 +03:00
Added chat message truncation (to avoid breaking of default engine behaviour)
This commit is contained in:
parent
c5a833768a
commit
713fed3777
33
Main.cpp
33
Main.cpp
@ -448,12 +448,13 @@ bool IsUtf16CharMeanSpace(char16_t ch) {
|
|||||||
cvar_t g_cvarVersion = {"SNAC_Version" , Plugin_info.version, FCVAR_EXTDLL | FCVAR_SERVER, 0, nullptr};
|
cvar_t g_cvarVersion = {"SNAC_Version" , Plugin_info.version, FCVAR_EXTDLL | FCVAR_SERVER, 0, nullptr};
|
||||||
|
|
||||||
cvar_t g_cvarChatReplaceNumberSign = {"SNAC_Chat_ReplaceNumberSign" , "1" , FCVAR_EXTDLL , 0, nullptr};
|
cvar_t g_cvarChatReplaceNumberSign = {"SNAC_Chat_ReplaceNumberSign" , "1" , FCVAR_EXTDLL , 0, nullptr};
|
||||||
cvar_t g_cvarChatReplacePercentSign = {"SNAC_Chat_ReplacePercentSign", "1" , FCVAR_EXTDLL , 0, nullptr};
|
cvar_t g_cvarChatReplacePercentSign = {"SNAC_Chat_ReplacePercentSign" , "1" , FCVAR_EXTDLL , 0, nullptr};
|
||||||
cvar_t g_cvarChatRemoveUnprintable = {"SNAC_Chat_RemoveUnprintable" , "1" , FCVAR_EXTDLL , 0, nullptr};
|
cvar_t g_cvarChatRemoveUnprintable = {"SNAC_Chat_RemoveUnprintable" , "1" , FCVAR_EXTDLL , 0, nullptr};
|
||||||
cvar_t g_cvarChatTrimSpaces = {"SNAC_Chat_TrimSpaces" , "1" , FCVAR_EXTDLL , 0, nullptr};
|
cvar_t g_cvarChatTrimSpaces = {"SNAC_Chat_TrimSpaces" , "1" , FCVAR_EXTDLL , 0, nullptr};
|
||||||
|
cvar_t g_cvarChatTruncateToEngineLimitAfterReplace = {"SNAC_Chat_TruncateToEngineLimitAfterReplace", "1" , FCVAR_EXTDLL , 0, nullptr};
|
||||||
|
|
||||||
cvar_t g_cvarNameReplaceNumberSign = {"SNAC_Name_ReplaceNumberSign" , "1" , FCVAR_EXTDLL , 0, nullptr};
|
cvar_t g_cvarNameReplaceNumberSign = {"SNAC_Name_ReplaceNumberSign" , "1" , FCVAR_EXTDLL , 0, nullptr};
|
||||||
cvar_t g_cvarNameReplacePercentSign = {"SNAC_Name_ReplacePercentSign", "1" , FCVAR_EXTDLL , 0, nullptr};
|
cvar_t g_cvarNameReplacePercentSign = {"SNAC_Name_ReplacePercentSign" , "1" , FCVAR_EXTDLL , 0, nullptr};
|
||||||
cvar_t g_cvarNameReplaceAmpersand = {"SNAC_Name_ReplaceAmpersand" , "1" , FCVAR_EXTDLL , 0, nullptr};
|
cvar_t g_cvarNameReplaceAmpersand = {"SNAC_Name_ReplaceAmpersand" , "1" , FCVAR_EXTDLL , 0, nullptr};
|
||||||
cvar_t g_cvarNameReplacePlusSign = {"SNAC_Name_ReplacePlusSign" , "1" , FCVAR_EXTDLL , 0, nullptr};
|
cvar_t g_cvarNameReplacePlusSign = {"SNAC_Name_ReplacePlusSign" , "1" , FCVAR_EXTDLL , 0, nullptr};
|
||||||
cvar_t g_cvarNameRemoveUnprintable = {"SNAC_Name_RemoveUnprintable" , "1" , FCVAR_EXTDLL , 0, nullptr};
|
cvar_t g_cvarNameRemoveUnprintable = {"SNAC_Name_RemoveUnprintable" , "1" , FCVAR_EXTDLL , 0, nullptr};
|
||||||
@ -463,6 +464,7 @@ cvar_t *g_pcvarChatReplaceNumberSign;
|
|||||||
cvar_t *g_pcvarChatReplacePercentSign;
|
cvar_t *g_pcvarChatReplacePercentSign;
|
||||||
cvar_t *g_pcvarChatRemoveUnprintable;
|
cvar_t *g_pcvarChatRemoveUnprintable;
|
||||||
cvar_t *g_pcvarChatTrimSpaces;
|
cvar_t *g_pcvarChatTrimSpaces;
|
||||||
|
cvar_t *g_pcvarChatTruncateToEngineLimitAfterReplace;
|
||||||
|
|
||||||
cvar_t *g_pcvarNameReplaceNumberSign;
|
cvar_t *g_pcvarNameReplaceNumberSign;
|
||||||
cvar_t *g_pcvarNameReplacePercentSign;
|
cvar_t *g_pcvarNameReplacePercentSign;
|
||||||
@ -524,6 +526,25 @@ void OnClientCommand_PreHook(edict_t *pPlayerEntity) {
|
|||||||
}
|
}
|
||||||
utf16Args[lastNonSpacePos] = u'\0';
|
utf16Args[lastNonSpacePos] = u'\0';
|
||||||
|
|
||||||
|
if (g_pcvarChatTruncateToEngineLimitAfterReplace->value != 0.0f) {
|
||||||
|
size_t utf8Length = 0;
|
||||||
|
size_t maxLength = restoreQuotes ? 125 : 127;
|
||||||
|
for (size_t i = 0; i != lastNonSpacePos; i++) {
|
||||||
|
if (utf16Args[i] < 0x80) {
|
||||||
|
utf8Length++;
|
||||||
|
} else if (utf16Args[i] < 0x800) {
|
||||||
|
utf8Length += 2;
|
||||||
|
} else {
|
||||||
|
utf8Length += 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (utf8Length > maxLength) {
|
||||||
|
utf16Args[i] = u'\0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (restoreQuotes) {
|
if (restoreQuotes) {
|
||||||
origArgs = CMD_ARGS();
|
origArgs = CMD_ARGS();
|
||||||
*(char *)&origArgs[0] = '"';
|
*(char *)&origArgs[0] = '"';
|
||||||
@ -619,7 +640,7 @@ plugin_info_t Plugin_info = {
|
|||||||
META_INTERFACE_VERSION, // ifvers
|
META_INTERFACE_VERSION, // ifvers
|
||||||
"SafeNameAndChat", // name
|
"SafeNameAndChat", // name
|
||||||
PLUGIN_VERSION, // version
|
PLUGIN_VERSION, // version
|
||||||
"2017.01.30", // date
|
"2017.02.01", // date
|
||||||
"WPMG.PRoSToC0der", // author
|
"WPMG.PRoSToC0der", // author
|
||||||
"http://snac.wpmg.ru/", // url
|
"http://snac.wpmg.ru/", // url
|
||||||
"SNAC", // logtag, all caps please
|
"SNAC", // logtag, all caps please
|
||||||
@ -652,6 +673,7 @@ C_DLLEXPORT int Meta_Attach(PLUG_LOADTIME now, META_FUNCTIONS *pFunctionTable, m
|
|||||||
CVAR_REGISTER(&g_cvarChatReplacePercentSign);
|
CVAR_REGISTER(&g_cvarChatReplacePercentSign);
|
||||||
CVAR_REGISTER(&g_cvarChatRemoveUnprintable);
|
CVAR_REGISTER(&g_cvarChatRemoveUnprintable);
|
||||||
CVAR_REGISTER(&g_cvarChatTrimSpaces);
|
CVAR_REGISTER(&g_cvarChatTrimSpaces);
|
||||||
|
CVAR_REGISTER(&g_cvarChatTruncateToEngineLimitAfterReplace);
|
||||||
|
|
||||||
CVAR_REGISTER(&g_cvarNameReplaceNumberSign);
|
CVAR_REGISTER(&g_cvarNameReplaceNumberSign);
|
||||||
CVAR_REGISTER(&g_cvarNameReplacePercentSign);
|
CVAR_REGISTER(&g_cvarNameReplacePercentSign);
|
||||||
@ -661,12 +683,13 @@ C_DLLEXPORT int Meta_Attach(PLUG_LOADTIME now, META_FUNCTIONS *pFunctionTable, m
|
|||||||
CVAR_REGISTER(&g_cvarNameTrimSpaces);
|
CVAR_REGISTER(&g_cvarNameTrimSpaces);
|
||||||
|
|
||||||
g_pcvarChatReplaceNumberSign = CVAR_GET_POINTER(g_cvarChatReplaceNumberSign .name);
|
g_pcvarChatReplaceNumberSign = CVAR_GET_POINTER(g_cvarChatReplaceNumberSign .name);
|
||||||
g_pcvarChatReplacePercentSign = CVAR_GET_POINTER(g_cvarChatReplacePercentSign.name);
|
g_pcvarChatReplacePercentSign = CVAR_GET_POINTER(g_cvarChatReplacePercentSign .name);
|
||||||
g_pcvarChatRemoveUnprintable = CVAR_GET_POINTER(g_cvarChatRemoveUnprintable .name);
|
g_pcvarChatRemoveUnprintable = CVAR_GET_POINTER(g_cvarChatRemoveUnprintable .name);
|
||||||
g_pcvarChatTrimSpaces = CVAR_GET_POINTER(g_cvarChatTrimSpaces .name);
|
g_pcvarChatTrimSpaces = CVAR_GET_POINTER(g_cvarChatTrimSpaces .name);
|
||||||
|
g_pcvarChatTruncateToEngineLimitAfterReplace = CVAR_GET_POINTER(g_cvarChatTruncateToEngineLimitAfterReplace.name);
|
||||||
|
|
||||||
g_pcvarNameReplaceNumberSign = CVAR_GET_POINTER(g_cvarNameReplaceNumberSign .name);
|
g_pcvarNameReplaceNumberSign = CVAR_GET_POINTER(g_cvarNameReplaceNumberSign .name);
|
||||||
g_pcvarNameReplacePercentSign = CVAR_GET_POINTER(g_cvarNameReplacePercentSign.name);
|
g_pcvarNameReplacePercentSign = CVAR_GET_POINTER(g_cvarNameReplacePercentSign .name);
|
||||||
g_pcvarNameReplaceAmpersand = CVAR_GET_POINTER(g_cvarNameReplaceAmpersand .name);
|
g_pcvarNameReplaceAmpersand = CVAR_GET_POINTER(g_cvarNameReplaceAmpersand .name);
|
||||||
g_pcvarNameReplacePlusSign = CVAR_GET_POINTER(g_cvarNameReplacePlusSign .name);
|
g_pcvarNameReplacePlusSign = CVAR_GET_POINTER(g_cvarNameReplacePlusSign .name);
|
||||||
g_pcvarNameRemoveUnprintable = CVAR_GET_POINTER(g_cvarNameRemoveUnprintable .name);
|
g_pcvarNameRemoveUnprintable = CVAR_GET_POINTER(g_cvarNameRemoveUnprintable .name);
|
||||||
|
2
Main.h
2
Main.h
@ -1,3 +1,3 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
const char PLUGIN_VERSION[] = "1.0.1";
|
const char PLUGIN_VERSION[] = "1.1";
|
@ -2,6 +2,7 @@ SNAC_Chat_ReplaceNumberSign 1
|
|||||||
SNAC_Chat_ReplacePercentSign 1
|
SNAC_Chat_ReplacePercentSign 1
|
||||||
SNAC_Chat_RemoveUnprintable 1
|
SNAC_Chat_RemoveUnprintable 1
|
||||||
SNAC_Chat_TrimSpaces 1
|
SNAC_Chat_TrimSpaces 1
|
||||||
|
SNAC_Chat_TruncateToEngineLimitAfterReplace 1
|
||||||
|
|
||||||
SNAC_Name_ReplaceNumberSign 1
|
SNAC_Name_ReplaceNumberSign 1
|
||||||
SNAC_Name_ReplacePercentSign 1
|
SNAC_Name_ReplacePercentSign 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user