После перезахода на сервер бан слетает, что делать?
Код:
CMD:ban(playerid,params[])
{
if(PlayerInfo[playerid][pAdmin] < 3) return SendClientMessage(playerid, 0xAFAFAFAA, "Данной команды нет на сервере");
if(sscanf(params,"dds[24]",params[0],params[1],params[2])) return SendClientMessage(playerid, 0xAFAFAFAA, "Используйте: /ban [id игрока] [Число дней] [Причина]");
if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, 0xAFAFAFAA, "Введеный вами ID не найден на сервере");
if(params[1] < 5 || params[1] > 15) return SendClientMessage(playerid, 0xAFAFAFAA, "От 5 до 15 дней!");
if(strlen(params[2]) < 2 || strlen(params[2]) > 24) return SendClientMessage(playerid, 0xAFAFAFAA, "Точно и кратко сформулируйте причину от 2 до 24 символов");
if(PlayerInfo[playerid][pAdmin] < PlayerInfo[params[0]][pAdmin]) return 1;
if(GetPVarInt(playerid,"CheckBan") < 3)
{
new playerName[50];
GetPVarString(playerid, "BanRes", playerName, sizeof(playerName));
if(!strcmp(playerName, params[2], true)) SetPVarInt(playerid,"CheckBan",GetPVarInt(playerid,"CheckBan")+1);
else DeletePVar(playerid,"BanRes"),DeletePVar(playerid,"CheckBan");
}
else
{
SetPVarInt(playerid, "kick__timer",GetTickCount()+100);
PlayerInfo[playerid][pAdmin] = 0;
static const fmt_string[] = "[A] %s снят системой [Анти-Перебан]";
new str[sizeof(fmt_string)+MAX_PLAYER_NAME];
format(str, sizeof(str), fmt_string,PlayerInfo[playerid][pSendername]);
SendAdminMessage(0xAFAFAFAA,str);
return true;
}
new ip[16], data[32];
static const fmt_string[] = "Администратор %s забанил %s на %d дней. Причина: %s";
new string[sizeof(fmt_string)+MAX_PLAYER_NAME-2+MAX_PLAYER_NAME-2+2-2+24-2];
format(string, sizeof(string), fmt_string, PlayerInfo[playerid][pSendername],PlayerInfo[params[0]][pSendername],params[1],params[2]);
SendClientMessageToAll(0xFF6347AA, string);
SetPVarInt(params[0], "kick__timer",GetTickCount()+100);
new years, months, days;
getdate(years, months, days);
new unbandate = gettime() + params[1]*86400;
format(data, 32, "%02d.%02d.%04d", days, months, years);
format(query, sizeof(query), "INSERT INTO bans (name, whobanned, ip, bandate, time, unbantime, reason) VALUES ('%s', '%s','%s', '%s', %d, %d, '%s')", PlayerInfo[params[0]][pSendername], PlayerInfo[playerid][pSendername], ip, data, params[1], unbandate, params[2]);
mysql_query(query);
return 1;
}
Код:
stock CheckBanList(playerid)
{
new vas[32], unbandate, ban, ip[24];
GetPlayerIp(playerid, ip, 20);
format(query, 128, "SELECT * FROM bans WHERE name = '%s'", PlayerInfo[playerid][pSendername]);
mysql_query(query);
mysql_store_result();
if(mysql_fetch_row(query))
{
mysql_get_field("unbandate", vas);
unbandate = strval(vas);
if(unbandate - gettime() > 0) ban = 1;
}
if(ban == 0)
{
format(query, 128, "SELECT * FROM bans WHERE ip = '%s'", ip);
mysql_query(query);
mysql_store_result();
if(mysql_fetch_row(query))
{
mysql_get_field("unbandate", vas); unbandate = strval(vas);
if(unbandate - gettime() > 0) ban = 1;
}
}
if(ban == 1)
{
convert((unbandate-gettime())*1000,UBMin,UBSec,UBMSec);
UBHour = UBMin/60;
UBMin = UBMin%60;
UBDay = UBHour/24;
UBHour = UBHour%24;
format(totalstring, 128, "{bda400} Ваш аккаунт заблокирован\n\nДата разблокировки через: %d дней",UBDay+1);
ShowPlayerDialog(playerid, D_NULL, DIALOG_STYLE_MSGBOX, "{0ec200}Аккаунт заблокирован", totalstring, "/q", "");
Kick(playerid);
}
mysql_free_result();
}
Последнее редактирование модератором: