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

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

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

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

4 страниц V   1 2 3 »

Warnings

, система предупреждений игроков
Статус пользователя Subb98
сообщение 23.12.2014, 18:01
Сообщение #1


Стаж: 15 лет
Город: Пермь

Сообщений: 216
Благодарностей: 281
Полезность: 1246

Warnings


Автор(ы): Subb98
Текущая версия: 0.0.3 beta
Официальная страница

Описание:
Данный плагин делает наиболее удобной выдачу предупреждений игрокам за нарушение правил. Выданные предупреждения при этом больше не будут оставаться незамеченными. Система устроена таким образом, что игрок не сможет играть дальше до тех пор, пока предупреждение не исчезнет с его экрана. На время, пока игрок предупреждён, его экран затемняется, он не может двигаться, стрелять, его нельзя убить (кроме, как взрывом от C4) и над его головой отображается иконка (в виде барашка crazy.gif), давая другим понять, что этот игрок предупреждён администратором.

Скриншоты:
Прикрепленное изображение Прикрепленное изображение

Все скриншоты
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображениеПрикрепленное изображениеПрикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображениеПрикрепленное изображение
Прикрепленное изображение

Особенности:
  • Поддержка мультиязычности
  • Настройка причин предупреждения/наказания через файл конфигураций
  • Сохранение предупреждений на определённый период времени
  • Настройка команды наказания при помощи тегов
  • Отображение чат-сообщений о предупреждениях в зависимости от настроек квара amx_show_activity
  • Множество макроконстант для гибкой настройки плагина

Модули:
  • Director HUD Message (dhudmessage.inc)
  • Engine (engine.inc)
  • Fakemeta (fakemeta.inc)
  • Ham Sandwich (hamsandwich.inc)
  • nVault (nvault.inc)

Команды:
  • warnmenu - отобразить меню предупреждений (консоль клиента)
  • say /warn - отобразить меню предупреждений (общий чат)
  • say_team /warn - отобразить меню предупреждений (командный чат)

Настройки:

Код
#define MAX_PLAYERS 32 // Максимальное кол-во игроков на сервере, заменить своим (по умолчанию 32)
#define USE_LOGGING // Закомментируйте эту строку, если не желаете использовать функцию логирования
#define WARNINGS_DELAY 60 // Кол-во времени в секундах, по истечении которого будет возможно вновь предупредить этого же игрока (только целые числа; по умолчанию 60)
#define REMOVE_WARNINGS_DELAY 86400 // Кол-во времени в секундах, по истечении которого с игрока автоматически будут списаны все предупреждения (только целые числа; по умолчанию 86400 или 1 сутки)
#define LEVEL_ACCESS ADMIN_BAN // Уровень доступа, необходимый для использования плагина (по умолчанию ADMIN_BAN)
#define LEVEL_IMMUNITY ADMIN_IMMUNITY // Уровень доступа, необходимый для определения игрока, защищённого иммунитетом (по умолчанию ADMIN_IMMUNITY)
#define MAX_WARNINGS 3 // Максимальное кол-во предупреждений, которое возможно выдать игроку перед наказанием (по умолчанию 3)
#define USE_TIME_IN_PUNISHMENT_COMMAND // Закомментируйте эту строку, если тег <time> не будет задействован в команде наказания
#define DHUD_PART_1_COLOR 200, 100, 0 // Цвет первого DHUD сообщения в RGB формате (по умолчанию 200, 100, 0)
#define DHUD_PART_1_COORD -1.0, 0.35 // Координаты первого DHUD сообщения (только дробные числа; по умолчанию -1.0, 0.35)
#define DHUD_PART_2_COLOR 200, 0, 0 // Цвет второго DHUD сообщения в RGB формате (по умолчанию 200, 0, 0)
#define DHUD_PART_2_COORD -1.0, 0.55 // Координаты второго DHUD сообщения (только дробные числа; по умолчанию -1.0, 0.55)
#define FADE_COLOR 0, 0, 0 // Цвет экрана игрока в RGB формате, которому было выдано предупреждение (по умолчанию 0, 0, 0)
#define FADE_ALPHA 255 // Уровень непрозрачности экрана игрока, которому было выдано предупреждение (по умолчанию 255)
#define USE_SERVER_PUNISHMENT_COMMAND // Закомментируйте эту строку, если команда наказания должна будет выполняться от имени администратора, который выдал наказание, а не от имени сервера
new const PUNISHMENT_COMMAND[] = "banid <time> <userid>;kick <userid> '<reason>'"; // Команда наказания, заменить своей (по умолчанию "banid <time> <userid>;kick <userid> '<reason>'")
#define CLEAN_VAULT_FILE_DELAY 15.0 // Кол-во времени в секундах, через которое вновь будет произведена очистка устаревших записей из .vault файла (только дробные числа; по умолчанию 15.0)
#define DEFAULT_PUNISHMENT_TIME 60 // Кол-во времени в минутах, которое будет определять время наказания по умолчанию (только целые числа; по умолчанию 60)

История изменений
Версия 0.0.3 beta от 24.12.2014:
  • Добавление отмены всех текущих задач в начале нового раунда для предупреждённого игрока
  • Добавление проверки статуса игрока (жив/мёртв) при выдаче предупреждения
  • Корректировка файла спрайта (теперь иконка будет отображаться чуть выше над головой игрока, спрайт необходимо обновить на сервере)
  • Добавление нового ключа в файл словаря

Версия 0.0.2 beta от 23.12.2014:
  • Исправление критического бага с удалением entity, который вызывал падение сервера

Версия 0.0.1 beta от 21.12.2014:
  • Устранение обнаруженных багов и недочётов
  • Оптимизация и доведение кода до "приличного" состояния
  • Первый релиз

Версия 0.0.1 alpha от 17.12.2014:
  • Написание первой версии
  • Первичное тестирование

FAQ
Q: Для чего нужна настройка USE_TIME_IN_PUNISHMENT_COMMAND? На что именно она влияет?
A: Данная настройка определяет, будет ли отображаться время в меню причин и в меню подтверждения действия при наказании игрока. Если в команде наказания не будет задействован тег <time>, то никакого смысла отображать время в меню нет.

Q: Для чего нужна настройка USE_SERVER_PUNISHMENT_COMMAND? На что именно она влияет?
A: Данная настройка определяет, от чьего имени будет выполняться команда наказания. Если строка закомментирована, то команда выполнится от имени администратора, который назначил наказание. Если же строка раскомментирована, то команда выполнится от имени сервера.

Q: Для чего нужна настройка DEFAULT_PUNISHMENT_TIME? На что она влияет?
A: Данная настройка определяет время наказания в минутах по умолчанию, которое будет использовано в том случае, если файл конфигураций не существует, либо неверно настроен, либо пуст и если в команде наказания задействован тег <time>, разумеется.

Q: Какие теги можно использовать в команде наказания?
A: Для команды наказания доступны следующие теги:
  • ' - заменяется на парную кавычку "
  • <userid> - заменяется на #UserID игрока
  • <authid> - заменяется на SteamID игрока
  • <ip> - заменяется на IP-адрес игрока
  • <name> - заменяется на никнейм игрока
  • <time> - заменяется на время наказания
  • <reason> - заменяется на причину наказания

Благодарности:
  • [WPMG]PRoSToTeM@ - написание функции плавного затухания/оттухания экрана (ScreenFade) без "костылей"
  • boXer - обнаружение критического бага в версии 0.0.1 beta (момента его возникновения), тестирование промежуточных версий
  • 3uMa - тестирование промежуточных версий

Прикрепленный файл  warnings_0_0_3_beta.zip ( 13,94 килобайт ) Кол-во скачиваний: 235


Отредактировал: Subb98, - 24.12.2014, 12:56
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 23 раз
   Цитировать сообщение
Статус пользователя TJhack
сообщение 23.12.2014, 18:23
Сообщение #2
Стаж: 12 лет

Сообщений: 103
Благодарностей: 26
Полезность: < 0

Хорошая тема спс за труд! )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя TJhack
сообщение 23.12.2014, 18:30
Сообщение #3
Стаж: 12 лет

Сообщений: 103
Благодарностей: 26
Полезность: < 0

Как быть с этим: допустим наказал игрока на 3 минуты и он стоит все его напарники умерли и он остался один так и будет стоять пока раундтайм не закончился?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Subb98
сообщение 23.12.2014, 18:35
Сообщение #4


Стаж: 15 лет
Город: Пермь

Сообщений: 216
Благодарностей: 281
Полезность: 1246

Цитата(TJhack @ 23.12.2014, 20:26) *
Как быть с этим: допустим наказал игрока на 3 минуты и он стоит все его напарники умерли и он остался один так и будет стоять пока раундтайм не закончился?

Гм, действительно, не думал об этом... Думаю, в этом случае нужно позволить предупреждённому игроку доиграть раунд, следовательно, отлавливать событие, когда остаётся 1 игрок в команде. Исправлю в ближайшее время. Спасибо за найденный недочёт.

Отредактировал: Subb98, - 23.12.2014, 18:35
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Akinach
сообщение 23.12.2014, 18:39
Сообщение #5
Стаж: 11 лет

Сообщений: 396
Благодарностей: 325
Полезность: < 0

Интересно, а как такое будет выглядеть на ксдм?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nebo
сообщение 23.12.2014, 18:41
Сообщение #6


Стаж: 13 лет
Город: Казань

Сообщений: 3181
Благодарностей: 1015
Полезность: 701

Не проще ли его просто убивать? чем он будет просто, тупо стоять и всем мешать
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Subb98
сообщение 23.12.2014, 18:42
Сообщение #7


Стаж: 15 лет
Город: Пермь

Сообщений: 216
Благодарностей: 281
Полезность: 1246

Цитата(Akinach @ 23.12.2014, 20:35) *
Интересно, а как такое будет выглядеть на ксдм?

Изначально система была задумана для Knife DM сервера, потому, собсно, я не учёл нюанс с раундами (на сервере они отсутствуют), выглядит вполне нормально. )

Цитата(Nebo @ 23.12.2014, 20:37) *
Не проще ли его просто убивать? чем он будет просто, тупо стоять и всем мешать

Как вариант. )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 23.12.2014, 18:51
Сообщение #8


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Вот решил протестировать на себе в результате выкидует с причиной Timed out

Код:
L 12/23/2014 - 17:42:20: VGClan <STEAM_0:0:47256284> warned VGClan <STEAM_0:0:47256284> | reason: "оскорбление" | warnings num: 1
Dropped VGClan from server
Reason: Timed out
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Subb98
сообщение 23.12.2014, 18:53
Сообщение #9


Стаж: 15 лет
Город: Пермь

Сообщений: 216
Благодарностей: 281
Полезность: 1246

Цитата(qpi3ik @ 23.12.2014, 20:47) *
Вот решил протестировать на себе в результате выкидует с причиной Timed out

Код:
L 12/23/2014 - 17:42:20: VGClan <STEAM_0:0:47256284> warned VGClan <STEAM_0:0:47256284> | reason: "оскорбление" | warnings num: 1
Dropped VGClan from server
Reason: Timed out

Сколько тестировали - ни разу такого не было. А тестировали достаточно долго, с разными игроками, в том числе и пока устраняли баг. Данная ошибка, насколько мне известно, не ошибка плагина, а сообщение сервера об отключении игрока при бездействии. Рекомендую проверить квары.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TJhack
сообщение 23.12.2014, 18:57
Сообщение #10
Стаж: 12 лет

Сообщений: 103
Благодарностей: 26
Полезность: < 0

Subb98,
Как наказание можно сделать так:
Наказанного игрока переносит в спектры и он не сможет зайти пока раунд не закончится или как закончится ему бы выходило msg! Типо: Ваше наказание закончено вы можете войти в игру! За повторное нарушение можно наказывать на 2,3,4,5 раундов и т.д. Получается что система наказывает по раундам в этом случае если раундтайм на паблике 2 минуты то получается 2,4,6,8,10 минут наказания в этом случае нужно сделать так что-бы игрок когда в наказании не смог заходить в игру методом рестарта реконекта ! ИМХО
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 23.12.2014, 18:58
Сообщение #11


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Цитата(Subb98 @ 23.12.2014, 19:49) *
Сколько тестировали - ни разу такого не было. А тестировали достаточно долго, с разными игроками, в том числе и пока устраняли баг. Данная ошибка, насколько мне известно, не ошибка плагина, а сообщение сервера об отключении игрока при бездействии. Рекомендую проверить квары.


Сори изменил строчку

Код:
new const PUNISHMENT_COMMAND[] = "kick <userid> '<reason>'"; // Команда наказания, заменить своей (по умолчанию "banid <time> <userid>;kick <userid> '<reason>'")


На бан FreshBans.

Вернул дефолт и теперь норм.

На себе я так понял затестить нельзя?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Subb98
сообщение 23.12.2014, 19:00
Сообщение #12


Стаж: 15 лет
Город: Пермь

Сообщений: 216
Благодарностей: 281
Полезность: 1246

TJhack, написать доп. плагин и подставить команду доп. плагина в константу этого. Как-то так. )

qpi3ik, на себе можно проверить.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 23.12.2014, 19:03
Сообщение #13


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Цитата(Subb98 @ 23.12.2014, 19:56) *
TJhack, написать доп. плагин и подставить команду доп. плагина в константу этого. Как-то так. )

qpi3ik, на себе можно проверить.


Пишет вот что в консоле.


You can't 'kick' because you are not a server operator
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Subb98
сообщение 23.12.2014, 19:04
Сообщение #14


Стаж: 15 лет
Город: Пермь

Сообщений: 216
Благодарностей: 281
Полезность: 1246

qpi3ik,

Цитата
Код
#define USE_SERVER_PUNISHMENT_COMMAND // Закомментируйте эту строку, если команда наказания должна будет выполняться от имени администратора, который выдал наказание, а не от имени сервера
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 23.12.2014, 19:13
Сообщение #15


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

А как использовать вместо кика.

Бан FreshBans-ом на мин 5?

Пробовал так: "fb_ban 5 [userid] 'Предупреждение!'"
Так выкидует причиной Timed out
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Subb98
сообщение 23.12.2014, 19:21
Сообщение #16


Стаж: 15 лет
Город: Пермь

Сообщений: 216
Благодарностей: 281
Полезность: 1246

qpi3ik, эм, FreshBans'ом пользоваться не доводилось, сейчас гляну описание, мб, подскажу...

попробуйте такие настройки:

Код
//#define USE_SERVER_PUNISHMENT_COMMAND
new const PUNISHMENT_COMMAND[] = "fb_ban <time> <userid> '<reason>'"


то же самое, по сути, но всё же, попробуйте...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 23.12.2014, 19:25
Сообщение #17


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Скрытый текст
Цитата(Subb98 @ 23.12.2014, 20:17) *
qpi3ik, эм, FreshBans'ом пользоваться не доводилось, сейчас гляну описание, мб, подскажу...

попробуйте такие настройки:

Код
//#define USE_SERVER_PUNISHMENT_COMMAND
new const PUNISHMENT_COMMAND[] = "fb_ban <time> <userid> '<reason>'"


то же самое, по сути, но всё же, попробуйте...



Да и как вручную очистить предупреждения?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Subb98
сообщение 23.12.2014, 19:26
Сообщение #18


Стаж: 15 лет
Город: Пермь

Сообщений: 216
Благодарностей: 281
Полезность: 1246

qpi3ik, на данный момент никак, к сожалению. Это тестовая версия плагина, в стабильном релизе эта функция запланирована, как и нормальные настройки через конфиг.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Subb98
сообщение 24.12.2014, 13:08
Сообщение #19


Стаж: 15 лет
Город: Пермь

Сообщений: 216
Благодарностей: 281
Полезность: 1246

Плагин обновлён:
Цитата
Версия 0.0.3 beta от 24.12.2014:
  • Добавление отмены всех текущих задач в начале нового раунда для предупреждённого игрока
  • Добавление проверки статуса игрока (жив/мёртв) при выдаче предупреждения
  • Корректировка файла спрайта (теперь иконка будет отображаться чуть выше над головой игрока, спрайт необходимо обновить на сервере)
  • Добавление нового ключа в файл словаря

Вчера уже много позже внимательней вчитался в сообщение TJhack'а:
Цитата(TJhack @ 23.12.2014, 21:30) *
Как быть с этим: допустим наказал игрока на 3 минуты и он стоит все его напарники умерли и он остался один так и будет стоять пока раундтайм не закончился?

Отвечая вчера на этот вопрос, я не обратил внимания на условное время: "3 минуты". Время предупреждения, конечно, фактически вы можете задать более 16-ти секунд (по умолчанию 12-ть и этого времени, в принципе, игроку должно хватать на прочтение сообщения):
Код:
#define FADE_IN_TIME 2.0
#define FADE_HOLD_TIME 6.0
#define FADE_OUT_TIME 4.0
#define FADE_TIME (FADE_IN_TIME + FADE_HOLD_TIME + FADE_OUT_TIME)

Но в этом случае, вероятней всего, плагин уже не будет работать корректно, ибо:
Код:
write_short(min(floatround(fInTime * 4096), 65535)); // в данном случае, short - это word, максимум ~16 секунд (без 1/4096)
write_short(min(floatround(aData[DSS_OutTime] * 4096), 65535)); // в данном случае, short - это word, максимум ~16 секунд (без 1/4096)

Если это небольшое время также критично, то, конечно, можно будет добавить настройку в следующей версии, которая будет определять, что делать с оставшимся предупреждённым игроком.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Aikido
сообщение 24.12.2014, 13:17
Сообщение #20


Стаж: 12 лет

Сообщений: 287
Благодарностей: 326
Полезность: 1102

Меценат Меценат

В таком случае его можно сделать уязвимым, ну чтобы могли убивать его.
Разрешать спавн ( это в случае retry ), и как только спавнится сделать неподвижным, вывести надпись с отчетом времени, и заблокировать стрельбу, иди вовсе убрать оружие, ну чтобы он не мог стрелять/убивать.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
4 страниц V   1 2 3 »
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 6 гостей читают эту тему: