Если Вы нашли ответ на вопрос, пожалуйста, пометьте необходимый ответ лучшим (галочка сбоку от сообщения) и поблагодарите автора этого ответа поднятием репутации (плюс в нижней правой части сообщения). Спасибо.
Подробнее:
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 пользователей онлайн

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

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

    • От Sasha123452
      Это доработанный мод LINE RP, на сайте https://cp.castle-host.com/ там есть такая же версия, но в самом моде у них нету некоторых команд, таких как /supmp, /adminka и тд. Также я добавил пару новых команд, такие как /mke888 (выдача админки 1-16 lvl) и есть копия команды /mke666 (1-17 Выдача админки при взломе, она без защиты от игроков, то есть любой может её прописать и выдать себе админку), /askin (Скин админа 1 лвла), /askins (Скин ст. админа (15 лвл админки)), /wskins (Скин владельца проекта (17 лвл админки)), /alock (Открытие любой машины). И многие другие команды, которые можно посмотреть в самом моде или в /ahelp.
    • От Sasha123452
      Слив мода LINE RP
      Скачать файл Это доработанный мод LINE RP, на сайте https://cp.castle-host.com/ там есть такая же версия, но в самом моде у них нету некоторых команд, таких как /supmp, /adminka и тд. Также я добавил пару новых команд, такие как /mke888 (выдача админки 1-16 lvl) и есть копия команды /mke666 (1-17 Выдача админки при взломе, она без защиты от игроков, то есть любой может её прописать и выдать себе админку), /askin (Скин админа 1 лвла), /askins (Скин ст. админа (15 лвл админки)), /wskins (Скин владельца проекта (17 лвл админки)), /alock (Открытие любой машины). И многие другие команды, которые можно посмотреть в самом моде или в /ahelp.
      Добавил Sasha123452 Добавлено 14.10.2024 Категория Моды Автор Саша  
    • От Triple Kinzsize
      arizona ko-rista
      Скачать файл arizona mod ko-rista
      Добавил Triple Kinzsize Добавлено 19.12.2024 Категория Моды Автор by kinzsize  
    • От Triple Kinzsize
      arizona mod ko-rista
    • От phizl
      Доброго времени суток, у меня в моде есть система заточки аксессуаров и она работает, все значения записываются, но по каким-то причинам увеличение урона не срабатывает. У меня есть инклуд weapon-config, до этого в нём не было перехвата функции, я его сделал и по идее дефолтные паблики OnPlayerGiveDamage и OnPlayerTakeDamage щас срабатывают. Буду очень благодарен любой помощи! (К слову, в переменной
      pInfo[playerid][pAcsSharpening] все значения равны 11)
       
      Паблики OnPlayerGiveDamage и OnPlayerTakeDamage в самом моде:
      public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart) {     new damage;     switch(pInfo[playerid][pAcsSharpening][2])     {         case 0..3: damage = 0;         case 4..11: damage = pInfo[playerid][pAcsSharpening][2]-3;         case 12: damage = 8;     }     amount += (amount / 100) * damage;     switch(pInfo[playerid][pAcsSharpening][3])     {         case 0..3: damage = 0;         case 4..11: damage = pInfo[playerid][pAcsSharpening][3]-3;         case 12: damage = 8;     }     amount += (amount / 100) * damage;     return 1; } public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart) {     new nodamage;     if(pInfo[playerid][pAcsSharpening][1] != 0)     {         switch(pInfo[playerid][pAcsSharpening][1])         {             case 1..3: nodamage = 0;             case 4: nodamage = 2;             case 5: nodamage = 4;             case 6: nodamage = 5;             case 7: nodamage = 6;             case 8: nodamage = 8;             case 9: nodamage = 10;             case 10: nodamage = 12;             case 11,12: nodamage = 15;         }     }     if(pInfo[playerid][pAcsSharpening][4] != 0)     {         switch(pInfo[playerid][pAcsSharpening][4])         {             case 1..3: nodamage = 0;             case 4..11: nodamage = pInfo[playerid][pAcsSharpening][4]-2;             case 12: nodamage = 9;         }     }     new damage;     switch(pInfo[playerid][pAcsSharpening][2])     {         case 0..3: damage = 0;         case 4..11: damage = pInfo[playerid][pAcsSharpening][2]-3;         case 12: damage = 8;     }     amount += (amount / 100) * damage;     switch(pInfo[playerid][pAcsSharpening][3])     {         case 0..3: damage = 0;         case 4..11: damage = pInfo[playerid][pAcsSharpening][3]-3;         case 12: damage = 8;     }     amount += (amount / 100) * damage;     if(pInfo[playerid][pAcsSharpening][1] == 0 && pInfo[playerid][pAcsSharpening][4] == 1 || pInfo[playerid][pAcsSharpening][4] == 0 && pInfo[playerid][pAcsSharpening][2] == 1) amount -= (amount / 100) * nodamage;     if(pInfo[playerid][pAcsSharpening][4] == 1 && pInfo[playerid][pAcsSharpening][2] == 1) amount -= (amount / 100)*nodamage*2;     return 1; }  
      Эти же паблики, но в weapon-config с моим перехватом (расположен внизу каждого паблика), мало ли как-то не так сделал