Доступ к архиву

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

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

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

BanList[Mysql R5]

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

Danik.

Новичок
Этот BanList делал для своего мода, возился с ним не долго. Т.к. сейчас большенство модом на mysql, им бы не помешал BanList для сервера. Управление BanList'ом идёт через одну команду.

Ко всем new:

PHP:
new BanListPlayer[MAX_PLAYERS][60];
Дальше в public OnDialogResponse:

PHP:
if(dialogid == 53)
{
if(!response) return 1;
new dialog[500], name[50], ip[50], bandate[50], unban, Admin[50],
time, unbandate, reason[100], result[255], str[512];
format(str, sizeof(str), "SELECT * FROM `banlist` WHERE Player = '%s'", inputtext);
if(mysql_query(str) and mysql_store_result())
{
if(mysql_fetch_row_format(result))
{
mysql_fetch_field_row(name, "Player");
mysql_fetch_field_row(ip, "IP");
mysql_fetch_field_row(bandate, "Date");
mysql_fetch_field_row(result, "Days"); time = strval(result);
mysql_fetch_field_row(result, "Unban"); unban = strval(result);
mysql_fetch_field_row(reason, "Reason");
mysql_fetch_field_row(Admin, "Admin");
unbandate = unban - getdate();
strmid(BanListPlayer[playerid], inputtext, 0, 64, 64);

format(str, sizeof(str), "{FFFF00}Ник: {FFFFFF}%s. {FFFF00}IP: {FFFFFF}%s\n", name, ip);
strcat(dialog, str);
format(str, sizeof(str), "{FFFF00}Дата бана: {FFFFFF}%s\n", bandate);
strcat(dialog, str);
format(str, sizeof(str), "{FFFF00}Срок: {FFFFFF}%d {FFFF00}Разбан: {FFFFFF}%d\n", time, unbandate);
strcat(dialog, str);
format(str, sizeof(str), "{FFFF00}Причина: {FFFFFF}%s", reason);
strcat(dialog, str);
format(str, sizeof(str), " {FFFF00}Забанен: {FFFFFF}%s'ом", Admin);
strcat(dialog, str);
ShowPlayerDialogEx(playerid, 54, DIALOG_STYLE_MSGBOX, "БанЛист", dialog, "Разбанить", "Закрыть");
}
}
mysql_free_result();
return 1;
}
if(dialogid == 54)
{
if(!response) return 1;
new str[MAX_STRING];
new y,m,d, unband[16], time[16], Hour, Min, Sec;
format(mysql_string, sizeof(mysql_string), "UPDATE `banlist` SET `Days`='0' WHERE `Player` = '%s'",BanListPlayer[playerid]);
mysql_query(mysql_string);
giveplayerid = MAX_PLAYERS-2;
OnPlayerLoadParameters(giveplayerid, BanListPlayer[playerid]);
format(str, sizeof(str), "SELECT * FROM `banlist` WHERE `Player` = '%s'", BanListPlayer[playerid]);
if(mysql_query(str) and mysql_store_result())
{
if(PlayerInfo[giveplayerid][pLevel] == -999)
{
PlayerInfo[giveplayerid][pLevel] = PlayerInfo[giveplayerid][pAdmin];
PlayerInfo[giveplayerid][pAdmin] = 0;
PlayerInfo[giveplayerid][pWarns] = 0;
OnPlayerSaveParameters(giveplayerid, BanListPlayer[playerid]);
}
}
gettime(Hour, Min, Sec);
getdate(y,m,d);
format(unband, 16, "%02d.%02d.%04d", d, m, y);
format(time, 16, "%02d:%02d:%02d", Hour, Min, Sec);
format(mysql_string, sizeof(mysql_string), "INSERT INTO `unbanlist`(`Player`, `Date`, `Time`, `Admin`, `Reason`) VALUES('%s', '%s', '%s', '%s', 'BanList')",BanListPlayer[playerid], unband, time, PlayerName(playerid));
mysql_query(mysql_string);
format(mysql_string, sizeof(mysql_string), "DELETE FROM `banlist` WHERE `Player`='%s'",BanListPlayer[playerid]);
mysql_query(mysql_string);
format(str, sizeof(str), "{00FF00}Вы успешно разбанили {FFFFFF}%s", BanListPlayer[playerid]);
SendClientMessage(playerid, 0xFF0000AA, str);
return 1;
}
Теперь нужно добавить две команды, в public OnPlayerCommandText:

Это команда для разбана:

PHP:
if(strcmp(cmd, "/unban", true) == 0)
{
if(IsPlayerConnected(playerid)) {
if(PlayerInfo[playerid][pAdmin] != 9 and PlayerInfo[playerid][pAdmin] != 7 and PlayerInfo[playerid][pAdmin] != 10) return SendClientMessage(playerid, COLOR_GREY, "Вы не уполномочены использовать эту команду !");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAYWHITE, "{00ffff}Используй:{FFFFFF} /unban [pPlayerName] [reason]");
format(mysql_string, sizeof(mysql_string), "SELECT * FROM `players` WHERE Name = '%s' LIMIT 1", tmp);
mysql_query(mysql_string);
mysql_store_result();
new rows = mysql_num_rows();
mysql_free_result();
new str[256];
if(rows == 1) {
giveplayerid = ReturnUser(tmp);
giveplayerid = MAX_PLAYERS-2;
OnPlayerLoadParameters(giveplayerid, tmp);
format(str, sizeof(str), "SELECT * FROM `banlist` WHERE Player = '%s'", tmp);
if(mysql_query(str) and mysql_store_result()) {
if(PlayerInfo[giveplayerid][pLevel] == -999) {
if(!mysql_num_rows()) return SendClientMessage(playerid, COLOR_RED, "СЕРВЕР: {FFFFFF}Данного игрока нет в банлисте!");
PlayerInfo[giveplayerid][pLevel] = PlayerInfo[giveplayerid][pAdmin];
PlayerInfo[giveplayerid][pAdmin] = 0;
PlayerInfo[giveplayerid][pWarns] = 0;
OnPlayerSaveParameters(giveplayerid, tmp);
gMessage = strrest(cmdtext,idx);
format(string, sizeof(string), "[Сервер]: %s был разбанен %s, причина: %s", tmp, PlayerName(playerid), gMessage);
Logs(BAN,string);
new y,m,d, unban[16], time[16], Hour, Min, Sec;
gettime(Hour, Min, Sec);
getdate(y,m,d);
format(unban, 16, "%02d.%02d.%04d", d, m, y);
format(time, 16, "%02d:%02d:%02d", Hour, Min, Sec);
format(mysql_string, sizeof(mysql_string), "INSERT INTO `unbanlist`(`Player`, `Date`, `Time`, `Admin`, `Reason`) VALUES('%s', '%s', '%s', '%s', '%s')", tmp, unban, time, PlayerName(playerid), gMessage);
mysql_query(mysql_string);
format(str, sizeof(str), "%s был успешно разбанен!", tmp);
SendClientMessage(playerid, 0xFF0000AA, str);
new lH, lM, lS; gettime(lH,lM,lS);
format(mysql_string, sizeof(mysql_string), "DELETE FROM `banlist` WHERE `Player`='%s'",BanListPlayer[playerid]);
mysql_query(mysql_string);
format(string, sizeof(string), "[%d:%02d:%02d] %s", lH,lM,lS, string);
if(PlayerInfo[playerid][pAdmin] != 10) SendClientMessageToAll(COLOR_RED, string);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Указанный игрок не забанен !");
return 1;
}
}
else SendClientMessage(playerid, COLOR_GREY, "Это имя не зарегистрировано или указано не верно !");
}
return 1;
}
Это команда для просмотра BanList'a:

PHP:
if(strcmp(cmd, "/banlist", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] != 7 and PlayerInfo[playerid][pAdmin] != 9)
{
SendClientMessage(playerid, COLOR_GRAD1, " Вы не уполномочены использовать эту команду!");
return 1;
}
new banlist[1000];
new Player[21], line[30];
mysql_query("SELECT `Player` FROM `banlist` WHERE `Days`>'0'");
if(mysql_store_result())
{
for(new i; i {
if(mysql_fetch_row_format(Player))
{
format(line, sizeof(line), "%s\n", Player);
strcat(banlist, line);
}
}
ShowPlayerDialogEx(playerid, 53, DIALOG_STYLE_LIST, "Show {ff9900}BanList", banlist, "Инфо", "Закрыть");
}
mysql_free_result();
return 1;
}
Теперь для нормальной работы вам прийдётся работать самому.
Будет две Функции ToBanList && ToUnbanList:
PHP:
stock ToBanList(playerid, giveplayerid, days, reason[])
{
new string[MAX_STRING], playername[MAX_PLAYERS], Admin;
new day, month, year, ban[16], time[16];
new ip[50];
if(playerid > -1) { strmid(playername, PlayerName(playerid), 0, strlen(PlayerName(playerid)), 255); Admin = PlayerInfo[playerid][pAdmin]; }
else { strmid(playername, "Сервер", 0, strlen("Сервер"), 255);
Admin = 9;}
getdate(day, month, year);
new Hour, Min, Sec;
gettime(Hour, Min, Sec);
getdate(year, month, day);
new y,d,m; getdate(y,m,d);
format(time, 16, "%02d:%02d:%02d", Hour, Min, Sec);
format(ban, 16, "%02d.%02d.%04d", day, month, year);
GetPlayerIp(giveplayerid, ip, 32);
giveplayerid = MAX_PLAYERS-2;
format(mysql_string, sizeof(mysql_string), "INSERT INTO `banlist`(`Player`, `AdminLevel`, `Level`, `IP`, `Date`, `Time`, `Admin`, `Reason`, `Days`, `Unban`) VALUES('%s', '%d', '%d', '%s', '%s', '%s', '%s', '%s', '%d', '%d')", PlayerName(giveplayerid), Admin, PlayerInfo[giveplayerid][pLevel], ip, ban, time, playername, reason, days, PlayerInfo[giveplayerid][pWarns]); mysql_query(mysql_string);
PlayerInfo[giveplayerid][pAdmin] = PlayerInfo[giveplayerid][pLevel], PlayerInfo[giveplayerid][pLevel] = -999, PlayerInfo[giveplayerid][pWarns] = getdate() + days;
OnPlayerSaveParameters(giveplayerid, PlayerName(giveplayerid));
new lH, lM, lS; gettime(lH,lM,lS);
format(string, sizeof(string), "[СЕРВЕР]: {FFFFFF}%s {FF0000}был забанен {FFFFFF}%s'ом {FF0000}на %d дней(я), причина: {FFFFFF}%s", PlayerName(giveplayerid), playername, days, reason);
Logs(BAN,string);
Banlist(string);
format(string, sizeof(string), "[%d:%02d:%02d] %s", lH,lM,lS, string); SendClientMessageToAll(COLOR_RED, string);
KickEx(giveplayerid);
return 1;
}


stock ToUnbanList(playerid, name[], reason[])
{
new string[MAX_STRING], giveplayerid, str[512];
giveplayerid = ReturnUser(name);
format(str, sizeof(str), "SELECT * FROM `banlist` WHERE Player = '%s'", name);
if(mysql_query(str) and mysql_store_result())
{
giveplayerid = MAX_PLAYERS-2;
OnPlayerLoadParameters(giveplayerid, name);
if(PlayerInfo[giveplayerid][pLevel] == -999)
{
PlayerInfo[giveplayerid][pLevel] = PlayerInfo[giveplayerid][pAdmin];
PlayerInfo[giveplayerid][pAdmin] = 0;
PlayerInfo[giveplayerid][pWarns] = 0;
OnPlayerSaveParameters(giveplayerid, name);
}
if(!mysql_num_rows()) return SendClientMessage(playerid, COLOR_RED, "СЕРВЕР: {FFFFFF}Данного игрока нет в банлисте!");
format(string, sizeof(string), "[Сервер]: %s был разбанен %s, причина: %s", name, PlayerName(playerid), reason);
Logs(BAN,string);
new y,m,d, unban[16], time[16], Hour, Min, Sec;
gettime(Hour, Min, Sec);
getdate(y,m,d);
format(unban, 16, "%02d.%02d.%04d", d, m, y);
format(time, 16, "%02d:%02d:%02d", Hour, Min, Sec);
format(mysql_string, sizeof(mysql_string), "INSERT INTO `unbanlist`(`Player`, `Date`, `Time`, `Admin`, `Reason`) VALUES('%s', '%s', '%s', '%s', '%s')", name, unban, time, PlayerName(playerid), reason); mysql_query(mysql_string);
format(str, sizeof(str), "%s был успешно разбанен!", name); SendClientMessage(playerid, 0xFF0000AA, str);
new lH, lM, lS; gettime(lH,lM,lS);
format(mysql_string, sizeof(mysql_string), "DELETE FROM `banlist` WHERE `Player`='%s'",name); mysql_query(mysql_string);
format(string, sizeof(string), "[%d:%02d:%02d] %s", lH,lM,lS, string);
if(PlayerInfo[playerid][pAdmin] != 9) SendClientMessageToAll(COLOR_RED, string);
}
return 1;
}



ToUnbanList(playerid, name[], reason[])
playerid - ИД игрока который использует UnBan.
name - NickName игрока которого разбанивают.
reason - причина разбана.

ToBanList(playerid, giveplayerid, days, reason[])
playerid - ИД игрока который использует Ban(-1 это СЕРВЕР).
giveplayerid - Ид игрока которого банят.
days - кол-во дней бана игрока.
reason - причина бана.

Далее две таблицы unbanlist && banlsit:

Пароль sa-mp.by


Автор: Danik
Oфф. ссылка:
При копировании материала ссылка на сайт sa-mp.by обязательна.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу