[FilterScript] [FS] Временный бан по нику
#1

[FS] Временный бан по нику
28/03/2010
06/04/2010
Предупреждение:
- FS работает на сервере версии 0.3a R5 и выше, т.к. ранее функция fseek правильно не работала.

Описание:
- Это простой на вид, но очень полезный фильтрскрипт, который позволяет админам банить ники игроков на определенное кол-во часов.
- Скрипт использует текстовый файл для хранения ников, дат разбана и причин бана.
Файл очищается от истекших банов автоматически каждые 47 мин. После очистки в лог сервера выводится инфо.
- При получении бана игрок получает уведомление в чате и кик. В лог сервера выводится инфо о забаненном нике.

- Если кол-во часов не указывать, то бан будет на 12 часов.
- Если причину не указывать, то причина будет "причина не указана".
- Можно забанить и себя.

Как использовать:
- нужно быть ркон админом
- нужно использовать команду чата: /tempban [ID игрока] [кол-во часов] [причина бана]

Скачать:
- pastebin: http://pawn.pastebin.com/EEzWb3m3
- zip архив с PWN / AMX прилеплен к посту
Reply
#2

Интересный скрипт, сделаю свой аналог но на sql.
Reply
#3

Вроде как сервер должно крашнуть если файла не будет найдено
Quote:

new File: banFile = fopen( tempBanFile, io_read );

Reply
#4

нет, создаст новый.
Reply
#5

Quote:
Originally Posted by On1xS
Вроде как сервер должно крашнуть если файла не будет найдено
Quote:

new File: banFile = fopen( tempBanFile, io_read );

верно, упустил проверку на существование файла

добавлен код
Code:
if ( !fexist(tempBanFile) ) return 0;
Reply
#6

а как сделать временный мут?? на 5 минут наприме (ladmin)
Reply
#7

Мутиш игрока, создаешь ему таймер, и паблик через который произойдет автоматический анмут через заданное время.
Reply
#8

del
Reply
#9

Переделайте пожалуйста чтоб и причину можно было вписывать, сам пробую никак не получается
Reply
#10

Quote:
Originally Posted by fantomled
Переделайте пожалуйста чтоб и причину можно было вписывать, сам пробую никак не получается
по-конкретней. Варианты, желаемого тобой, нововведения могут быть очень разными.
Reply
#11

Он имеет в виду /ban id reason ну на пример /ban 5 God Mode
Reply
#12

MX_Master, Вот так /tempban [id] [время] [причина]
Reply
#13

Quote:
Originally Posted by fantomled
MX_Master, Вот так /tempban [id] [время] [причина]
- Причина должна тоже записываться в файл временных банов?
Если да, то придется добавить при входе забаненного игрока сообщение с причиной бана.

- Причина должна просто быть показана игроку без записи в файл временных банов?
Reply
#14

Quote:
Originally Posted by MX_Master
- Причина должна тоже записываться в файл временных банов?
Если да, то придется добавить при входе забаненного игрока сообщение с причиной бана.

- Причина должна просто быть показана игроку без записи в файл временных банов?
Желательно пусть причина тоже записывается в файл временных банов.
Reply
#15

оке, сделаемсЪ
Reply
#16

MX_Master, Спасибо большое заранее!
Reply
#17

Quote:
Originally Posted by fantomled
MX_Master, Спасибо большое заранее!
1 пост обновлен
Reply
#18

Quote:
Originally Posted by MX_Master
Quote:
Originally Posted by fantomled
MX_Master, Спасибо большое заранее!
1 пост обновлен
Спасибо тебе большое!!!
Reply
#19

А не подскажете как сделать так чтобы писало всем "Такойта_Такойта забанен администратором Такимто_Такимто, причина: такаета"
Я делаю так:
if ( tempBanPlayer( id, playerid, hours, reason ) )
{
new plName[24], admName[24];
new reportStr[160];
GetPlayerName( id, reportStr, 24 );
GetPlayerName(playerid, admName, sizeof(admName));
GetPlayerName( playerid, plName, 24 );
format( reportStr, 160, " * %s забанен администратором %s, причина: %s", plName, admName, reason );

SendClientMessageToAll( COLOR_LIGHTRED, reportStr );
}

Но мне пишет, "Админ_Такойта забанен администратором Такимто_Такимто, причина: такаета", тоесть показывает что админ банит сам себя.
Пробовал и GetPlayerName( giveplayerid, plName, 24 ); место GetPlayerName( playerid, plName, 24 );

Помогите пожалуйста.
Reply
#20

Code:
if ( tempBanPlayer( id, playerid, hours, reason ) )
{
  new reportStr[128], adminName[24];
  GetPlayerName( id, reportStr, 24 );
  GetPlayerName( playerid, adminName, 24 );

  format( reportStr, 128, " * %s (id:%d) забанен админом %s (id:%d) на %d час(ов)", reportStr, id, adminName, playerid, hours, reason );
  SendClientMessageToAll( 0xFF0000AA, reportStr );

  format( reportStr, 128, "  Причина: %s", reason );
  SendClientMessageToAll( 0xFF0000AA, reportStr );
}
else
  SendClientMessage( playerid, 0xFFFFFFAA, " * Ошибка записи в файл при добавлении нового временного бана" );
reportStr в начале используется как строка с именем забаненного игрока, чтобы не создавать лишних переменных.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)