Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Информационная доска

Данный раздел предназначен для обсуждения, а также решения технических проблем связанных с серверной частью. Обсуждения касательно игровых клиентов ведутся здесь.

1. Во время создания новой темы аккуратно оформляйте её, не допускайте грамматических ошибок.
2. Описывая проблему старайтесь, как можно больше рассказать о ней, а так же о действиях с сервером после которых она возникла, по возможности подкрепите информацию логами.
3. Если вопрос касается проблемы в работе сервера, то обязательно прикрепляйте список плагинов (введите в консоли сервера: meta list и amxx plugins), настройки server.cfg, логи. Так же указывайте операционную систему, версию HLDS (введите к консоли сервера: version) и где хостится сервер.

Длинную информацию скрывайте под спойлер.

Русские ники на build 6153

Статус пользователя HoBu4oK
сообщение 2.1.2020, 8:36
Сообщение #1


Иконка группы

Стаж: 10 лет

Сообщений: 337
Благодарностей: 148
Полезность: 630

Подскажите, как можно отключить или запретить использование русских ников на build 6153
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
loran
сообщение 2.1.2020, 9:35
Сообщение #2
Стаж: 7 лет 11 месяцев

Сообщений: 2072
Благодарностей: 801
Полезность: 305

Цитата(HoBu4oK @ 2.1.2020, 9:36) *
Подскажите, как можно отключить или запретить использование русских ников на build 6153

Плагин написать.
Подарок к новому году. Плагин переделанный чутка. Работает хорошо. Я за него отдавал 250 рублей 2 года назад. Если хоть одна будет русская буква в нике, то игрока не пустит на сервер.
Cкрытый текст
Код
#include <amxmodx>
#include <fakemeta>
#include <regex>

#define PLUGIN "Unicode Name Blocker"
#define VERSION "0.1 Alpha"
#define AUTHOR "Fintok!"

#define REGEX_NAME_PATTERN "^^[a-zA-Z0-9\-\_\'\<\>\{\}\[\]\(\)\*\.\\\?\$\|\/\,\:\;\~\`\@\#\!\&\=\^^\ ]+$"

#define is_valid_name(%1) (regex_match_c(%1, g_iPattern, g_iRegex) > 0)

new Regex:g_iPattern, g_iRegex

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)

   register_forward(FM_ClientUserInfoChanged, "Fwd_ClientUserInfoChanged_Pre")

   new szError[32]

#if AMXX_VERSION_NUM < 183
   g_iPattern = regex_compile(REGEX_NAME_PATTERN, g_iRegex, szError, charsmax(szError))
#else
   g_iPattern = regex_compile_ex(REGEX_NAME_PATTERN, PCRE_UTF8, szError, charsmax(szError), g_iRegex)
#endif

   if(g_iPattern == REGEX_PATTERN_FAIL)
   {
      log_amx("Plugin is stopped. Regex error (%d): %s", g_iPattern, szError)

      set_fail_state("Plugin is stopped. Regex error!")
   }
}

public Fwd_ClientUserInfoChanged_Pre(id, buffer)
{
   static sOldName[32], sNewName[32]

   is_user_connected(id) ? pev(id, pev_netname, sOldName, charsmax(sOldName)) : (sOldName[0] = '^0')

   engfunc(EngFunc_InfoKeyValue, buffer, "name", sNewName, charsmax(sNewName))

   if(equal(sOldName, sNewName) || is_valid_name(sNewName))
      return FMRES_IGNORED

   server_cmd("kick ^"%s^" ^"Русские ники на сервере ЗАПРЕЩЕНЫ^"", sNewName)

   return FMRES_SUPERCEDE
}

public plugin_end()
   regex_free(g_iPattern)


Отредактировал: loran, - 2.1.2020, 9:38
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя MDMA20
сообщение 2.1.2020, 10:45
Сообщение #3
Стаж: 6 лет 9 месяцев

Сообщений: 2179
Благодарностей: 923
Полезность: 808

Цитата(loran @ 2.1.2020, 10:35) *
Я за него отдавал 250 рублей 2 года назад. Если хоть одна будет русская буква в нике, то игрока не пустит на сервер.

Это же сколько уников пропадает для сервера, с раскруток..
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 2.1.2020, 12:25
Сообщение #4
Стаж: 12 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Разумнее использовать такой шаблон, чтобы учесть все печатаемые символы, не являющиеся юникодом:
Код
#define REGEX_NAME_PATTERN "^^[ -~]+$"
И не кикать игрока, а подменять ник: мало кто будет заморачиваться сменой, просто выберет другой сервер, но мало кто уйдёт с сервера, потому что ему ник поменяли.

Однако само по себе глупо отказываться от юникода.

Отредактировал: Safety1st, - 2.1.2020, 12:32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
loran
сообщение 3.1.2020, 13:13
Сообщение #5
Стаж: 7 лет 11 месяцев

Сообщений: 2072
Благодарностей: 801
Полезность: 305

MDMA20, я его убрал у себя давно
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: