Huseyn
Компетентный
Всем привет, у меня такая проблема с offwarn и offban. При выдачи наказание с /offwarn ты выдаёшь предупреждение 3 раза потом автоматический, выдаётся бан на 7 дней, после бана все предупреждение аннулируется, потом ты можешь игрока ещё раз заварнить, а в /offban ты можешь банить игрока много раз, как исправить данную ошибку ? с меня +
1).
2).Offban
1).
PHP:
CMD:offwarn(playerid, params[])
{
if(PI[playerid][pAdmin] < 3) return 1;
else if(AdminLogged[playerid] == false) return SendClientMessage(playerid, COLOR_GREY, YouAreNotLoggedInAsAdmin);
new playername[MAX_PLAYER_NAME], reason[32];
if(sscanf(params, "s[24]s[24]", playername, reason)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /offwarn [ник игрока] [причина]");
else if(CheckExceptionName(playername)) return AttemptRemoveChiefAdmin(playerid);
else if(IsIpFound(reason) || CheckString(reason)) return AdminAntisliv(playerid, reason);
else if(GetPlayerID(playername) != INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_GREY, "Игрок в сети, используйте команду /warn");
format(query, sizeof(query), "SELECT * FROM "T_ACCOUNTS" WHERE `name`='%s'", playername);
mysql_tquery(dbHandle, query, "OnPlayerOffwarn", "iss", playerid, playername, reason);
return 1;
}
forward OnPlayerOffwarn(playerid, name[], reason[]);
public OnPlayerOffwarn(playerid, name[], reason[])
{
if(cache_get_row_count(dbHandle) > 0)
{
new string[144];
if(cache_get_row_int(0, 20, dbHandle) < 3)
{
format(string, sizeof(string), "Игрок %s получил оффлайн предупреждение от администратора %s. Причина: %s", name, GetName(playerid), reason);
format(query, sizeof(query), "UPDATE "T_ACCOUNTS" SET warn=warn+1,member=0,leader=0,templeader=0,rank=0,job=0,spawnchange=0 WHERE name='%s'", name);
mysql_tquery(dbHandle, query, "", "");
}
else
{
new data[15], unbandate;
format(string, sizeof(string), "Игрок %s получил оффлайн бан на 7 дней от администратора %s. Причина: %s", name, GetName(playerid), reason);
getdate(years, months, days);
unbandate = gettime() + 7*86400;
format(data, sizeof(data), "%02d.%02d.%04d", days, months, years);
format(query, sizeof(query), "INSERT INTO bans (name, whobanned, ip, bandate, time, unbandate, reason) VALUES ('%s', '%s', '%s', '%s', 7, %d, '%s')", name, GetName(playerid), cache_get_row_int(0, 3, dbHandle), data, unbandate, reason);
mysql_tquery(dbHandle, query, "", "");
format(query, sizeof(query), "UPDATE "T_ACCOUNTS" SET warn=0,member=0,leader=0,templeader=0,rank=0,job=0,spawnchange=0 WHERE name='%s'", name);
mysql_tquery(dbHandle, query, "", "");
}
SendClientMessageToAll(COLOR_RED, string);
SendLog("WarnLog", string);
}
else SendClientMessage(playerid, COLOR_GREY, "Игрок не найден!");
return 1;
}
PHP:
CMD:offban(playerid, params[])
{
if(PI[playerid][pAdmin] < 4) return 1;
else if(AdminLogged[playerid] == false) return SendClientMessage(playerid, COLOR_GREY, YouAreNotLoggedInAsAdmin);
new playername[MAX_PLAYER_NAME], countday, reason[32];
if(sscanf(params, "s[24]is[24]", playername, countday, reason)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /offban [ник игрока] [кол-во дней] [причина]");
else if(CheckExceptionName(playername)) return AttemptRemoveChiefAdmin(playerid);
else if(IsIpFound(reason) || CheckString(reason)) return AdminAntisliv(playerid, reason);
else if(GetPlayerID(playername) != INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_GREY, "Игрок в сети, используйте команду /ban");
else if(countday > 30 || countday < 1) return SendClientMessage(playerid, COLOR_GREY, "Количество дней от 1 до 30!");
format(query, sizeof(query), "SELECT * FROM "T_ACCOUNTS" WHERE `name`='%s'", playername);
mysql_tquery(dbHandle, query, "OnPlayerOffban", "isis", playerid, playername, countday, reason);
return 1;
}
forward OnPlayerOffban(playerid, name[], day, reason[]);
public OnPlayerOffban(playerid, name[], day, reason[])
{
if(cache_get_row_count(dbHandle) > 0)
{
new string[144];
format(string, sizeof(string), "Игрок %s получил оффлайн бан на %i дней от администратора %s. Причина: %s", name, day, GetName(playerid), reason);
SendClientMessageToAll(COLOR_RED, string);
SendLog("OffBan", string);
getdate(years, months, days);
new unbandate = gettime() + day*86400;
new data[15];
format(data, sizeof(data), "%02d.%02d.%04d", days, months, years);
format(query, sizeof(query), "INSERT INTO bans (name, whobanned, ip, bandate, time, unbandate, reason) VALUES ('%s', '%s', '%s', '%s', '%d', '%d', '%s')", name, GetName(playerid), cache_get_row_int(0, 3, dbHandle), data, day, unbandate, reason);
mysql_tquery(dbHandle, query, "", "");
format(query, sizeof(query), "UPDATE "T_ACCOUNTS" SET warn=0,member=0,leader=0,templeader=0,rank=0,job=0,spawnchange=0 WHERE name='%s'", name);
mysql_tquery(dbHandle, query, "", "");
}
else SendClientMessage(playerid, COLOR_GREY, "Игрок не найден!");
return 1;
}
