Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Делаем систему бана с автоматическим разбаном (Как на Samp-Rp)

Статус
В этой теме нельзя размещать новые ответы.

Gressie

Мастер
Делать было нечего написал новую систему бана аккаунта с автоматическим разбаном :). Итак начнём:
К enum pInfo добавляем:
PHP:
pBanTime,
pBanData
В public OnPlayerRegister(playerid, password[]) добавляем:
PHP:
ini_setInteger(File, "BanTime",PlayerInfo[playerid][pBanTime]);
ini_setInteger(File, "BanData",PlayerInfo[playerid][pBanData]);
В public OnPlayerLogin(playerid, password[]) добавляем:
PHP:
ini_getInteger(File, "BanTime",PlayerInfo[playerid][pBanTime]);
ini_getInteger(File, "BanData",PlayerInfo[playerid][pBanData]);
В public OnPlayerUpdateRL(playerid) добавляем:
PHP:
ini_setInteger(File, "BanTime",PlayerInfo[playerid][pBanTime]);
ini_setInteger(File, "BanData",PlayerInfo[playerid][pBanData]);
Теперь в команды /ban и /warn добавляем ниже где
PHP:
PlayerInfo[giveplayerid][pLocked] = 1;
пишем:
PHP:
PlayerInfo[giveplayerid][pBanTime] = curdate+days;
PlayerInfo[giveplayerid][pBanData] = curdate;
А выше где new в /ban и /warn пишем:
PHP:
new curdate = getdate();
new days = 7;
Поясняю: Где
PHP:
new days = 7;
видно что есть число 7 да? Это значит что автоматически игрока разбанит через 7 дней [Неделя].
Ищем это:
PHP:
if(PlayerInfo[playerid][pLocked] == 1)
{
	SendClientMessage(playerid, COLOR_LIGHTRED, "К сожалению, этот аккаунт заблокирован!");
	SendClientMessage(playerid, COLOR_WHITE, "Введите /q, чтобы выйти!");
	Kick(playerid);
}
И заменяем на это:
PHP:
new curdate = getdate();
if(PlayerInfo[playerid][pBanTime] > 0 && PlayerInfo[playerid][pBanTime] != curdate && PlayerInfo[playerid][pLocked] == 1)
{
    new ostalos=PlayerInfo[playerid][pBanTime]-curdate;
    format(string, sizeof(string), "{d95841}Этот аккаунт заблокирован\nРазбан через %d дней\n\nВведите ''/q'' чтобы выйти",ostalos);
    ShowPlayerDialog(playerid,78,0,"{c22000}Внимание",string,"Закрыть","");
    Kick(playerid);
    return 1;
}
if(PlayerInfo[playerid][pBanTime] > 0 && PlayerInfo[playerid][pBanTime] == curdate && PlayerInfo[playerid][pLocked] == 1)
{
           PlayerInfo[playerid][pLocked] = 0;
           PlayerInfo[playerid][pBanTime] = 0;
           PlayerInfo[playerid][pBanData] = 0;
}
Ищем команду /unban и заменяем на мою:
PHP:
	if(strcmp(cmd, "/unban", true) == 0)
	{
		if(PlayerInfo[playerid][pAdmin] >= 4)
		{
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /unban [name]");
			format(string, sizeof(string), "%s.ini", tmp);
			if(fexist(string))
			{
				format(string, sizeof(string), "%s.ini", tmp);
				new File = ini_openFile(string);
				ini_setInteger(File, "Ban",0);
				ini_setInteger(File, "BanTime",0);
				ini_setInteger(File, "BanData",0);
				ini_closeFile(File);
				GetPlayerName(playerid, sendername, sizeof(sendername));
				format(string, sizeof(string), "Администратор %s разбанил %s",sendername,tmp);
				ABroadCast(COLOR_LIGHTRED, string, 1);
			}
			else
			{
				SendClientMessage(playerid, COLOR_GREY, "Аккаунт не найден");
			}
		}
		return true;
	}
Автор: Maks5(Я)
Всем спасибо :) Не откажусь от +сиков :)
P.S. Работает точно уже проверял :) и не раз...Теперь аккаунты не слетают.
​
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу