PDA

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



DmitriyVasilev
07.04.2019, 16:19
Здрасте, вот открыл диалог со снятием игрока (он заранее выбран) нажимаю ок.
дальше в диалоге идёт само снятие
new niknames[MAX_PLAYER_NAME+1];
new fmt_str[4 + ( -2 + MAX_PLAYER_NAME ) + 1];
GetPVarString(playerid, "selectedadmin", niknames, 24);
format(fmt_str, sizeof(fmt_str), "%s 0", niknames);
callcmd::makeadmin(playerid,fmt_str);
SetTimerEx("AdmMenu" , 50, false, "i", playerid);
но почему то админа не снимает, оставляя ему тот же уровень который был у него и отправляю в консоль сервера ошибку sscanf warning: Strings without a length are deprecated, please add a destination size.
CMD:makeadmin(playerid, params[])
{
if(GetString(Name(playerid), NAME_DEVELOPER_ONE) || GetString(Name(playerid), NAME_DEVELOPER_TWO))
{
if(User[playerid][pAdmin] < 10 || dostup[playerid] == 0) return 1;
new name[MAX_PLAYER_NAME+1];
if(sscanf(params, "s[24]d", name, params[0])) return SCM(playerid, -1, !"Введите: /makeadmin [ник] [уровень модератора]");
if((params[0] > 5 || params[0] < 0) && User[playerid][pAdmin] < 10) return SCM(playerid, COLOR_GREY, !"Ошибка. От 0 до 5");
else if((params[0] > 10 || params[0] < 0) && User[playerid][pAdmin] > 9) return SCM(playerid, COLOR_GREY, !"Ошибка. От 0 до 10");

mysql_format(DATABASE, QUERY, 100, "SELECT `level` FROM `"TABLE_ADMIN"` WHERE `Name` = '%s'", name);
mysql_query(DATABASE, QUERY);
new r = cache_num_rows();
if(r)//cache_num_rows(r))
{
new levels = cache_get_field_content_int(0,"level");
if(levels > User[playerid][pAdmin]) return SCM(playerid, COLOR_GREY, !"Вы не можете понизить этого администратора!");
}
new fmt_str[45 + ( -2 + MAX_PLAYER_NAME + 1 ) + ( -2 + 2 ) + 1];
format(fmt_str,sizeof(fmt_str),"Вы установили %s %d уровень администрирования",name,params[0]);
SendClientMessage(playerid,0x6495EDFF,fmt_str);
mysql_format(DATABASE,QUERY, 128, "SELECT * FROM "TABLE_ADMIN" WHERE `Name` = '%s'", name);
mysql_function_query(DATABASE,QUERY,true,"OnMySQL_QUERY","iis",17,params[0],name);
mysql_format(DATABASE,QUERY, 128, "SELECT * FROM "TABLE_ACCOUNTS" WHERE `Name` = '%s'", name);
mysql_function_query(DATABASE,QUERY,true,"OnMySQL_QUERY","iis",17,params[0],name);
return true;
}
return 1;
}