Palonez
бб братки
- Сообщения
- 3,035
- Реакции
- 1,837
исправилException reported: Cannot replace searches of empty strings
исправилException reported: Cannot replace searches of empty strings
Пробовал уже, все так же ничего не выводитC-подобный:StrCopy(szGroup, sizeof(szGroup), sValue[0])
Сейчас еще раз попробовал, пусто, ничего не выводитПробовал уже, все так же ничего не выводит
Так ты дебаг сделай на каждой шаге и поймешь в чем трабл, может у тебя не идет explode или в него не передается ничегоПробовал уже, все так же ничего не выводит
Сообщения автоматически склеены:
Сейчас еще раз попробовал, пусто, ничего не выводит
Сейчас попробуюТак ты дебаг сделай на каждой шаге и поймешь в чем трабл, может у тебя не идет explode или в него не передается ничего
Решил проблему объявив массив sValues[2][128] глобальнымC-подобный:StrCopy(szGroup, sizeof(szGroup), sValue[0])
Пусть эти днища учатся UserID игроков использовать (против читеров это важно уметь, если нет блокировки смены ника игроком).
Спасибо, попробую.Был где-то плагин, который вырезал из ника символы уникода типа иероглифов и смайлов.
Вроде вот этот:
Но я не уверен, что правильно написал, ни разу не работал с регами
За эти символы отвечает \WЭти "днища" мои админы, так что попрошу не оскорблять их. Блокировка смены ника присутствует (спасибо тому одному разработчику игры))
Как я писал выше, из-за особенностей режима игры (Jail) нужно произносить ники, что бывает сложно сделать. К тому же, ввести ник нарушителя в консоль или в чат (если как раз ник нормальный) обычно быстрее и привычнее, чем идти выяснять его UserID.
Спасибо, попробую.
Я вот тоже, в регулярное выражения входят символы по типу "$%@^, которые не являются буквами, но присутствуют на клавиатуре, нужно чтоб плагин пропускал и не удалял их из ника.
Попробую чуть позже код.
Их несколько, в ресурсах, как минимум, 3 такихБыл где-то плагин, который вырезал из ника символы уникода типа иероглифов и смайлов
BLEED_BORDER
кровотечение будет прекращаться (для серверов где есть лечение). Кроме того при кровотечении будет наноситься урон от имени последнего игрока нанёсшего урон после активации кровотечения (если никто больше не дамажил, то будет наносить от имени инициировавшего кровотечение). Если последний дамаживший вышел перед смартью истекающего кровью, то будет считаться, что игрок умер от мира. Ну и ещё некоторые небольшие исправления.проверил, не работает почему-то.. но и ошибок нет)@gambit535, пробуй такой вариант (заодно переписал на новый синтаксис и почистил чуток):
@gambit535, перезалил выше с исправлениями. Проверяй.
нет, если бы боты задамажили, то показало бы что бот убилтестирую с ботами, может из-за этого?
не помогло.. снова умираю "от мира"нет, если бы боты задамажили, то показало бы что бот убил
Сообщения автоматически склеены:
@gambit535, перезалил выше. Должно пофикситься (видимо запустивший кровотечение или последний задомаживший умер чуть раньше).
вроде работает,но как-то через раз)@gambit535, перезалил. Теперь вроде должно быть правильно.
Но я не уверен, что правильно написал, ни разу не работал с регамиC-подобный:#include <regex> stock void fn(int client) { if(client && IsClientInGame(client)) { char name[MAX_NAME_LENGTH], err[256], sub[32]; RegexError Regerr; GetClientName(client, name, sizeof(name)); Regex expr = CompileRegex("[а-яА-ЯЁёа-zA-Z0-9\\W]", PCRE_NOTEMPTY, err, sizeof(err), Regerr); if(expr != INVALID_HANDLE) { int match = expr.Match(name, Regerr, 0); if(match != -1) { for(int i = 0; i < match; i++) { expr.GetSubString(i, sub, sizeof(sub), i); ReplaceString(name, sizeof(name), sub, "", true); } SetClientName(client, name); } } else LogMessage("%s", err); } }
L 04/23/2023 - 23:11:33: [basecommands.smx] "”Ї<43><[U:1:149724700]><>" console command (cmdline "sm plugins load namerules")
L 04/23/2023 - 23:11:33: [namerules.smx] unknown option bit(s) set
L 04/23/2023 - 23:11:33: [namerules.smx] unknown option bit(s) set
L 04/23/2023 - 23:11:33: [namerules.smx] unknown option bit(s) set
L 04/23/2023 - 23:11:33: [namerules.smx] unknown option bit(s) set
#include <regex>
#include <sdktools_functions>
public void OnPluginStart()
{
for(int i = 1; i <= MaxClients; ++i)
{
if(IsClientInGame(i)) fn(i);
}
}
stock void fn(int client)
{
if(client && IsClientInGame(client))
{
char name[MAX_NAME_LENGTH], err[256], sub[32];
RegexError Regerr;
GetClientName(client, name, sizeof(name));
Regex expr = CompileRegex("[а-яА-ЯЁёа-zA-Z0-9\\W]", PCRE_NOTEMPTY, err, sizeof(err), Regerr);
if(expr != INVALID_HANDLE)
{
int match = expr.Match(name, Regerr, 0);
if(match != -1)
{
for(int i = 0; i < match; i++)
{
expr.GetSubString(i, sub, sizeof(sub), i);
ReplaceString(name, sizeof(name), sub, "", true);
}
SetClientName(client, name);
}
}
else LogMessage("%s", err);
}
}
проверял сегодня снова, странно работает..например: стрелял в союзного бота, оставил ему 3хп, в чате начинает бесконечно писать,что я атакую этого бота,а самого бота вроде "дамажит" ,но хп не уменьшается..@gambit535, перезалил. Теперь вроде должно быть правильно.