Иконка ресурса

[fork] Lite Bans 2.3

Нет прав для скачивания
Сообщения
267
Реакции
77
Предупреждения
8
Помог
1 раз(а)
dimaplay, ну это и не баг. Просто зачем ещё показывать, если его нет? (Хотя я у себя это сделал :scratch_one-s_head:)
 
Сообщения
267
Реакции
77
Предупреждения
8
Помог
1 раз(а)
dimaplay, могу fork amxbans gm дать. Что-то похожее на freshbans, но не полностью.

Различные фиксы; есть offban, oldban; условное разделение на Vip, Moderator, Admin, SuperAdmin, Immunity, Steam, GsClient; Warnmenu; банить, кикать, варнить, открывать их менюшки через чат; меню подтверждения, где можно изменить выбор игрока, времени, причины и т.д.. Обновление по запросу т.к. делаю новую модульную систему, а данная пока 'затычка'.
 

iOS

Сообщения
323
Реакции
100
Помог
5 раз(а)
dimaplay, читаем вкладку "Обзор"
 
Сообщения
458
Реакции
81
Помог
4 раз(а)
Баг есть с крашами, если не ошибаюсь, то либо бизон, либо радиус, уже писали об этом маздану и он обновил FB
 
Сообщения
313
Реакции
21
Предупреждения
19
Помог
7 раз(а)
WILL_BE, 👍 поподробнее никак да? Сказал А, говори Б.
 
Сообщения
940
Реакции
188
Помог
4 раз(а)
kto-to, настройки не успевают подгрузиться до первого коннекта игрока
 
Сообщения
1,021
Реакции
819
Помог
10 раз(а)
BiZaJe, это каким чудом?) Или про какие настройки речь идет, они ведь не с базы тянутся эти настройки
 
Сообщения
940
Реакции
188
Помог
4 раз(а)
Javekson, скорее всего про те, которые с бд связаны
Игрок подключается раньше чем litebans к бд
 
Сообщения
1,021
Реакции
819
Помог
10 раз(а)
BiZaJe, че то я не понял связи все ровно, зачем банс подключается к бд если игрок к ней подключается :D код мельком глянул ток
 
Сообщения
313
Реакции
21
Предупреждения
19
Помог
7 раз(а)
Javekson, игрок к серву тип быстрее подключается, чем банс чекает проверку на игрока из БД… так будет понятнее…
 
Сообщения
1,021
Реакции
819
Помог
10 раз(а)
kto-to, это же типичное поведение)) сначала игрок подключается затем отправка запроса в бд, какие тут баги или краши могут быть?)
 
Сообщения
1,021
Реакции
819
Помог
10 раз(а)
BiZaJe, в plugin_init он устанавливает кварам дефолтные значения, следом тут же идет LoadCvars который выполнится в этом же кадре, но в нем он отправляет на загрузку конфиг методом server_cmd("exec %s", szConfig); что выполнится только в следующем кадре, а в текущем кадре выполнится попытка коннекта к базе данных. В теории можем схлопотать ошибку, что коннект к базе не доступен, так-как коннект все еще будет идти на 127.0.0.1, Факт не проверен, но уверен так иногда будет случаться.

Зачем вообще проверять тут коннект к базе и фейлить(set_fail_state) целиком плагин я хз, на всю карту можно остаться без банов. Срочно нужно убирать это. К тому же можно фризнуть сервак, так-как запрос синхронный. Да и при коннекте игрока все ровно тут идет отдельный запрос, подключение-отключение коннекта. Если бд будет недоступна он так и так выбьет ошибку. Но хотя бы плагин целиком не стопорнем.

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

тут же в plugin_cfg он делает LoadConfigs, как бе хер с ним, просто нарушена логика последовательности я считаю, хотя в данном этапе это не критично.

в client_putinserver он шлет отдельный запрос на каждого игрока зачем то с задержкой в 3сек, может быть, что бы избежать бага plugin_cfg когда мы сначала отправляем запросы на очистку базы. Но при выходе не вижу удаление таска - если игрок вышел еще до истечении 3сек. За это время другой игрок с этим же id может зайти и старый таск выполнится на этот же id, получим два одинаковых запроса на 1 человека. Вероятность маленькая, но она есть я считаю. Успеть выйти и подключится за 3 секунды в теории это возможно.

Когда он отправляет запрос на проверку бана, то указывает в массиве всего лишь один g_Data[1] = id; его в коллбэке и проверяет, что является ошибкой исходя из сообщения выше. Один игрок может выйти другой прийти и можно случайно забанить невиновного игрока, просто тупа из задержки запрос-время-ответ. Тут надо проверять по userid как минимум, что бы убедиться, что мы баним именно того игрока.

Пока это все, что нашел визуально.
 
Сообщения
940
Реакции
188
Помог
4 раз(а)
Javekson, вот и ответы на все твои вопросы :)
 
Сообщения
313
Реакции
21
Предупреждения
19
Помог
7 раз(а)
BlackSignature прими на заметку.

BiZaJe, в plugin_init он устанавливает кварам дефолтные значения, следом тут же идет LoadCvars который выполнится в этом же кадре, но в нем он отправляет на загрузку конфиг методом server_cmd("exec %s", szConfig); что выполнится только в следующем кадре, а в текущем кадре выполнится попытка коннекта к базе данных. В теории можем схлопотать ошибку, что коннект к базе не доступен, так-как коннект все еще будет идти на 127.0.0.1, Факт не проверен, но уверен так иногда будет случаться.

Зачем вообще проверять тут коннект к базе и фейлить(set_fail_state) целиком плагин я хз, на всю карту можно остаться без банов. Срочно нужно убирать это. К тому же можно фризнуть сервак, так-как запрос синхронный. Да и при коннекте игрока все ровно тут идет отдельный запрос, подключение-отключение коннекта. Если бд будет недоступна он так и так выбьет ошибку. Но хотя бы плагин целиком не стопорнем.

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

тут же в plugin_cfg он делает LoadConfigs, как бе хер с ним, просто нарушена логика последовательности я считаю, хотя в данном этапе это не критично.

в client_putinserver он шлет отдельный запрос на каждого игрока зачем то с задержкой в 3сек, может быть, что бы избежать бага plugin_cfg когда мы сначала отправляем запросы на очистку базы. Но при выходе не вижу удаление таска - если игрок вышел еще до истечении 3сек. За это время другой игрок с этим же id может зайти и старый таск выполнится на этот же id, получим два одинаковых запроса на 1 человека. Вероятность маленькая, но она есть я считаю. Успеть выйти и подключится за 3 секунды в теории это возможно.

Когда он отправляет запрос на проверку бана, то указывает в массиве всего лишь один g_Data[1] = id; его в коллбэке и проверяет, что является ошибкой исходя из сообщения выше. Один игрок может выйти другой прийти и можно случайно забанить невиновного игрока, просто тупа из задержки запрос-время-ответ. Тут надо проверять по userid как минимум, что бы убедиться, что мы баним именно того игрока.

Пока это все, что нашел визуально.
 
Сообщения
20
Реакции
11
127.0.0.1 я решал так, не знаю на сколько это костыльно.
register_srvcmd("fhahhdixijahduijwvujs", "CreateDbConnection");

public CreateDbConnection()
{
gSqlDb = SQL_MakeDbTuple(....);
}

..
server_cmd("exec %s; fhahhdixijahduijwvujs;", szConfig);
..
 
Сообщения
1,021
Реакции
819
Помог
10 раз(а)
Xbass13, очень ) это вообще убрать можно, целиком проверку при старте плагина
 
Сообщения
52
Реакции
2
what is the difference between this and fresh bans?
what's better?
 
Сообщения
44
Реакции
1
Can someone edit the plugin? If the ban period expires, i want the "expired" field to be modified immediately
In the current situation, the field is changed only when the map changes. and problems happen. If you write, for example
1701223377365.png1701223445498.png

lb_remove_expired is on "0"
1701223601669.png
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу