Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Вопрос про блокировку коммуникаций #82

Open
MAGNAT2645 opened this issue Nov 22, 2019 · 17 comments
Open

Comments

@MAGNAT2645
Copy link

MAGNAT2645 commented Nov 22, 2019

Сразу скажу на всякий случай, я не профи в SourcePawn (особенно когда дело доходит до всяких запросов к БД).
У меня такой небольшой (возможно глупый) вопрос по поводу того, как работает проверка на наличие мута/гага. Почему работает только что-то одно (если они существуют отдельно у одного и того же игрока)? Нет никакого способа вызывать "двойной" (или 2 запроса) запрос при подключении игрока, а потом уже сверять результаты? (Т.е. если плагин нашёл и мут и гаг, менять значение MuteType на 3, чтобы был сайленс)

Просто бывают такие случаи, когда нужно выдать мут какому-то засранцу, а он потом начинает ещё писать всякую дичь в чат. В таком случае приходится удалять мут и ставить сайленс, чтобы работал мут+гаг.

И ещё, я понимаю, что сделать хорошую связь с RCON довольно трудно, но почему при выдаче бана через веб игрок легко находится и его кикает с серва, а с мутом/гагом такое не прокатывает?

@MAGNAT2645
Copy link
Author

MAGNAT2645 commented Dec 14, 2019

У меня теперь вообще не работают команды sm_gag, sm_silence. Всё ввожу правильно (через консоль серва), а никакого ответа не приходит. В БД гаг/мут не появляется, ошибки не выводит.

@megoRU
Copy link

megoRU commented Dec 14, 2019

image
Все работает.

@MAGNAT2645
Copy link
Author

Вот именно, что ReplyToCommand работает, а когда команду ввёл (указав userid цели, длительность и причину), то никакого ответа не приходит обратно.

@megoRU
Copy link

megoRU commented Dec 14, 2019

Тогда дело мб в настройках:
databases.cfg

image

Вообще советую начисто поставить MA. Но копию .cfg сделать малоли.

@MAGNAT2645
Copy link
Author

Я перекомпилировал новую версию (0.7.9) с MADEBUG 1, в логах теперь пишет все отправляемые запросы в БД. Это говорит о том, что настройки все стоят правильные.

@megoRU
Copy link

megoRU commented Dec 15, 2019

мб проблема в бд?.

@MAGNAT2645
Copy link
Author

MAGNAT2645 commented Dec 15, 2019

Вряд ли, учитывая, что мои приватные плагины спокойно отправляют запросы и получают результаты.
С банами проблем никаких нет. Через Веб прекрасно распознаёт игрока (на серве ли он) и кикает его. С Мутом/Гагом такое не работает, поэтому если выдавать мут/гаг через Веб, то он только в БД добавляет блокировку, а на серве ничего не блокируется.

Ну, и недавно появились проблемы именно с консольными командами. Через админ-меню на серве всё прекрасно работает, через веб, как я уже сказал, работает только бан корректно, команды через RCON ничего не пишут и не добавляют блокировку.

Правда, т.к. я перекомпилил плагин с MADEBUG, надо будет попробовать ещё раз, мб в логи что запишет (в логи плагина именно, в логи ошибок SM ничего не пишет).

@megoRU
Copy link

megoRU commented Dec 15, 2019

тут SM обновили по поводу MySQL

alliedmodders/sourcemod@9cd4f9c

на всякий случай скину.

@MAGNAT2645
Copy link
Author

Благодарю. Только мне кажется, что это никаким образом не повлияет на текущие проблемы, описанные выше.

@megoRU
Copy link

megoRU commented Dec 15, 2019

я скомпилировал под новый SM там довольно много изменилось по размеру файла. Хотя компилил недавно

@MAGNAT2645
Copy link
Author

MAGNAT2645 commented Dec 24, 2019

В общем, могу подтвердить, что даже при выдаче через админ-панель на игровом сервере, гаг/мут не срабатывает и после перезахода игрок продолжает использовать текстовый/голосовой чат.

Запись в БД создалась:

L 12/23/2019 - 18:59:32: [materialadmin.smx] Create bd: client ≠°「AkIHiŖo」°≠, target Новогоднi Джэнос, Type 5, MuteType 0
L 12/23/2019 - 18:59:32: [materialadmin.smx] create bd: INSERT INTO `sb_comms` (`authid`, `name`, `created`, `ends`, `length`, `reason`, `aid`, `adminIp`, `sid`, `type`) VALUES ('STEAM_0:0:22224189', 'Новогоднi Джэнос', UNIX_TIMESTAMP(), UNIX_TIMESTAMP() + 0, 0, '1.0 + 1.1 + Несогласие с правилами', IFNULL((SELECT aid FROM sb_admins a INNER JOIN sb_admins_servers_groups asg ON (a.aid = asg.admin_id AND asg.server_id = 1) WHERE (a.authid REGEXP '^STEAM_[0-9]:0:212252126$') LIMIT 1), 0), 'STEAM_0:0:212252126', 1, 2)

Ну и из LogAction тоже
L 12/23/2019 - 18:59:32: [materialadmin.smx] add gag: Новогоднi Джэнос type 2, time 0

А вот при подключении/перезаходе игрока (вроде как?):

L 12/24/2019 - 07:54:32: [materialadmin.smx] CheckClientMute: set Новогоднi Джэнос, time 0, end time -46500, type 2
L 12/24/2019 - 08:00:39: [materialadmin.smx] Checking ban for: STEAM_0:1:447533493. QUERY: SELECT a.`bid`, a.`length`, a.`created`, a.`reason`, b.`user` FROM `sb_bans` a LEFT JOIN `sb_admins` b ON a.`aid` = b.`aid` WHERE ((a.`type` = 0 AND a.`authid` REGEXP '^STEAM_[0-9]:1:447533493$') OR (a.`type` = 1 AND a.`ip` = '{АЙПИ}') OR (a.`type` = 0 AND a.`ip` = '{АЙПИ}')) AND (a.`length` = 0 OR a.`ends` > UNIX_TIMESTAMP()) AND a.`RemoveType` IS NULL LIMIT 1 

Скрыл IP в запросе
Немного смущает отрицательное значение end time в CheckClientMute (хотя, позже заглянув в код, я вроде частично понял, почему так происходит), причём оно бывает разное (и походу оно увеличивается):

L 12/24/2019 - 12:07:26: [materialadmin.smx] CheckClientMute: set Новогоднi Джэнос, time 0, end time -61674, type 2
L 12/24/2019 - 17:35:36: [materialadmin.smx] CheckClientMute: set Новогоднi Джэнос, time 0, end time -81364, type 2
L 12/24/2019 - 21:55:46: [materialadmin.smx] CheckClientMute: set Новогоднi Джэнос, time 0, end time -96974, type 2

Что здесь может быть не так?

@MAGNAT2645
Copy link
Author

MAGNAT2645 commented Jan 3, 2020

Как я понял, гаг блокирует сообщения в чате с помощью OnClientSayCommand.
Так вот, может попробовать заменить return Plugin_Handled на return Plugin_Stop (в basecomm используется именно Plugin_Stop, а тот же SB++, как мы знаем, срабатывает лишь при вызове basecomm'овских команд), чтобы полностью заблокировать какие-либо внутриигровые вызовы?
изображение

Я попробую сделать это и перекомпилировать. Если что-то изменится, отпишусь.

@MAGNAT2645
Copy link
Author

MAGNAT2645 commented Jan 19, 2020

Заметил кое-что новое, в SourceBans стоит гаг (его и выдавали)
изображение

но серверный плагин ставит игроку мут вместо гага:

L 01/19/2020 - 20:21:29: [materialadmin.smx] CheckClientMute: set AFFLICTIONMANE, time 0, end time -5004182, type 1
L 01/19/2020 - 20:21:29: [materialadmin.smx] add mute: AFFLICTIONMANE type 1, time 0

Это как?

@MAGNAT2645
Copy link
Author

Походу из-за этого не выполняется проверка

	if (g_iTargetMuteType[iClient] > 1)
	{
		char sLength[128];
		FormatVrema(iClient, g_iTargenMuteTime[iClient], sLength, sizeof(sLength));
		PrintToChat2(iClient, "%T", "Target no text chat", iClient, sLength, g_sTargetMuteReason[iClient]);
		return Plugin_Stop;
	}

и игрок с гагом может писать в чат.

Будет фикс для такой фигни?

@MAGNAT2645
Copy link
Author

MAGNAT2645 commented Jan 19, 2020

Повторно выдал гаг через админ-меню в игре, в итоге у игрока теперь сайленс (т.е. в SourceBans стоял гаг, но серверный плагин определил как мут, а мут + гаг дают сайленс в итоге)

В SourceBans, кстати, сайленс не появился (остался гаг). Это только серверный плагин так решил

L 01/19/2020 - 20:36:14: [materialadmin.smx] add silence: AFFLICTIONMANE type 3, time 1814400
L 01/19/2020 - 20:36:21: [materialadmin.smx] format time (AFFLICTIONMANE)  1814400: days 21, hours 0, minutes 0, sec 0

@MAGNAT2645
Copy link
Author

MAGNAT2645 commented Mar 29, 2020

Прошло очень много времени, а я так и не понял как исправить основной баг (и все проблемы выше).
В SB у игрока отображает пермаментный Silence, но он почему-то может в игре писать в чат.

Прошу заметить, что я давным-давно отключил такие плагины как MuteCheck (но этот плагин по логике никак не влияет на баг т.к. в нём используется только функция IsClientMuted).

@CrazyHackGUT, прости за беспокойство, но можешь пересмотреть проблемы выше (особенно эту) ?

@A1mDev
Copy link
Contributor

A1mDev commented Dec 7, 2021

@MAGNAT2645, проблема в том что в базе данных несколько записей, а должны быть установлены несколько флагов и одна запись, я так понимаю, если у тебя мут и гаг должно быть значение в type = 3. Сейчас там 2 записи в одной type = 1, в другой type = 2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants