Если Вы нашли ответ на вопрос, пожалуйста, пометьте необходимый ответ лучшим (галочка сбоку от сообщения) и поблагодарите автора этого ответа поднятием репутации (плюс в нижней правой части сообщения). Спасибо.
Подробнее:
FAQ по форуму
Как пометить ответ лучшим

Вопросы

Помогите сделать выдачу админ прав через диалоги, а именно что бы не ID надо было ввести а ник

Если надо команда по выдачи админ прав:

Спойлер

CMD:setadmin(playerid, params[])
{
	if(GetString(GetName(playerid), NGA1) || GetString(GetName(playerid), NGA2) || GetString(GetName(playerid), NGA3))
    {
    if(PI[playerid][pAdmin] < 7) return SendClientMessage(playerid, -1, "Вы не Разроботчик/Заместитель сервера!");
    {
      	new string[256];
        if(AdminLogged[playerid] == false) return SCM(playerid, COLOR_GREY, YouAreNotLoggedInAsAdmin);
        new playername[24], admin_level;
        if(sscanf(params, "s[24]i", playername, admin_level)) return SCM(playerid, COLOR_WHITE, "• {66CC00}[ Подсказка ] {ffffff}Введите: /setadmin [ник игрока] [уровень админа]");
        if(admin_level != 0 && PI[playerid][pAdmin] < 8) return SendClientMessage(playerid, -1, "Вы не можете назначать новых администраторов, вы можете только снимать их. Для этого используйте: /setadmin Nick_Name 0");
        if(strfind(params[0], "_", true) == -1) return SCM(playerid,COLOR_RED,"Вписывать необходимо НИК игрока, а не ID. Повторите попытку..");
        format(string, sizeof(string), "SELECT * FROM "T_ADMIN" WHERE `name` = '%s'", playername);
        mysql_tquery(dbHandle, string, "SetAdmin", "isi", playerid, playername, admin_level);
    }
  }
    return 1;
}
ALTX:setadmin("/admin","/makeadmin");

 

 

Поделиться сообщением


Ссылка на сообщение

9 ответов на этот вопрос

  • 0

@Daniil Roslyakov ну вот вместо основного кода сделайте отправку диалога, а весь основной код перенести в действие диалога с правкой строки sscanf. Получится так: 

if(sscanf(inputtext, "p<,>s[24]i", ...) return ...

там где точки будет также, как и в самой команде. 

Поделиться сообщением


Ссылка на сообщение
  • 0

@DEST А как сделать что бы тут надо была ник, а не ID? (Что писать за место playerid?)
 

ShowPlayerDialog(playerid, 1056, DIALOG_STYLE_INPUT, "Выдача наказания", "Введите ID игрока", "Далее", "Выйти");

 

Поделиться сообщением


Ссылка на сообщение
  • 0

@Daniil Roslyakov диалог вывести вам надо вот так: 

ShowPlayerDialog(playerid, ID-dialog, DIALOG_STYLE_INPUT, "Выдача админ-прав", "Введите в окошко ник и через запятую уровень администратора", "Ввод", "Отмена");

И диалог будет оформлен следующим образом: 

case ID-dialog: 
{
	if(!response) return true; 
	//основной код из команды с замененной строкой sscanf
	return true; 
}

 

Поделиться сообщением


Ссылка на сообщение
  • 0

@DEST Я хочу что бы выдавал диалог и там идет к примеру:
- Снять администратора
- Админ
тыры, тыры...

Отредактировано пользователем Daniil Roslyakov

Поделиться сообщением


Ссылка на сообщение
  • 0

@Daniil Roslyakov ну значит так и сделайте. Скелет самого сложного я вам дал. 

Поделиться сообщением


Ссылка на сообщение
  • 0

@DEST только не понятно, как сделать на ник?
 

Спойлер

		case 1056:
		{
			if(!response) return true;
			if(!strval(inputtext)) return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Ошибка", "Вы не ввели ID", "Окей", "");
			id[playerid] = strval(inputtext);
			if(!IsPlayerConnected(id)) return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Ошибка", "Такого игрока не существует!", "Окей", "");
			ShowPlayerDialog(playerid, 1057, DIALOG_STYLE_LIST, "Выберите выдать/снять", "- Снять с поста администратора\n- Назначить на 'Мл.Модератор'\n- Назначить на 'Модератор'\n- Назначить на 'Ст.Модератор'\n- Назначить на 'Мл.Администратор'\n- Назначить на 'Администратор'\n- Назначить на 'Ст.Администратор'\n- Назначить на 'Заместитель сервера'", "Продолжить", "Отмена");
			return true;
		}

 

 

Поделиться сообщением


Ссылка на сообщение
  • 0
Спойлер


		case 1056:
		{
			if(!response) return true;
			if(!strler(inputtext)) return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Ошибка", "Вы не ввели nick", "Окей", "");
			SetPVarString(playerid, "name", inputtext); 
			if(!IsPlayerConnected(id)) return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Ошибка", "Такого игрока не существует!", "Окей", "");
			ShowPlayerDialog(playerid, 1057, DIALOG_STYLE_LIST, "Выберите выдать/снять", "- Снять с поста администратора\n- Назначить на 'Мл.Модератор'\n- Назначить на 'Модератор'\n- Назначить на 'Ст.Модератор'\n- Назначить на 'Мл.Администратор'\n- Назначить на 'Администратор'\n- Назначить на 'Ст.Администратор'\n- Назначить на 'Заместитель сервера'", "Продолжить", "Отмена");
			return true;
		}

 

И в самом 1057 диалоге вместо id[playerid] нужно использовать аргумент из PVar'a. В начало 1057 диалога: 
 

new name[24]; 
GetPVarString(playerid, "name", name, sizeof(name)); 

И вместо id[playerid] уже использовать name. 

Поделиться сообщением


Ссылка на сообщение
  • 0

@DEST Как это решить?
 

Спойлер

		case 1056:
		{
			if(!response) return true;
			if(!strler(inputtext)) return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Ошибка", "Введите ник игрока!", "Окей", "");
			SetPVarString(playerid, "name", inputtext);
			if(!IsPlayerConnected(id)) return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Ошибка", "Такого игрока не существует!", "Окей", "");
			ShowPlayerDialog(playerid, 1057, DIALOG_STYLE_LIST, "Выберите выдать/снять", "- Снять с поста администратора\n- Назначить на 'Мл.Модератор'\n- Назначить на 'Модератор'\n- Назначить на 'Ст.Модератор'\n- Назначить на 'Мл.Администратор'\n- Назначить на 'Администратор'\n- Назначить на 'Ст.Администратор'\n- Назначить на 'Заместитель сервера'", "Продолжить", "Отмена");
			return true;
		}

 

Спойлер

J:åðâåð TimePlay RolePlayîä ñåðâåðà\gamemodes\timeplay.pwn(9747) : error 017: undefined symbol "strler"
J:åðâåð TimePlay RolePlayîä ñåðâåðà\gamemodes\timeplay.pwn(9749) : error 017: undefined symbol "id"
Pawn compiler 3.10.20150531     Copyright (c) 1997-2006, ITB CompuPhase


2 Errors.

 

 

Поделиться сообщением


Ссылка на сообщение
  • 0

@Daniil Roslyakov strler заменить на strlen , опечатался. 

Строку 9749 удалить. 

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Talex
      От Talex
      Всем привет, сливаю первый мод!
      Информация о моде:

      — Основа Gamenix.
      — Мод переведен на Mysql R39, теперь ни каких слётов нет, мод работает стабильно с онлайном 160+.
      — Новый автосалон на TextDraw.
      — Система 3-х автомобилей (1 можно купить по дефолту, 2 и 3 за донат).
      — Автомобили у игроков теперь не пропадают (Id'ы авто сбивались, с номерами теперь тоже всё в порядке).
      — Оформление сервера полностью переработано, теперь оно более красивое.
      — Защита от копирования карты.
      — в меню сервера добавлен пункт визуальных настроек.
      — Номера на транспорт теперь можно приобрести в /donate.
      — Сделан новый красивый спидометр.
      — При получении номера, добавлен выбор региона.
      — Сделана система радаров и промокодов, создание прямо из игры.
      — Новый интерьер казино.
      — Магазин скинов теперь на TextDraw.
      — Автошкола полностью функционирует.
      — Добавлена информация после коннекта о последнем входе в собственный аккаунт.
      — Приватная защита от всех видов DDoS атак и DoS атак.                                                                                                                                    
      — пароль от АП (/alog) теперь у каждого администратора индивидуальный.
      — Изменено оформление самого мода
      Это не все изменения мода, их ещё очень много. все не упомнишь. 
      Автор мода: Неизвестен
      CUNBERS RP 8.4.3.rar