/timeban (dc_cmd / zcmd) + sscanf
Команда блокирует IP-адрес игрока на время указанное в параметрах.
Примечание:
- Если сервер завершит свою работу, все забаненные IP-адреса очистятся.
Параметры:
- targetid - ID игрока
- type - тип времени блокировки [0 - секунды, 1 - минуты, 2 - часы, 3 - дни]
- time - время бана
- reason - причина бана
Всего типов бана: 4 (можно было добавить и больше но pawn не позволяет использовать огромные числа).
PHP код:
CMD:timeban(playerid, params[])
{
new
targetid,
b_type,
b_time,
b_reason[30]
;
if(sscanf(params, "udds[30]", targetid, b_type, b_time, b_reason))
return SendClientMessage(playerid, -1, "Используйте: /timeban [targetid] [type (0 - seconds | 1 - minutes | 2 - hours | 3 - days] [time] [reason]");
if(IsPlayerConnected(targetid) == 0)
return SendClientMessage(playerid, -1, "Такого игрока нет на сервере.");
if(!(0 <= b_type <= 3))
return SendClientMessage(playerid, -1, "Тип времени бана от 0 и до 3.");
static const
fmt_str[] = "Игрок %s (%d) был забанен администрацией на кол-во %s: %d, по причине: %s",
b_type_names[][] = {"секунд", "минут", "часов", "дней"},
b_type_times[] = {1, 60, 3600, 86400}
;
new
str[sizeof(fmt_str) - 2 + MAX_PLAYER_NAME - 2 + 3 - 2 + 6 - 2 + 12 - 2 + 30],
t_id_Ip[16]
;
GetPlayerIp(targetid, t_id_Ip, 16);
GetPlayerName(targetid, str, MAX_PLAYER_NAME);
format(str, sizeof(str), fmt_str, str, targetid, b_type_names[b_type], b_time, b_reason);
SendClientMessageToAll(-1, str);
b_time *= b_type_times[b_type] * 1000;
Kick(targetid);
return BlockIpAddress(t_id_Ip, b_time);
}
Автор: Londlem
Специально для: Pro-Pawn.Ru
Копирование данной статьи без разрешения автора запрещено!