Это мой восьмой урок.
Сегодня мы создадим систему блокировки.
Но не простую... Не Ban(playerid);
Система блокировки, будет блокировать IP адрес, подсеть IP адреса да и еще на время, unix время pawn.
Заходим в папку "scriptfiles" и создаем здесь папку "Userz" и/или заходим если она уже есть.
В папке "Userz" создаем/находим и заходим в папку/папку "Banedz".
В папке "Banedz" создаем две папки "IPs" и "Podset".
Создаем дефайны:
#define SERVER_PAHTACC_BANNEDSIPZ "Userz/Banedz/IPs/" // Путь до файлов блокировки IP адресов #define SERVER_PAHTACC_BANNEDSPODSETZ "Userz/Banedz/Podset/" // Путь до файлов блокировки подсетей IP
Если вы делали все по предыдущим урокам, у вас должно быть "FixConnectPlayer" или может вы его называли по другому, вы поймете.
Ищем этот паблик и вконце вставляем это:
ProverkaBanIpAdress(playerid); // Отправим игрока по его номеру на проверку бана IP адреса ProverkaBanIpPodset(playerid); // Отправим игрока по его номеру на проверку бана подсети IP
А сейчас мы добавим две команды.
Первая "/иблок" блокирует IP игрока.
Команда с параметрами: "/иблок [номер игрока] [Количество дней блокировки аккаунта] [Причина]"
Пример использования: "/иблок 0 10 Использование читов/модов/программ дающих преимущество в игре."
Вторая "/пблок" блокирует подсеть IP игрока.
Что такое подсеть? Это часть IP обычно без последнего или последних звеньев.
Возмем игрока с IP адресом 11.22.33.44 и блокируем его подсеть. Например, мы заблокировали 11.22.33.*
и это значит, что все любой игрок у кого IP начинается на 11.22.33.число не сможет играть.
Например игрок с IP 11.22.33.55 не зайдет в игру и увидит блокировку.
Команда с параметрами: "/пблок [номер игрока] [Количество дней блокировки аккаунта] [Параметр (2 или 3)] [Причина]"
Что за параметр? Если вы введете команду в таком виде: "/пблок 0 10 2 Обход блокировки IP"
То игрока с номером 0 заблокирует сервер на 10 дней по такой то причине на две части от IP.
Например его IP 11.22.33.44, а забанится 11.22.*.*, если: "/пблок 0 10 3 Обход блокировки IP", то
забанится 11.22.33.*. Думаю здесь все понятно.
// | Команда блокировки IP
if(!strcmp("/иблок",cmd,true)) // Если игрок ввел команду
{
if(!AdminAccess(playerid,1))return true;
new giveplayerid, dney;
tmp=strtok(cmdtext,idx); // Ищем пробел
if(!strlen(tmp))return SendClientMessage(playerid,-1,COL_GREEN"[Подсказка]"COL_LBLUE" /иблок [ид] [кол-во дней] [причина] - Не введен номер игрока"); // Если после первого пробела нечего нет
giveplayerid = UserID(tmp); // Присваиваем первое значение первой перменной (номер игрока)
tmp=strtok(cmdtext,idx); // Ищем пробел
if(!strlen(tmp))return SendClientMessage(playerid,-1,COL_GREEN"[Подсказка]"COL_LBLUE" /иблок [ид] [кол-во дней] [причина] - Не введено количество дней блокировки IP"); // Если после второго пробела нечего нет
dney = strval(tmp); // Присваиваем второе значение второй перменной (Кол-во дней)
if(giveplayerid != INVALID_PLAYER_ID) // Если номер адекватный
{ // Ниже система выбора причины
new length=strlen(cmdtext);
while((idx<length)&&(cmdtext[idx]<=' '))
{
idx++;
}
new offset=idx;
new result[64];
while((idx<length)&&((idx-offset)<(sizeof(result)-1)))
{
result[idx-offset]=cmdtext[idx];
idx++;
}
result[idx-offset]=EOS;
if(!strlen(result))return SendClientMessage(playerid,-1,COL_GREEN"[Подсказка]"COL_LBLUE" /иблок [ид] [кол-во дней] [причина] - Не введена причина блокировки аккаунта"); // Если после третьего пробела нечего нет или нет пробела выводим сообщение
AdmBaneedIpAdress(giveplayerid,playerid,dney,(result)); // Запускаем сток с нашими параметрами
}
else return SendClientMessage(playerid,-1,COL_RED"[Ошибка]"COL_YELLOW" Неправильно указан ID игрока"); // Если номер не адекватный
return true;
}
// | Команда блокировки IP
// | Команда блокировки подсети IP
if(!strcmp("/пблок",cmd,true))
{
if(!AdminAccess(playerid,1))return true;
new giveplayerid, dney, paramz;
tmp=strtok(cmdtext,idx); // Ищем пробел
if(!strlen(tmp))return SendClientMessage(playerid,-1,COL_GREEN"[Подсказка]"COL_LBLUE" /пблок [ид] [кол-во дней] [Параметр (2 или 3)] [причина] - Не введен номер игрока"); // Если после первого пробела нечего нет
giveplayerid = UserID(tmp); // Присваиваем первое значение первой перменной (номер игрока)
tmp=strtok(cmdtext,idx); // Ищем пробел
if(!strlen(tmp))return SendClientMessage(playerid,-1,COL_GREEN"[Подсказка]"COL_LBLUE" /пблок [ид] [кол-во дней] [Параметр (2 или 3)] [причина] - Не введено количество дней блокировки IP"); // Если после второго пробела нечего нет
dney = strval(tmp); // Присваиваем второе значение второй перменной (Кол-во дней)
tmp=strtok(cmdtext,idx); // Ищем пробел
if(!strlen(tmp))return SendClientMessage(playerid,-1,COL_GREEN"[Подсказка]"COL_LBLUE" /пблок [ид] [кол-во дней] [Параметр (2 или 3)] [причина] - Не введен параметр"); // Если после второго пробела нечего нет
paramz = strval(tmp); // Присваиваем третье значение третьей перменной (параметр)
if(giveplayerid != INVALID_PLAYER_ID) // Если номер адекватный
{ // Ниже система выбора причины
new length=strlen(cmdtext);
while((idx<length)&&(cmdtext[idx]<=' '))
{
idx++;
}
new offset=idx;
new result[64];
while((idx<length)&&((idx-offset)<(sizeof(result)-1)))
{
result[idx-offset]=cmdtext[idx];
idx++;
}
result[idx-offset]=EOS;
if(!strlen(result))return SendClientMessage(playerid,-1,COL_GREEN"[Подсказка]"COL_LBLUE" /иблок [ид] [кол-во дней] [Параметр (2 или 3)] [причина] - Не введена причина блокировки аккаунта"); // Если после третьего пробела нечего нет или нет пробела выводим сообщение
AdmBaneedIpPodset(giveplayerid,playerid,dney,paramz,(result)); // Запускаем сток с нашими параметрами
}
else return SendClientMessage(playerid,-1,COL_RED"[Ошибка]"COL_YELLOW" Неправильно указан ID игрока"); // Если номер не адекватный
return true;
}
// | Команда блокировки подсети IP
Дальше создадим несколько стоков:
stock ProverkaBanIpAdress(playerid)
{
new account[256]; // Временная переменная
format(account,sizeof(account),SERVER_PAHTACC_BANNEDSIPZ"%s.txt",pIPAdressPlayer[playerid]); // Форматируем путь
if(!fexist(account)) return true; // Если файла нет останавливаем процесс
new AdminName[SERVER_MAXNAMEE]; // Переменная для админ-ника
new ReasonBan[256]; // Перменная для причины
new VidBan[24]; // Перменная вида блокировки
new ipforfile[30];
new BanIpNamePlaya[SERVER_MAXNAMEE]; // Переменная для игрока при котором был заблокирован IP адрес
new dney,unbantime; // Перменная для кол-ва дней и unix времени разблокировки
new d_year,d_month,d_day; // Перменные года, месяца, дня
new v_hour,v_minuite,v_second; // Перменная часа, минуты, секунды
new currenttime = gettime(); // Переменная unix времени сейчас
new iniFile=ini_openFile(account); // Откроем файл и запишем его номер
//
ini_getString(iniFile, "Ник_админа_вышавшего_блокировку",AdminName); // Запишем ник админа в переменную
ini_getString(iniFile, "Причина_блокировки",ReasonBan); // Запишем причину бана в переменную
ini_getString(iniFile, "Вид_блокировки",VidBan); // Запишем вид бана
ini_getString(iniFile, "Заблокированный_IP_адрес", ipforfile);
ini_getString(iniFile, "Ник_имевший_этот_IP_на_момент_блокировки",BanIpNamePlaya);
ini_getInteger(iniFile,"Количество_дней_блокировки_аккаунта",dney); // Запишем количество дней бана
ini_getInteger(iniFile,"ЧИСЛО_ПРИ_РАЗБЛОКИРОВКЕ", unbantime); // Запишем unix время разбана
ini_getInteger(iniFile,"Год_блокировки_аккаунта",d_year); // Запишем год бана
ini_getInteger(iniFile,"Месяц_блокировки_аккаунта",d_month); // Запишем месяц бана
ini_getInteger(iniFile,"День_блокировки_аккаунта",d_day); // Запишем день бана
ini_getInteger(iniFile,"Час_блокировки_аккаунта",v_hour); // Запишем час бана
ini_getInteger(iniFile,"Минута_блокировки_аккаунта",v_minuite); // Запишем минуту бана
ini_getInteger(iniFile,"Секунда_блокировки_аккаунта",v_second); // Запишем секунду бана
ini_closeFile(iniFile); // Закроем файл по его номеру
if(currenttime >= unbantime) return SusUnbaneedIpAdress(playerid, account); // Если unix время сейчас больше или равно unix время разблокировки, запустим сток разбана
else // Если меньше то выведем информацию о блокировке
{
format(gString, sizeof(gString), COL_RED" | "COL_YELLOW"Информация о блокировке "COL_RED"|");
format(gString, sizeof(gString), "%s\n"COL_WHITE"Вид блокировки: "COL_LBLUE"%s",gString, VidBan);
format(gString, sizeof(gString), "%s\n"COL_WHITE"IP адрес: "COL_LBLUE"%s "COL_WHITE"заблокирован",gString,ipforfile);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Ваш IP адрес: "COL_LBLUE"%s "COL_WHITE"совпал с заблокированным или заблокированный "COL_LBLUE"IP адрес ваш.",gString,pIPAdressPlayer[playerid]);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Доступ в игру с этого IP адреса запрещен сервером!",gString);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Ваш ник: "COL_LBLUE"%s",gString,pNickNamePlayer[playerid]);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Ник, при котором был заблокирован этот IP адрес: "COL_LBLUE"%s",gString,BanIpNamePlaya);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Причина блокировки: "COL_LBLUE"%s",gString, ReasonBan);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Дата бана - Год: "COL_LBLUE"%d"COL_WHITE", Месяц: "COL_LBLUE"%d"COL_WHITE", День: "COL_LBLUE"%d",gString,d_year,d_month,d_day);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Время бана - Час: "COL_LBLUE"%d"COL_WHITE", Минута: "COL_LBLUE"%d"COL_WHITE", Секунда: "COL_LBLUE"%d",gString,v_hour,v_minuite,v_second);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Блокировка аккаунта на "COL_LBLUE"%d "COL_WHITE"дней",gString,dney);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Администрор выдавший блокировку: "COL_LBLUE"%s",gString, AdminName);
ShowPlayerDialog(playerid,D_BANINFORMATION,DIALOG_STYLE_MSGBOX,"Блокировка",gString,"Ясно",""); // Информация о блокировке
Fixkikeed(playerid); // Отключим от сервера
}
return true;
}
stock ProverkaBanIpPodset(playerid)
{
new account[256]; // Временная переменная
new AdminName[SERVER_MAXNAMEE]; // Переменная для админ-ника
new ReasonBan[256]; // Перменная для причины
new VidBan[24]; // Перменная вида блокировки
new podsetIP[30];
new BanIpNamePlaya[SERVER_MAXNAMEE]; // Переменная для игрока при котором был заблокирован IP адрес
new dney,unbantime; // Перменная для кол-ва дней и unix времени разблокировки
new d_year,d_month,d_day; // Перменные года, месяца, дня
new v_hour,v_minuite,v_second; // Перменная часа, минуты, секунды
new currenttime = gettime(); // Переменная unix времени сейчас
format(account,sizeof(account),SERVER_PAHTACC_BANNEDSPODSETZ"%s.txt",pIPPodsetPlayerTwo[playerid]);
if(!fexist(account))
{
format(account,sizeof(account),SERVER_PAHTACC_BANNEDSPODSETZ"%s.txt",pIPPodsetPlayerThree[playerid]);
if(!fexist(account)) return true;
else goto PROVERKABANPODSETIP;
}
else goto PROVERKABANPODSETIP;
PROVERKABANPODSETIP:
new iniFile=ini_openFile(account); // Откроем файл и запишем его номер
ini_getString(iniFile, "Ник_админа_вышавшего_блокировку",AdminName); // Запишем ник админа в переменную
ini_getString(iniFile, "Причина_блокировки",ReasonBan); // Запишем причину бана в переменную
ini_getString(iniFile, "Вид_блокировки",VidBan); // Запишем вид бана
ini_getString(iniFile, "Заблокированная_подсеть", podsetIP);
ini_getString(iniFile, "Ник_имевший_эту_подсеть",BanIpNamePlaya);
ini_getInteger(iniFile,"Количество_дней_блокировки_аккаунта",dney); // Запишем количество дней бана
ini_getInteger(iniFile,"ЧИСЛО_ПРИ_РАЗБЛОКИРОВКЕ", unbantime); // Запишем unix время разбана
ini_getInteger(iniFile,"Год_блокировки_аккаунта",d_year); // Запишем год бана
ini_getInteger(iniFile,"Месяц_блокировки_аккаунта",d_month); // Запишем месяц бана
ini_getInteger(iniFile,"День_блокировки_аккаунта",d_day); // Запишем день бана
ini_getInteger(iniFile,"Час_блокировки_аккаунта",v_hour); // Запишем час бана
ini_getInteger(iniFile,"Минута_блокировки_аккаунта",v_minuite); // Запишем минуту бана
ini_getInteger(iniFile,"Секунда_блокировки_аккаунта",v_second); // Запишем секунду бана
ini_closeFile(iniFile); // Закроем файл по его номеру
if(currenttime >= unbantime) return SusUnbaneedIpPodset(playerid, account); // Если unix время сейчас больше или равно unix время разблокировки, запустим сток разбана
else
{
format(gString, sizeof(gString), COL_RED" | "COL_YELLOW"Информация о блокировке "COL_RED"|");
format(gString, sizeof(gString), "%s\n"COL_WHITE"Вид блокировки: "COL_LBLUE"%s",gString, VidBan);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Заблокированная подсеть: "COL_LBLUE"%s",gString, podsetIP);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Ваша подсеть: "COL_LBLUE"%s"COL_WHITE":"COL_LBLUE"%s",gString,pIPPodsetPlayerTwo[playerid],pIPPodsetPlayerThree[playerid]
);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Доступ в игру с этой подсети "COL_LBLUE"запрещен "COL_WHITE"сервером!",gString);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Ваш ник: "COL_LBLUE"%s",gString,pNickNamePlayer[playerid]);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Ник, при котором была заблокирована подсеть: "COL_LBLUE"%s",gString,BanIpNamePlaya);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Причина блокировки: "COL_LBLUE"%s",gString, ReasonBan);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Дата бана - Год: "COL_LBLUE"%d"COL_WHITE", Месяц: "COL_LBLUE"%d"COL_WHITE", День: "COL_LBLUE"%d",gString,d_year,d_month,d_day);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Время бана - Час: "COL_LBLUE"%d"COL_WHITE", Минута: "COL_LBLUE"%d"COL_WHITE", Секунда: "COL_LBLUE"%d",gString,v_hour,v_minuite,v_second);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Блокировка аккаунта на "COL_LBLUE"%d "COL_WHITE"дней",gString,dney);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Администрор выдавший блокировку: "COL_LBLUE"%s",gString, AdminName);
ShowPlayerDialog(playerid,D_BANINFORMATION,DIALOG_STYLE_MSGBOX,"Блокировка",gString,"Ясно",""); // Информация о блокировке
Fixkikeed(playerid); // Отключим от сервера
}
return true;
}
stock SusUnbaneedIpAdress(playerid, account[])
{
new AdminName[SERVER_MAXNAMEE]; // Перменная ника админа
new ReasonBan[256]; // Перменная причины бана
new VidBan[24]; // Перменная вида бана
new ipforfile[30];
new BanIpNamePlaya[SERVER_MAXNAMEE]; // Переменная для игрока при котором был заблокирован IP адрес
new dney; // Перменная для кол-ва дней бана
new d_year,d_month,d_day; // Перменные года, месяца, дня
new v_hour,v_minuite,v_second; // Перменная часа, минуты, секунды
new iniFile=ini_openFile(account); // Откроем файл и запишем его номер
//
ini_getString(iniFile, "Ник_админа_вышавшего_блокировку",AdminName); // Запишем ник админа в переменную
ini_getString(iniFile, "Причина_блокировки",ReasonBan); // Запишем причину бана в переменную
ini_getString(iniFile, "Вид_блокировки",VidBan); // Запишем вид бана
ini_getString(iniFile, "Заблокированный_IP_адрес", ipforfile);
ini_getString(iniFile, "Ник_имевший_этот_IP_на_момент_блокировки",BanIpNamePlaya);
ini_getInteger(iniFile,"Количество_дней_блокировки_аккаунта",dney); // Запишем количество дней бана
ini_getInteger(iniFile,"Год_блокировки_аккаунта",d_year); // Запишем год бана
ini_getInteger(iniFile,"Месяц_блокировки_аккаунта",d_month); // Запишем месяц бана
ini_getInteger(iniFile,"День_блокировки_аккаунта",d_day); // Запишем день бана
ini_getInteger(iniFile,"Час_блокировки_аккаунта",v_hour); // Запишем час бана
ini_getInteger(iniFile,"Минута_блокировки_аккаунта",v_minuite); // Запишем минуту бана
ini_getInteger(iniFile,"Секунда_блокировки_аккаунта",v_second); // Запишем секунду бана
ini_closeFile(iniFile); // Закроем файл по его номеру
fremove(account); // Удалим файл
format(gString, sizeof(gString), COL_RED" | "COL_YELLOW"Информация о разблокировке "COL_RED"|");
format(gString, sizeof(gString), "%s\n"COL_WHITE"Ранее твой "COL_RED"IP адрес "COL_WHITE"был забанен.", gString);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Вид блокировки: "COL_LBLUE"%s",gString,VidBan);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Разблокированный IP адрес: "COL_LBLUE"%s",gString,ipforfile);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Доступ в игру с этого "COL_LBLUE"IP адреса "COL_WHITE"разрешен сервером!",gString);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Ник имевший этот "COL_LBLUE"IP адрес "COL_WHITE"на момент блокировки: "COL_LBLUE"%s",gString,BanIpNamePlaya);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Причина блокировки: "COL_LBLUE"%s",gString, ReasonBan);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Дата бана - Год: "COL_LBLUE"%d"COL_WHITE", Месяц: "COL_LBLUE"%d"COL_WHITE", День: "COL_LBLUE"%d",gString,d_year,d_month,d_day);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Время бана - Час: "COL_LBLUE"%d"COL_WHITE", Минута: "COL_LBLUE"%d"COL_WHITE", Секунда: "COL_LBLUE"%d",gString,v_hour,v_minuite,v_second);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Блокировка аккаунта производилась на "COL_LBLUE"%d "COL_WHITE"дней",gString,dney);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Администрор выдавший блокировку: "COL_LBLUE"%s"COL_WHITE,gString, AdminName);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Сегодня твой "COL_LBLUE"IP адрес"COL_WHITE" был "COL_LBLUE"разблокирован "COL_WHITE"сервером.", gString);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Впредь пожалуйста не нарушай правила сервера и (или) проекта.", gString);
ShowPlayerDialog(playerid,D_UNBANINFORMATION,DIALOG_STYLE_MSGBOX,"Разблокировка",gString,"Авториз",""
); // Информация о разблокировке
format(estr,sizeof(estr),COL_LBLUE"[Разбан]"COL_RED" У игрока "COL_APELS"%s "COL_RED"IP адрес: "COL_APELS"%s "COL_RED"был разблокирован системой. Причина: "COL_APELS"Кончился срок блокировки.",pNickNamePlayer[playerid],ipforfile); // Оповещаем игроков
SendClientMessageToAll(-1,estr); // Сообщение
return true;
}
stock SusUnbaneedIpPodset(playerid, account[])
{
new AdminName[SERVER_MAXNAMEE]; // Перменная ника админа
new ReasonBan[256]; // Перменная причины бана
new VidBan[24]; // Перменная вида бана
new podsetIP[30];
new BanIpNamePlaya[SERVER_MAXNAMEE]; // Переменная для игрока при котором был заблокирован IP адрес
new dney; // Перменная для кол-ва дней бана
new d_year,d_month,d_day; // Перменные года, месяца, дня
new v_hour,v_minuite,v_second; // Перменная часа, минуты, секунды
new iniFile=ini_openFile(account); // Откроем файл и запишем его номер
ini_getString(iniFile, "Ник_админа_вышавшего_блокировку",AdminName); // Запишем ник админа в переменную
ini_getString(iniFile, "Причина_блокировки",ReasonBan); // Запишем причину бана в переменную
ini_getString(iniFile, "Вид_блокировки",VidBan); // Запишем вид бана
ini_getString(iniFile, "Заблокированная_подсеть", podsetIP);
ini_getString(iniFile, "Ник_имевший_эту_подсеть",BanIpNamePlaya);
ini_getInteger(iniFile,"Количество_дней_блокировки_аккаунта",dney); // Запишем количество дней бана
ini_getInteger(iniFile,"Год_блокировки_аккаунта",d_year); // Запишем год бана
ini_getInteger(iniFile,"Месяц_блокировки_аккаунта",d_month); // Запишем месяц бана
ini_getInteger(iniFile,"День_блокировки_аккаунта",d_day); // Запишем день бана
ini_getInteger(iniFile,"Час_блокировки_аккаунта",v_hour); // Запишем час бана
ini_getInteger(iniFile,"Минута_блокировки_аккаунта",v_minuite); // Запишем минуту бана
ini_getInteger(iniFile,"Секунда_блокировки_аккаунта",v_second); // Запишем секунду бана
ini_closeFile(iniFile); // Закроем файл по его номеру
fremove(account); // Удалим файл
format(gString, sizeof(gString), COL_RED" | "COL_YELLOW"Информация о разблокировке "COL_RED"|");
format(gString, sizeof(gString), "%s\n"COL_WHITE"Ранее твоя "COL_RED"подсеть "COL_WHITE"была заблокирована.", gString);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Вид блокировки: "COL_LBLUE"%s",gString,VidBan);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Разблокированная подсеть: "COL_LBLUE"%s",gString,podsetIP);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Доступ в игру с этой "COL_LBLUE"подсети "COL_WHITE"разрешен сервером!",gString);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Ник имевший эту "COL_LBLUE"подсеть "COL_WHITE"на момент блокировки: "COL_LBLUE"%s",gString,BanIpNamePlaya);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Причина блокировки: "COL_LBLUE"%s",gString, ReasonBan);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Дата бана - Год: "COL_LBLUE"%d"COL_WHITE", Месяц: "COL_LBLUE"%d"COL_WHITE", День: "COL_LBLUE"%d",gString,d_year,d_month,d_day);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Время бана - Час: "COL_LBLUE"%d"COL_WHITE", Минута: "COL_LBLUE"%d"COL_WHITE", Секунда: "COL_LBLUE"%d",gString,v_hour,v_minuite,v_second);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Блокировка аккаунта производилась на "COL_LBLUE"%d "COL_WHITE"дней",gString,dney);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Администрор выдавший блокировку: "COL_LBLUE"%s"COL_WHITE,gString, AdminName);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Сегодня твой "COL_LBLUE"IP адрес"COL_WHITE" был "COL_LBLUE"разблокирован "COL_WHITE"сервером.", gString);
format(gString, sizeof(gString), "%s\n"COL_WHITE"Впредь пожалуйста не нарушай правила сервера и (или) проекта.", gString);
ShowPlayerDialog(playerid,D_UNBANINFORMATION,DIALOG_STYLE_MSGBOX,"Разблокировка",gString,"Авториз",""
); // Информация о разблокировке
format(estr,sizeof(estr),COL_LBLUE"[Разбан]"COL_RED" У игрока "COL_APELS"%s "COL_RED"подсеть: "COL_APELS"%s "COL_RED"была разблокирована системой. Причина: "COL_APELS"Кончился срок блокировки.",pNickNamePlayer[playerid],podsetIP); // Оповещаем игроков
SendClientMessageToAll(-1,estr); // Сообщение
return true;
}
stock AdmBaneedIpAdress(banid,admid,dney,reaz[])
{
if(dney == 0)return SendClientMessage(admid,-1,COL_RED"[Ошибка]"COL_YELLOW" Нельзя указать ноль дней!"); // Если дней меньше одного указано админом
new razbanacc; // Переменная для unix времени разблокировки
new banacc; // Перменная для unix блокировки
new account[256]; // Перменная для пути
new year, month, day; // Перменные года, месяца, дня
new hour ,minuite, second; // Перменная часа, минуты, секунды
format(estr,sizeof(estr),COL_RED"Администратор "COL_APELS"%s "COL_RED" заблокировал IP адрес: "COL_APELS"%s "COL_RED"игрока "COL_APELS"%s[%d] "COL_RED"на "COL_APELS"%d "COL_RED"дней. Причина: "COL_APELS"%s",pNickNamePlayer[admid],pIPAdressPlayer[banid],pNickNamePlayer[banid],banid,dney,reaz);
SendClientMessageToAll(-1,estr); // Сообщение
format(estr,sizeof(estr),COL_RED"Твой IP адрес: "COL_APELS"%s"COL_RED", был заблокирован администратором "COL_APELS"%s"COL_RED", на "COL_APELS"%d "COL_RED"дней. Причина: "COL_APELS"%s",pIPAdressPlayer[banid],pNickNamePlayer[admid],dney,reaz);
SendClientMessage(banid,-1,estr); // Сообщение
format(estr,sizeof(estr),COL_RED"Ты заблокировил IP адрес: "COL_APELS"%s"COL_RED", игрока "COL_APELS"%s[%d] "COL_RED"на "COL_APELS"%d "COL_RED"дней. Причина: "COL_APELS"%s",pIPAdressPlayer[banid],pNickNamePlayer[banid],banid,dney,reaz);
SendClientMessage(admid,-1,estr); // Сообщение
getdate(year,month,day); // Запишем год, месяц, день в наши переменные
gettime(hour,minuite,second); // Запишем час, минуту, секунду в наши переменные
banacc = gettime(); // Запишем unix время бана
razbanacc = 86400 * dney; // Узнаем unix время разбана
format(account,sizeof(account),SERVER_PAHTACC_BANNEDSIPZ"%s.txt",pIPAdressPlayer[banid]); // Форматируем путь
new iniFile=ini_createFile(account);
if(iniFile < 0)ini_openFile (account); // Если файл пустой откроем его
{
ini_setString(iniFile, "Ник_админа_вышавшего_блокировку", pNickNamePlayer[admid]); // Узнаем ник админа выдавшего бан и запишем его в файл
ini_setString(iniFile, "Причина_блокировки", reaz); // Запишем причину бана
ini_setString(iniFile, "Вид_блокировки", "IP адрес"); // Запишем вид бана
ini_setString(iniFile, "Заблокированный_IP_адрес", pIPAdressPlayer[banid]);
ini_setString(iniFile, "Ник_имевший_этот_IP_на_момент_блокировки",pNickNamePlayer[banid]);
ini_setInteger(iniFile,"Количество_дней_блокировки_аккаунта",dney); // Запишем количество дней бана
ini_setInteger(iniFile,"ЧИСЛО_ПРИ_БЛОКИРОВКЕ", banacc); // Запишем unix время бана
ini_setInteger(iniFile,"ЧИСЛО_ПРИ_РАЗБЛОКИРОВКЕ", razbanacc + banacc); // Запишем unix время разбана
ini_setInteger(iniFile,"Год_блокировки_аккаунта",year); // Запишем год бана
ini_setInteger(iniFile,"Месяц_блокировки_аккаунта",month); // Запишем месяц бана
ini_setInteger(iniFile,"День_блокировки_аккаунта",day); // Запишем день бана
ini_setInteger(iniFile,"Час_блокировки_аккаунта",hour); // Запишем час бана
ini_setInteger(iniFile,"Минута_блокировки_аккаунта",minuite); // Запишем минуту бана
ini_setInteger(iniFile,"Секунда_блокировки_аккаунта",second); // Запишем секунду бана
ini_closeFile(iniFile); // Закроем файл по его номеру
SendClientMessage(banid,-1,""); // Сообщение
SendClientMessage(banid,-1,COL_RED"--------------------------------------------------------------------------------------------------------");
// Сообщение
SendClientMessage(banid,-1,COL_WHITE"Не согласен с действием администрации? Пиши жалобу - "COL_APELS SERVER_WEBURL_JB_GRUPS); // Сообщение
SendClientMessage(banid,-1,COL_WHITE"Для разблокировки пиши в эту тему - "COL_APELS SERVER_WEBURL_UNB_GRUPS); // Сообщение
SendClientMessage(banid,-1,COL_RED"--------------------------------------------------------------------------------------------------------");
// Сообщение
SendClientMessage(banid,-1,""); // Сообщение
ProverkaBanIpAdress(banid); // Отправим игрока по его номеру на проверку бана
}
return true;
}
stock AdmBaneedIpPodset(banid,admid,dney,paramz,reaz[])
{
if(dney == 0)return SendClientMessage(admid,-1,COL_RED"[Ошибка]"COL_YELLOW" Нельзя указать ноль дней!"); // Если дней меньше одного указано админом
new razbanacc; // Переменная для unix времени разблокировки
new banacc; // Перменная для unix блокировки
new account[256]; // Перменная для пути
new year, month, day; // Перменные года, месяца, дня
new hour ,minuite, second; // Перменная часа, минуты, секунды
new podsetIP[30];
switch (paramz)
{
case 2:format(podsetIP,sizeof(podsetIP),"%s",pIPPodsetPlayerTwo[banid]);
case 3:format(podsetIP,sizeof(podsetIP),"%s",pIPPodsetPlayerThree[banid]);
}
format(estr,sizeof(estr),"Администратор %s заблокировал подсеть IP: %s игрока %s[%d] на %d дней. Причина: %s",pNickNamePlayer[admid],podsetIP,pNickNamePlayer[banid],banid,dney,reaz);
SendClientMessageToAll(-1,estr); // Сообщение
format(estr,sizeof(estr),"Твою подсеть IP: %s заблокировал админ %s на %d дней. Причина: %s",podsetIP,pNickNamePlayer[admid],dney,reaz);
SendClientMessage(banid,-1,estr); // Сообщение
format(estr,sizeof(estr),"Ты заблокировал подсеть: %s игрока %s[%d] на %d дней. Причина: %s",podsetIP,pNickNamePlayer[banid],banid,dney,reaz);
SendClientMessage(admid,-1,estr); // Сообщение
getdate(year,month,day); // Запишем год, месяц, день в наши переменные
gettime(hour,minuite,second); // Запишем час, минуту, секунду в наши переменные
banacc = gettime(); // Запишем unix время бана
razbanacc = 86400 * dney; // Узнаем unix время разбана
format(account,sizeof(account),SERVER_PAHTACC_BANNEDSPODSETZ"%s.txt",podsetIP); // Форматируем путь
new iniFile=ini_createFile(account);
if(iniFile < 0)ini_openFile (account); // Если файл пустой откроем его
{
ini_setString(iniFile, "Ник_админа_вышавшего_блокировку", pNickNamePlayer[admid]); // Узнаем ник админа выдавшего бан и запишем его в файл
ini_setString(iniFile, "Причина_блокировки", reaz); // Запишем причину бана
ini_setString(iniFile, "Вид_блокировки", "Подсеть"); // Запишем вид бана
ini_setString(iniFile, "Заблокированная_подсеть", podsetIP);
ini_setString(iniFile, "Ник_имевший_эту_подсеть", pNickNamePlayer[banid]);
ini_setInteger(iniFile,"Количество_дней_блокировки_аккаунта",dney); // Запишем количество дней бана
ini_setInteger(iniFile,"ЧИСЛО_ПРИ_БЛОКИРОВКЕ", banacc); // Запишем unix время бана
ini_setInteger(iniFile,"ЧИСЛО_ПРИ_РАЗБЛОКИРОВКЕ", razbanacc + banacc); // Запишем unix время разбана
ini_setInteger(iniFile,"Год_блокировки_аккаунта",year); // Запишем год бана
ini_setInteger(iniFile,"Месяц_блокировки_аккаунта",month); // Запишем месяц бана
ini_setInteger(iniFile,"День_блокировки_аккаунта",day); // Запишем день бана
ini_setInteger(iniFile,"Час_блокировки_аккаунта",hour); // Запишем час бана
ini_setInteger(iniFile,"Минута_блокировки_аккаунта",minuite); // Запишем минуту бана
ini_setInteger(iniFile,"Секунда_блокировки_аккаунта",second); // Запишем секунду бана
ini_closeFile(iniFile); // Закроем файл по его номеру
SendClientMessage(banid,-1,""); // Сообщение
SendClientMessage(banid,-1,COL_RED"--------------------------------------------------------------------------------------------------------");
// Сообщение
SendClientMessage(banid,-1,COL_WHITE"Не согласен с действием администрации? Пиши жалобу - "COL_APELS SERVER_WEBURL_JB_GRUPS); // Сообщение
SendClientMessage(banid,-1,COL_WHITE"Для разблокировки пиши в эту тему - "COL_APELS SERVER_WEBURL_UNB_GRUPS); // Сообщение
SendClientMessage(banid,-1,COL_RED"--------------------------------------------------------------------------------------------------------");
// Сообщение
SendClientMessage(banid,-1,""); // Сообщение
ProverkaBanIpPodset(banid); // Отправим игрока по его номеру на проверку бана
}
return true;
}
Вход
Регистрация
Помощь

Тема закрыта







