Просто отключи теги групп или поставь свои для всех. Зачем голову ломать.Вариант хороший с блокировкой таких групп. Судя по всему она одна такая вот она https://steamcommunity.com/groups/0b
Вопрос к скриптерам, как проверять людей которые находятся в этой группе и кикать их ?
Разве такое возможно ? ПоподробнейПросто отключи теги групп
Чёта не понял рофла. Это совет, как отключить клан-тег НА КЛИЕНТЕ? ЪХАХАХАХХАХАХАХ"1)Если зайти на любой сервер и прописать в консоли cl_clanid, то у тебя выйдет что то типо "cl_clanid xxxxx (по стандарту "0") , если стоит 0, то ты не сможешь ставить клант-теги, в созданных тобой группах стима. Заходишь в конфиг игры и жмешь cntrl+f, вводишь clanid и нажимаешь "найти далее", пока не найдешь строчку "cl_clanid 0" (обычно 0 стоит), за место нуля вписываешь идентификатор группы, которую ты создал (найти его можно в редактировании профиля группы)."
через конфиг можно попробовать прописать.
Через GetEntPropString можно, кажется, получить строку с клан-тег и экранировать этот символ, а затем его установить. Само событие установки тега можно отловить так (нашёл где-то в интернете, очень давно, автора не подскажу - прости автор ☹ ):Разве такое возможно ? Поподробней
public Action OnClientCommandKeyValues(int client, KeyValues kv)
{
char sCmd[64];
if (kv.GetSectionName(sCmd, sizeof(sCmd)) && StrEqual(sCmd, "ClanTagChanged", false))
{
}
return Plugin_Continue;
}
CS_SetClientClanTag#pragma newdecls required
#include cstrike
public void OnClientSettingsChanged(int iClient)
{
if(IsClientInGame(iClient) && !IsFakeClient(iClient))
{
char szTag[128];
CS_GetClientClanTag(iClient, szTag, sizeof(szTag));
if(!szTag[0] || FindCharInString(szTag, 14844078) == -1) // \x202E
return;
szTag[0] = 0; // Зануляем клан-тег
CS_SetClientClanTag(iClient, szTag);
}
}
Просто выставить другой клан-тег, тем жеCS_SetClientClanTag
Сам символ:
- Коррекция справа-налево (U+202E)
C-подобный:#pragma newdecls required #include cstrike public void OnClientSettingsChanged(int iClient) { if(IsClientInGame(iClient) && !IsFakeClient(iClient)) { char szTag[128]; CS_GetClientClanTag(iClient, szTag, sizeof(szTag)); if(!szTag[0] || FindCharInString(szTag, 14844078) == -1) // \x202E return; szTag[0] = 0; CS_SetClientClanTag(iClient, szTag); } }
Зануляет клан-тег, если таковой символ имеется. Не думаю, что таких групп много.Так а что получается этот код делает? Заменяет этот символ на что-то (на что не увидел) ?
Может просто удалить из ника этот 202E если это возможно.
Я в коде вообще не шарю :)
#pragma newdecls required
#include cstrike
public void OnClientSettingsChanged(int iClient)
{
if(IsClientInGame(iClient) && !IsFakeClient(iClient))
{
char szTag[128];
CS_GetClientClanTag(iClient, szTag, sizeof(szTag));
int pos;
if(!szTag[0] || (pos = FindCharInString(szTag, 14844078)) == -1) // \x202E
return;
szTag[pos] = ' '; // Замена символа на ' ' - пробел
CS_SetClientClanTag(iClient, szTag);
}
}
Этот вариант работает только если игрок на сервере клан-тэг сменил?Можно конечно конкретно символ заменять:
Этот вариант работает только если игрок на сервере клан-тэг сменил?
Если игрок зайдёт с уже установленным тегом, то ничего не произойдёт?
Выше пример от @local, только изменить. Вот так:Как вообще запретить клан теги групп? Плагин может есть какой нибудь?
#pragma newdecls required
#include cstrike
public void OnClientSettingsChanged(int iClient)
{
if(IsClientInGame(iClient) && !IsFakeClient(iClient))
{
CS_SetClientClanTag(iClient, "\0");
}
}
Захожу на сервер с "зеркальным" клан тэгом и ничего не происходит.
Можешь сделать, чтобы и при подключении заменялся символ?
#pragma newdecls required
#include cstrike
static const char szSymbol[4] = "\xE2\x80\xAE";
public void OnClientSettingsChanged(int iClient)
{
if(IsClientInGame(iClient) && !IsFakeClient(iClient))
{
char szTag[15];
CS_GetClientClanTag(iClient, szTag, sizeof(szTag));
if(StrContains(szTag, szSymbol, false) == -1)
return;
ReplaceString(szTag, sizeof(szTag), szSymbol, "");
CS_SetClientClanTag(iClient, szTag);
}
}
Не понимаю для чего нужна глобалка и нельзя ли просто установить NULL_STRING?Не учел детали, сейчас все должно воркать.
C-подобный:#pragma newdecls required #include cstrike static const char szSymbol[4] = "\xE2\x80\xAE"; public void OnClientSettingsChanged(int iClient) { if(IsClientInGame(iClient) && !IsFakeClient(iClient)) { char szTag[128]; CS_GetClientClanTag(iClient, szTag, sizeof(szTag)); if(StrContains(szTag, szSymbol, false) == -1) return; ReplaceString(szTag, sizeof(szTag), szSymbol, ""); CS_SetClientClanTag(iClient, szTag); } }
Ну если совсем посчитать, то 14 одно-байтовых символов, правда SM округлит это до 16.И памяти ты че то много взял для клан тега, достаточно 16-32 :)
Не учел детали, сейчас все должно воркать.
Эта версия не работает люди все равно заходят с зеркальным ником. Версию с полным отключением тэгов из 16 поста не хочется пока использовать(оставлю на крайний случай уже).Просто выставить другой клан-тег, тем жеCS_SetClientClanTag
Сам символ:
- Коррекция справа-налево (U+202E)
C-подобный:#pragma newdecls required #include cstrike public void OnClientSettingsChanged(int iClient) { if(IsClientInGame(iClient) && !IsFakeClient(iClient)) { char szTag[128]; CS_GetClientClanTag(iClient, szTag, sizeof(szTag)); if(!szTag[0] || FindCharInString(szTag, 14844078) == -1) // \x202E return; szTag[0] = 0; // Зануляем клан-тег CS_SetClientClanTag(iClient, szTag); } }