Контакты Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » [Source 2009][Оплата] Исправление бага со сменой ника
[Source 2009][Оплата] Исправление бага со сменой ника
Jiffs Дата: Воскресенье, 27.01.2013, 11:51:39 | Сообщение # 1
Сообщений: 4
Репутация: 0 [ +/- ]
Добрый день.

В наличии имеется плагин который запрещает определенные ники и если заходит игрок с таким ником, то плагин, либо меняет ему ник, либо кикает. Проблема в том, что в играх на движке Source 2009 (в моем случае это DoD:S) возникает проблема, когда выбран вариант смены ника.

Возьмем ситуацию, когда в файле для запрещенных ников прописано "JM", а мой ник "Jiffs Maverick". Когда я захожу на сервер - все нормально. Но если я сменю ник на "JM", то в чате начинается такой балаган:

Код
Player Jiffs Maverick changed name to JM
Sorry, bad name!
Player Player 82355 changed name to JM
Sorry, bad name!
Player Player 95298 changed name to JM
Sorry, bad name!
Player Player 44594 changed name to JM

около сотни таких строк

Sorry, bad name!
Player Player 5351 changed name to JM
Sorry, bad name!
Player JM changed name to Player 23422

В логах sourcemod это выглядит так:

Код
L 26/01/2013 - 22:36:09: [namefilter.smx] Player found with badword in his name: JM
L 26/01/2013 - 22:36:09: [namefilter.smx] Player found with badword in his name: JM
L 26/01/2013 - 22:36:09: [namefilter.smx] Player found with badword in his name: JM
L 26/01/2013 - 22:36:09: [namefilter.smx] Player found with badword in his name: JM

около сотни таких строк

L 26/01/2013 - 22:36:29: [namefilter.smx] Player found with badword in his name: JM
L 26/01/2013 - 22:36:29: [namefilter.smx] Player found with badword in his name: JM

Такая же ситуация происходит, если меняется карта. Отмечу, при заходе на сервер игрока с запрещенным ником - проблемы нет, ник нормально меняется.

Кто поможет исправить данную проблему? А то сам пытался скорректировать, но ни чего не вышло, к сожалению. Естественно я заплачу (Webmoney), если решение будет найдено.

P.S.: в L4D1/L4D2 такой проблемы нет.
P.P.S.: другие плагины не предлагать, надо исправить именно этот.

Прикрепления: namefilter.sp(4.4 Kb)


Сообщение отредактировал Jiffs - Воскресенье, 27.01.2013, 11:58:03
 
Scarface_slv Дата: Воскресенье, 27.01.2013, 13:16:37 | Сообщение # 2
Сообщений: 738
Репутация: 61 [ +/- ]
Тут public OnClientSettingsChanged(iClient)
найди CreateTimer(0.1, tCheckClient, iClient);
и измени на CreateTimer(10.0, tCheckClient, iClient);
и компилируй, может поможет от повторов, не знаю даже из за чего это может быть
 
Jiffs Дата: Воскресенье, 27.01.2013, 14:09:13 | Сообщение # 3
Сообщений: 4
Репутация: 0 [ +/- ]
Если увеличивать время таймера, то спама нет, но

При 5 секундах - две лишних смены ника
При 10 секундах - 1 лишняя смена ника
При 15 секундах - 1 лишняя смена ника
При 20 секундах - лишних смен нет, все идет как положено, но он то показывает, что игрок сменил имя, то нет (где в 90% случаев не показывает, закономерности не выявил). Ну и побочный эффект - слишком долгое ожидание фразы "Sorry, bad name!".
 
Scarface_slv Дата: Воскресенье, 27.01.2013, 14:37:23 | Сообщение # 4
Сообщений: 738
Репутация: 61 [ +/- ]
Код
public OnClientSettingsChanged(iClient)
{
     if(!IsNameClean(iClient))
     {
        new iMode = GetConVarInt(cvarMode);
        if (iMode == MODE_KICK)
        {
           decl String:sKickReason[128];
           GetConVarString(cvarWarning, sKickReason, sizeof(sKickReason));
           KickClient(iClient, sKickReason);
        }
        else if (iMode == MODE_RENAME)
        {
           if (!IsNameClean(iClient))
           {
              decl String:sWarning[512];
              GetConVarString(cvarWarning, sWarning, sizeof(sWarning));
              PrintToChat(iClient, "\x04%s", sWarning);
              new userid = GetClientUserId(iClient);
              CreateTimer(10.0, tCheckClient, userid); // Weird timing spam issues without timer
           }
        }
     }
}

public Action:tCheckClient(Handle:hTimer, any:userid)
{
     new iClient = GetClientOfUserId(userid);
     if (iClient > 0) RenameClient(iClient);
     return Plugin_Handled;
}
замени блоки так, тогда не будет долгого ожидания Sorry, bad name
а насчет таймера даже если сделать 0.1 смена ника произойдет все равно через 10-15 секунд, но будут повторы...


Сообщение отредактировал Scarface_slv - Воскресенье, 27.01.2013, 14:38:44
 
Sunday Дата: Воскресенье, 27.01.2013, 22:31:23 | Сообщение # 5
Сообщений: 186
Репутация: 24 [ +/- ]
Цитата (Scarface_slv)
замени блоки так, тогда не будет долгого ожидания Sorry, bad name
а насчет таймера даже если сделать 0.1 смена ника произойдет все равно через 10-15 секунд, но будут повторы...


Сегодня тоже переделывал по разному и пришел к выводу что сам движек реагирует на изменение через 18 секунд (засек время) и от сюда такие косяки, хотя не уверен что я прав. Тестировалось в игре Half-Life 2 DM.
 
Meow_1337 Дата: Понедельник, 28.01.2013, 16:51:16 | Сообщение # 6
Сообщений: 209
Репутация: 11 [ +/- ]
Цитата
L 01/28/2013 - 17:46:37: [SM]Displaying call stack trace for plugin "namefilter.smx":
L 01/28/2013 - 17:46:37:   [SM][0]  Line 168, /home/groups/alliedmodders/forums/files/1/6/6/6/8/8/104360.attach::RenameClient()
L 01/28/2013 - 17:46:37:   [SM][1]  Line 86, /home/groups/alliedmodders/forums/files/1/6/6/6/8/8/104360.attach::OnClientConnect()


Вот у меня тоже стоит такой же плагин.
Ошибки в логах.
 
Jiffs Дата: Понедельник, 28.01.2013, 17:11:05 | Сообщение # 7
Сообщений: 4
Репутация: 0 [ +/- ]
Провел некоторые тесты. Действительно, в движке Source 2009 встроен, скажем так, ограничитель на смену ника. Длится он около 20 секунд и в течении этого времени не позволяет сменить ник. Проверял как на пиратке, так и на лицензии. Именно поэтому происходит спам, так как sourcemod меняет ник, а движок возвращает его обратно. Так длится пока не истекут эти 20 секунд. Обновил плагин с учетом этого факта. Теперь плагин работает, в принципе, нормально. По сути, теперь мою просьбу можно переформулировать следующим образом: можно ли избавится от этих 20 секунд блокировки движком смены ника?

Meow_1337, у меня плагин ошибок не выдавал в логах. Попробуйте обновленную версию.

Прикрепления: 1842608.sp(4.5 Kb)


Сообщение отредактировал Jiffs - Понедельник, 28.01.2013, 17:13:13
 
Scarface_slv Дата: Понедельник, 28.01.2013, 17:29:29 | Сообщение # 8
Сообщений: 738
Репутация: 61 [ +/- ]
Цитата (Jiffs)
можно ли избавится от этих 20 секунд блокировки движком смены ника?
Такое вряд ли возможно... Это все у клиента происходит

Добавлено (28.01.2013, 17:29:29)
---------------------------------------------
Meow_1337, у меня тоже выдавало такие ошибки из за повторов ну и из за
SetEntPropString(iClient, Prop_Data, "m_szNetname", sNewName);


Сообщение отредактировал Scarface_slv - Понедельник, 28.01.2013, 17:32:25
 
Jiffs Дата: Понедельник, 28.01.2013, 18:10:12 | Сообщение # 9
Сообщений: 4
Репутация: 0 [ +/- ]
Нашлось решение:

Код
"sv_namechange_cooldown_seconds" = "20.0"
   - When a client name change is received, wait N seconds allowing another name change

Собственно, все проблемы теперь решены. Всем спасибо. Тему можно закрывать.


Сообщение отредактировал Jiffs - Понедельник, 28.01.2013, 18:12:04
 
Scarface_slv Дата: Понедельник, 28.01.2013, 19:01:57 | Сообщение # 10
Сообщений: 738
Репутация: 61 [ +/- ]
О_о у меня на v34 такой команды нет)
 
Meow_1337 Дата: Понедельник, 28.01.2013, 22:09:14 | Сообщение # 11
Сообщений: 209
Репутация: 11 [ +/- ]
Jiffs, где эту функцию нашел?
 
_wS_ Дата: Понедельник, 28.01.2013, 22:23:09 | Сообщение # 12
Это стандартный серверный cvar (Новость). На v34 нет его.
 
Meow_1337 Дата: Понедельник, 28.01.2013, 22:45:48 | Сообщение # 13
Сообщений: 209
Репутация: 11 [ +/- ]
Странно, у myarena в конфиге нет такого.
хм буду знать.
 
_wS_ Дата: Понедельник, 28.01.2013, 22:59:16 | Сообщение # 14
cvarlist пропиши в консоль сервера/клиента - там много чего.
 
Meow_1337 Дата: Вторник, 29.01.2013, 01:59:26 | Сообщение # 15
Сообщений: 209
Репутация: 11 [ +/- ]
Ок спс.

У твоего сайта _wS_ некая проблема.
Когда нажимаешь на ник, чтобы ответить некому лицу, то ник отображается не корректно.

Пример: w_rface,

---------------------
Ucoz'овские обновления + новые баги.
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » [Source 2009][Оплата] Исправление бага со сменой ника
  • Страница 1 из 1
  • 1
Поиск: