PDA

Просмотр полной версии : [Вопрос] Система бана по дням



Dima_Tushin
10.12.2014, 21:25
Всем привет нашел тут нормальную блокировку аккаунта но осталось сделать разбан автоматически не поможете?!


if(strcmp(cmd, "/ban", true) == 0)
{
cmd = strtok(cmdtext, idx);
if(!strlen(cmd)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /ban [id] [причина]");
giveplayerid = ReturnUser(cmd);
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, ""ERRORPlayerid"");
if(giveplayerid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_WHITE, ""ERRORPlayerid"");
if(PlayerInfo[giveplayerid][pAdmin] >= 1) return SendClientMessage(playerid, COLOR_WHITE, "[Ошибка]: Администратор не может быть забанен!");
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, COLOR_WHITE, "Введите: /ban [id] [причина]");
format(okroz, sizeof(okroz), "Администратор %s: забанил: %s. Причина: %s", Name(playerid), Name(giveplayerid), result);
SendClientMessageToAll(COLOR_LIGHTRED, okroz);
Bann(giveplayerid, Name(giveplayerid), result);
return 1;
}


stock Bann(playerid, adminnickname[], reason[])
{
new BanIP[32], day, mounth, year, hour, minute;
getdate(year, mounth, day);
gettime(hour, minute);
GetPlayerIp(playerid, BanIP, sizeof BanIP);
format(MYSQLS, sizeof MYSQLS, "INSERT INTO `bans` (`nick`, `ip`, `date`, `reason`, `adminnickname`) VALUES ('%s', '%s', '%d.%d.%d, %d:%d', '%s', '%s')", Name(playerid), BanIP, day, mounth, year, hour, minute, reason, adminnickname);
mysql_query(MYSQL, MYSQLS);
new str[90];
format(str, sizeof str, "You are banned. Your IP is: %s", BanIP);
SendClientMessage(playerid, -1, str);
SetTimerEx("Kicks", 1000, false, "d", playerid);
return 1;
}

Dima_Tushin
11.12.2014, 14:38
UP4ik хотелось бы сделать авторазбан через 30 дней

Shayba
11.12.2014, 17:17
А разве авторазбан не происходит и так,обычно сколько дал дней бани,потом автоматом разбанивается персонаж.

Dima_Tushin
11.12.2014, 17:31
у меня система если дал бан то все он будит всегда) если сам не разбанишь а так хотелось бы сделать авторазбан или просто помогите с перемененной которая будит выдавать бан на +30 дней например Дата бана у нас 1.11.14 Бан будит до 1.12.14

Mazzilla
12.12.2014, 12:18
В `date` записывай gettime()+2592000 во время бана (текущее время + количество секунд в одном месяце (google)). В автоматический рестарт (если имеется), либо в ежечасовом таймере, как хочешь, делаешь запрос к базе:
format(string , sizeof string, "DELETE FROM `bans` WHERE `date` <= %d", gettime());
Таким образом, у тебя будут ежедневно разбаниваться несколько аккаунтов. Минус такой системы только в том, что приходится ждать рестарта, либо определенного времени, чтобы разбаниться.

Dima_Tushin
13.12.2014, 11:44
Если честно я не понял что ты сделал) лучше варианта нету? кто нибудь еще предложение прокомментируйте