Q:1. 1) Смотрите, надо в /makeadmin чтобы выдавало максимальный уровень. Который я поставлю, если этого не будет, в бд можно будет поставить хоть 1.000.000 уровень, а надо чтоб поставить в команду и тот лвл был максимум. 2) И второе, чтобы чекал в оффе последний лвл который был перед установкой другого. Это вот это строка. Также, когда пытался вводить максимум лвл через if, выходила ошибка 033.
A:1. 1) Создать столбец в таблице, при инициализации игрока загружать его, если будут много подобных действий, то лучше отдельную таблицу. 2) запросом в базу, ну а если инициализируешь игрока после окончания регистрации/авторизации, то присвоить в переменную текущий уровень админки игрока.
Q:2. 1) Так правильно же, у тебя цикла с перебором игроков в радиусе-то нет.
Если ты не прочитал то, что я написал выше, то вот:
PHP код:
CMD:makeadminoff(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] < 7)
return 0xFFFF;
if(ADuty[playerid] != 228)
return SendClientMessage(playerid, COLOR_GREY, NO_DUTY_TEXT);
extract params -> new string: to_player_name[24 + 1], desire_admin_lvl; else
return SendClientMessage(playerid, COLOR_GREY, "/makeadminoff [name] [lvl (0-99)]");
new to_player = GetNameID(to_player_name);
if(to_player != INVALID_PLAYER_ID)
return SendClientMessage(playerid, COLOR_RED, "[Îøèáêà]{FFFFFF} Èãðîê ñåé÷àñ íàõîäèòñÿ íà ñåðâåðå, èñïîëüçóéòå /makeadmin");
new fmt_str[] = "SELECT Admin WHERE NickName='%e'",
result_str[(((sizeof fmt_str) + ((- 2 + (MAX_PLAYER_NAME + 1))) + 1))];
mysql_format(result_str, sizeof result_str, fmt_str, to_player_name);
mysql_tquery(mysql, result_str);
new rows = cache_num_rows(),
to_player_admin_lvl = -1;
if(rows)
to_player_admin_lvl = cache_get_row_int(0, 0);
else
return 0;
new fmt_str_prototype[] = "UPDATE accounts SET Admin=%d WHERE NickName='%e'",
result_str_prototype[(((sizeof fmt_str_prototype) + ((- 2 + 2) + (- 2 + (MAX_PLAYER_NAME + 1))) + 1))];
mysql_format(mysql, result_str_prototype, sizeof result_str_prototype, fmt_str_prototype, desire_admin_lvl, to_player_name);
mysql_tquery(mysql, result_str_prototype);
new fmt_str_prototype_first[] = "[Èíôîðìàöèÿ] {FFFFFF}Âû óñïåøíî óñòàíîâèëè %d óðîâåíü àäì. èãðîêó %s",
result_str_prototype_first[(((sizeof fmt_str_prototype_first) + ((- 2 + 2) + (- 2 + (MAX_PLAYER_NAME + 1))) + 1))];
format(result_str_prototype_first, sizeof result_str_prototype_first, fmt_str_prototype_first, desire_admin_lvl, to_player_name);
SendClientMessage(playerid, COLOR_RED, result_str_prototype_first);
new fmt_str_prototype_second[] = "[MakeAdminOff] Администратор %s установил в оффлайне %d уровень адм. игроку %s. До этого был: %d ур.",
result_str_prototype_second[(((sizeof fmt_str_prototype_) + ((- 2 + (MAX_PLAYER_NAME + 1)) + (- 2 + 2) + (- 2 + (MAX_PLAYER_NAME + 1)) + (- 2 + 2)) + 1))];
format(result_str_prototype_second, sizeof result_str_prototype_second, fmt_str_prototype_second, Name(playerid), desire_admin_lvl, to_player_name, to_player_admin_lvl);
SendAdminsMessage(COLOR_OLDRED, result_str_prototype_second);
new fmt_str_prototype_three[] = "Àäìèíèñòðàòîð <a href=/logsaccount?name=%s>%s</a> ñíÿë ñ ïîñòà àäìèíèñòðàòîðà <a href=/logsaccount?name=%s>%s</a>.",
result_str_prototype_three[(((sizeof fmt_str_prototype_three) +((- 2 + (MAX_PLAYER_NAME + 1)) + (- 2 + (MAX_PLAYER_NAME + 1)) + (- 2 + (MAX_PLAYER_NAME + 1)) + (- 2 + (MAX_PLAYER_NAME + 1))) + 1))];
format(result_str_prototype_three, sizeof result_str_prototype_three, fmt_str_prototype_three, Name(playerid), Name(playerid), to_player_name, to_player_name);
AdminLogs(playerid, result_str_prototype_three);
return AllLogs(playerid, result_str_prototype_three);
}
2-ую писать не стал, просто циклом перебери всех игроков, которые в радиусе от игрока