EZLIX
Ученик
Всем привет, делал сис-му выдачи предупреждений администрации, всё вроде бы работает, но выдаётся всегда только 2(сразу). И команда /unawarn пишет, что нет предупреждений, но в БД они есть. Весь код ниже
Обе команды:
Подрузка при авторизации администратора:
Обе команды:
Код:
CMD:awarn(playerid, params[]) {
new text[130],string[415],giveplayerid;
if(PI[playerid][pAdmin] < 10 || dostup[playerid] == 0) return true;
if(sscanf(params, "us[128]",giveplayerid,text)) return SendEsp(playerid, "/awarn [playerid] [причина]");
// if(!GetString(player_name[giveplayerid],FD_1) && !GetString(player_name[giveplayerid],FD_2) && !GetString(player_name[giveplayerid],FD_3)) return 1;
if(GetPVarInt(playerid,"ban")>gettime()) {
ErrorMessage(playerid,"Можно раз в 10 секунд");
SetPVarInt(playerid,"bann",gettime()+3);
return false;
}
if(GetString(player_name[giveplayerid],FD_1) || GetString(player_name[giveplayerid],FD_2) || GetString(player_name[giveplayerid],FD_3)) {
format(string, sizeof(string),"[A] Администратор %s[%d] попытался выдать /awarn администратору %s[%d]. Сообщите главной администрации!",player_name[playerid],playerid,player_name[giveplayerid],giveplayerid);
SendAdminMessage(COLOR_RED, string);
return 1;
}
// if(PI[giveplayerid][pAdmin] < 1) return ErrorMessage(playerid, "Игрок не администратор");
if(giveplayerid == INVALID_PLAYER_ID) return ErrorMessage(playerid, not_id);
//if(giveplayerid == playerid) return ErrorMessage(playerid,"Вы указали свой ID");
if(IsAIP(text))return 1;
if(strlen(text) > 30) return ErrorMessage(playerid,"Не больше 30 символов");
// if(PI[playerid][pAdmin] < PI[giveplayerid][pAdmin]) return 1;
if(PI[giveplayerid][pAWarns]++ >= 2) {
format(string, sizeof(string), "[A] Администратор %s снял с должности администартора (3 предупреждения) %s Причина: %s", player_name[playerid],player_name[giveplayerid], text);
SendAdminMessage(COLOR_LIGHTRED, string);
PI[giveplayerid][pAdmin] = 0;
UpdatePlayerData(giveplayerid, "pAdmin", PI[giveplayerid][pAdmin]);
// WriteLog(LOG_BAN,player_name[playerid],player_name[giveplayerid],text);
Kick(giveplayerid);
}
else {
if(!GetPVarInt(giveplayerid,"AntiWarn")) {
new query[128];
PI[giveplayerid][pAWarns]++;
format(query, sizeof(query), "UPDATE `admin` SET `pAWarns`='%d' WHERE `Name` = '%s'",PI[giveplayerid][pAWarns],player_name[giveplayerid]);
mysql_tquery(connects, query);
Kick(giveplayerid);
}
format(string, sizeof(string), "[A] Администратор %s выдал админ-предупреждение администратору %s [%d|3]. Причина: %s", player_name[playerid], player_name[giveplayerid], PI[giveplayerid][pAWarns], text);
SendAdminMessage(COLOR_LIGHTRED, string);
// WriteLog(LOG_WARN,player_name[playerid],player_name[giveplayerid],text);
SetPVarInt(giveplayerid,"AntiWarn", true);
}
new str[MAX_PLAYER_NAME+1];
format(str,sizeof(str),"%s",player_name[giveplayerid]);
D(giveplayerid, DIALOG_NONE, DSM, str, string, "Закрыть", "");
return 1;
}
CMD:unawarn(playerid,params[]) {
if(PI[playerid][pAdmin] < 10 || dostup[playerid] == 0) return true;
new giveplayerid;
if(!GetString(player_name[giveplayerid],FD_1) && !GetString(player_name[giveplayerid],FD_2) && !GetString(player_name[giveplayerid],FD_3)) return 1;
if(sscanf(params, "d", giveplayerid)) return SendEsp(playerid, "/unwarn [playerid]");
if(!IsPlayerConnected(giveplayerid)) return ErrorMessage(playerid,not_id);
if(PI[giveplayerid][pAWarns] == 0) return ErrorMessage(playerid, "У администратора нет предупреждений");
new string[92];
format(string, sizeof(string), "[A] %s[%d] снял 1 предупреждение администратору %s[%d]", player_name[playerid], playerid, player_name[giveplayerid],giveplayerid);
AdmMSG(0xAFAFAFAA, string,1);
PI[giveplayerid][pAWarns]--;
format(string, sizeof(string), "UPDATE `admin` SET `pAWarns`='%d' WHERE `Name` = '%s'",player_name[giveplayerid],player_name[giveplayerid]);
mysql_tquery(connects, string);
format(string, sizeof(string), "Администратор %s[%d] снял 1 админ-предупреждение администратору %s[%d]", player_name[playerid], playerid, player_name[giveplayerid], giveplayerid);
AdmMSG(COLOR_LIGHTRED, string,1 );
return 1;
}
Код:
cache_get_value_name(0, "pAWarns",PI[playerid][pAWarns]);
