Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

/frakcontrol

Статус
В этой теме нельзя размещать новые ответы.

MrJunior

Компетентный

Здравствуйте пользователи и гости портала pawno-info.ru ! Сегодня я уже взялся выложить команду /frakcontrol. Сама команда создана для Президента или Мэра. Я хотел выложить зразу полную команду /control . Но Решил делать её по частям. Вся команда на диалогах поэтому зразу говорю что в паблике OnDialogResponse я пользуюсь switch(dialogid)
И диалоги будут в виде case. Также тут есть команда /ok . Команда для принятия для игрока которого принимают через данную команду. И ещё. Всё примечание о команде(а их там есть) будут после кодов.
Приступаем!

Сперва мы создадим нужные переменные:
PHP:
new frakid, frakstring[256], frakfrakid, frakinvite[MAX_PLAYERS];
Вот код обоих команд. Перевести их будет не трудно просто сменить шапку команды. Надеюсь справится любой.
PHP:
	else if(strcmp(cmd, "/frakcontrol", true) == 0)
	{
	    if(PlayerInfo[playerid][pLeader] == 1)
	    {
	        ShowPlayerDialog(playerid, 3749, DIALOG_STYLE_LIST, "Управление фракциями", "Уволить сотрудника(любой фракции)\nПринять игрока(в любую фракцию)\nПовысить игрока(любой фракции)(+8 ранг)\nПонизить игрока(любой фракции)\nРасформировывать любую фракцию(кроме лидера) ", "Далее", "Назад");
		}
		else SCM(playerid, COLOR_LIGHTRED, "Вы не уполномочены использовать эту команду");
		return 1;
	}
Идём далее. Команда /ok
PHP:
	else if(strcmp(cmd, "/ok", true) == 0)
	{
	    if(frakinvite[playerid] != 1) return SCM(playerid, COLOR_LIGHTRED, "Вам ничего не предлагали");
        PlayerInfo[frakid][pMember] = frakfrakid;
        PlayerInfo[frakid][pRang] = 1;
        SCM(playerid, COLOR_LIGHTGREEN, "Вы приняты. Для получения скина нужно обратится к лидеру");
        return 1;
	}
Ну что-же теперь самая так сказать "геморойная" часть). Диалоги над которыми я и парился несколько часов:
PHP:
    case 3749:
    {
        if(!response) return 1;
		switch(listitem)
		{
			case 0: ShowPlayerDialog(playerid, 3750, DIALOG_STYLE_INPUT, "Увольнение сотрудника", " Введите id сотрудника которого нужно уволить", "Далее", "Отмена");
			case 1: ShowPlayerDialog(playerid, 3752, DIALOG_STYLE_INPUT, "Принятие игрока в любую фракцию", "Введите ID игрока которого нужно принять!", "Далее", "Отмена");
			case 2: ShowPlayerDialog(playerid, 3754, DIALOG_STYLE_INPUT, "Повышение сотрудника", " Введите ID сотрудника которого нужно повысить", "Готово", "Отмена");
			case 3: ShowPlayerDialog(playerid, 3755, DIALOG_STYLE_INPUT, "Понижение сотрудника", " Введите ID сотрудника которого нужно понизить", "Готово", "Отмена");
			case 4: ShowPlayerDialog(playerid, 3756, DIALOG_STYLE_INPUT, "Раcформировка фракции", " Введите ID фракции которую нужно разформировать", "Готово", "Отмена");
		}
		return 1;
	}
	case 3750:
	{
	    if(!response) return 1;
		new giveplayer[MAX_PLAYER_NAME];
		frakid = strval(inputtext);
		if(frakid == INVALID_PLAYER_ID) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. Игрок с данным ID офлайн"), ShowPlayerDialog(playerid, 3750, DIALOG_STYLE_INPUT, "Увольнение сотрудника", " Введите id сотрудника которого нужно уволить", "Далее", "Отмена");
		if(frakid < 0 && frakid > 999) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. ID введён не верно!"), ShowPlayerDialog(playerid, 3750, DIALOG_STYLE_INPUT, "Увольнение сотрудника", " Введите id сотрудника которого нужно уволить", "Далее", "Отмена");
		if(PlayerInfo[frakid][pLeader] >= 1) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. Вы указали ID лидера!"), ShowPlayerDialog(playerid, 3750, DIALOG_STYLE_INPUT, "Увольнение сотрудника", " Введите id сотрудника которого нужно уволить", "Далее", "Отмена");
		GetPlayerName(frakid, giveplayer, sizeof(giveplayer));
		format(frakstring, sizeof(frakstring), "Введите причину увольнения игрока %s", giveplayer);
        ShowPlayerDialog(playerid, 3751, DIALOG_STYLE_INPUT, "Увольнение игрока", frakstring, "Далее", "Отмена");
        return 1;
	}
	case 3751:
	{
	    if(!response) return 1;
	    new giveplayer[MAX_PLAYER_NAME], sendername[MAX_PLAYER_NAME];
		GetPlayerName(playerid, sendername, sizeof(sendername)), GetPlayerName(frakid, giveplayer, sizeof(giveplayer));
		format(frakstring, sizeof(frakstring), "Вы уволили игрока %s[%d]. Причина: %s", giveplayer, frakid, inputtext), SCM(playerid, COLOR_LIGHTGREEN, frakstring);
		format(frakstring, sizeof(frakstring), "Президент %s[%d] уволил вас! Причина: %s", sendername, playerid, inputtext), SCM(frakid, -1, frakstring);
		PlayerInfo[frakid][pMember] = 0;
		PlayerInfo[frakid][pRang] = 0;
		SetPlayerSkin(frakid, PlayerInfo[frakid][pChar]);
		return 1;
	}
	case 3752:
	{
	    if(!response) return 1;
		new giveplayer[MAX_PLAYER_NAME], sendername[MAX_PLAYER_NAME];
		frakid = strval(inputtext), GetPlayerName(playerid, sendername, sizeof(sendername)), GetPlayerName(frakid, giveplayer, sizeof(giveplayer));
		if(frakid == INVALID_PLAYER_ID) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. Игрок с данным ID офлайн"), ShowPlayerDialog(playerid, 3752, DIALOG_STYLE_INPUT, "Принятие игрока в любую фракцию", "Введите ID игрока которого нужно принять!", "Далее", "Отмена");
		if(frakid < 0 && frakid > 999) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. ID введён не верно!"), ShowPlayerDialog(playerid, 3752, DIALOG_STYLE_INPUT, "Принятие игрока в любую фракцию", "Введите ID игрока которого нужно принять!", "Далее", "Отмена");
		if(PlayerInfo[frakid][pLeader] >= 1) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. Вы указали ID лидера!"), ShowPlayerDialog(playerid, 3752, DIALOG_STYLE_INPUT, "Принятие игрока в любую фракцию", "Введите ID игрока которого нужно принять!", "Далее", "Отмена");
		if(PlayerInfo[frakid][pMember] >= 1) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. Игрок уже состоит в организации!");
		format(frakstring, sizeof(frakstring), "Введите ID фракции в которую принять %s", giveplayer);
        ShowPlayerDialog(playerid, 3753, DIALOG_STYLE_INPUT, "Принятие игрока в любую фракцию", frakstring, "Далее", "Отмена");
        return 1;
	}
	case 3753:
	{
	    if(!response) return 1;
        new giveplayer[MAX_PLAYER_NAME], sendername[MAX_PLAYER_NAME];
        frakfrakid = strval(inputtext);
        GetPlayerName(playerid, sendername, sizeof(sendername)), GetPlayerName(frakid, giveplayer, sizeof(giveplayer));
        if(frakfrakid == 0 || frakfrakid > 31) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. Вы указали неверный ID фракции!"), ShowPlayerDialog(playerid, 3753, DIALOG_STYLE_INPUT, "Принятие игрока в любую фракцию", frakstring, "Далее", "Отмена");
        format(frakstring, sizeof(frakstring), "Вы приняли %s[%d] в фракцию номер %d", giveplayer, frakid, frakfrakid), SCM(playerid, COLOR_LIGHTGREEN, frakstring);
        format(frakstring, sizeof(frakstring), "Президент %s[%d] предлагает вступить в фракцию номер %d. Что-бы принять введите /ok", sendername, playerid, frakfrakid), SCM(frakid, COLOR_LIGHTGREEN, frakstring);
		frakinvite[frakid] = 1;
		return 1;
	}
	case 3754:
	{
	    if(!response) return 1;
	    new giveplayer[MAX_PLAYER_NAME], sendername[MAX_PLAYER_NAME];
	    frakid = strval(inputtext);
	    GetPlayerName(playerid, sendername, sizeof(sendername)), GetPlayerName(frakid, giveplayer, sizeof(giveplayer));
	    if(frakid == INVALID_PLAYER_ID) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. Игрок с данным ID офлайн"), ShowPlayerDialog(playerid, 3754, DIALOG_STYLE_INPUT, "Повышение сотрудника", " Введите ID сотрудника которого нужно повысить", "Готово", "Отмена");
	    if(frakid < 0 && frakid > 999) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. Неправильно указан ID игрока"), ShowPlayerDialog(playerid, 3754, DIALOG_STYLE_INPUT, "Повышение сотрудника", " Введите ID сотрудника которого нужно повысить", "Готово", "Отмена");
	    if(PlayerInfo[frakid][pLeader] >= 1) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. Указан ID лидера"), ShowPlayerDialog(playerid, 3754, DIALOG_STYLE_INPUT, "Повышение сотрудника", " Введите ID сотрудника которого нужно повысить", "Готово", "Отмена");
	    if(PlayerInfo[frakid][pMember] == 0) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. Указаный игрок не состоит в организации"), ShowPlayerDialog(playerid, 3754, DIALOG_STYLE_INPUT, "Повышение сотрудника", " Введите ID сотрудника которого нужно повысить", "Готово", "Отмена");
	    if(PlayerInfo[frakid][pRang] >= 8) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. Вы не можете повысить игрока веть у него уже 8+ ранг!"), ShowPlayerDialog(playerid, 3754, DIALOG_STYLE_INPUT, "Повышение сотрудника", " Введите ID сотрудника которого нужно повысить", "Готово", "Отмена");
		PlayerInfo[frakid][pRang] += 1;
		format(frakstring, sizeof(frakstring), "Президент %s[%d] повысил вас", sendername, playerid), SCM(frakid, COLOR_LIGHTGREEN, frakstring);
		format(frakstring, sizeof(frakstring), "Вы повысили %s[%d]", giveplayer, frakid), SCM(playerid, COLOR_LIGHTGREEN, frakstring);
		return 1;
	}
	case 3755:
	{
	    if(!response) return 1;
	    new giveplayer[MAX_PLAYER_NAME], sendername[MAX_PLAYER_NAME];
	    frakid = strval(inputtext);
	    GetPlayerName(playerid, sendername, sizeof(sendername)), GetPlayerName(frakid, giveplayer, sizeof(giveplayer));
	    if(frakid == INVALID_PLAYER_ID) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. Игрок с данным ID офлайн"), ShowPlayerDialog(playerid, 3755, DIALOG_STYLE_INPUT, "Понижение сотрудника", " Введите ID сотрудника которого нужно понизить", "Готово", "Отмена");
	    if(frakid < 0 && frakid > 999) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. Неправильно указан ID игрока"), ShowPlayerDialog(playerid, 3755, DIALOG_STYLE_INPUT, "Понижение сотрудника", " Введите ID сотрудника которого нужно понизить", "Готово", "Отмена");
	    if(PlayerInfo[frakid][pLeader] >= 1) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. Указан ID лидера"), ShowPlayerDialog(playerid, 3755, DIALOG_STYLE_INPUT, "Понижение сотрудника", " Введите ID сотрудника которого нужно понизить", "Готово", "Отмена");
	    if(PlayerInfo[frakid][pMember] == 0) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. Указаный игрок не состоит в организации"), ShowPlayerDialog(playerid, 3755, DIALOG_STYLE_INPUT, "Понижение сотрудника", " Введите ID сотрудника которого нужно понизить", "Готово", "Отмена");
	    if(PlayerInfo[frakid][pRang] == 1) return SCM(playerid, COLOR_LIGHTRED, "Ошибка. Вы не можете понизить игрока. У него уже 1 ранг!"), ShowPlayerDialog(playerid, 3755, DIALOG_STYLE_INPUT, "Понижение сотрудника", " Введите ID сотрудника которого нужно понизить", "Готово", "Отмена");
		PlayerInfo[frakid][pRang] -= 1;
		format(frakstring, sizeof(frakstring), "Президент %s[%d] понизил вас", sendername, playerid), SCM(frakid, COLOR_LIGHTGREEN, frakstring);
		format(frakstring, sizeof(frakstring), "Вы понизили %s[%d]", giveplayer, frakid), SCM(playerid, COLOR_LIGHTGREEN, frakstring);
		return 1;
	}
	case 3756:
	{
		if(!response) return 1;
		frakfrakid = strval(inputtext);
		foreach(new i: Player)
		{
		    if(PlayerInfo[i][pLeader] >= 1) return 1;
		    if(PlayerInfo[i][pMember] == frakfrakid)
		    {
				PlayerInfo[i][pMember] = 0;
				PlayerInfo[i][pRang] = 0;
				SetPlayerSkin(playerid, PlayerInfo[i][pChar]);
			}
		}
		SCM(playerid, COLOR_LIGHTGREEN, "Фракция раcформированна!");
		return 1;
	}
Говорю зразу. Если данные id диалогов у вас не использовались то вам повезло. Ведь тут очень много перенаправлений на те же или другие диалоги.
Ну это в основном всё. Теперь примечания:






Примечания:
1. Все переменные такие как pMember pLeader pRang pChar меняйте на свои!
2. Переменная pChar - это скин игрока без фракции(фракционный у меня pSkin).
3. При принятии в фракцию через данную команду: а) Не выдается скин. б) Не выдается цвет в TAB. в) Не тп-хает на базу(так и не должно быть). А в основном: игроку присваивается ТОЛЬКО членство и ранг в организации. После этого лучше игроку релогнутся и обратится к лидеру для выдачи скина через /changeskin (лучше бы он у вас был)).
3. При увольнении из фракции через данную команду: Всё по идеи убирается.
4. При повышении: выдается ранг и всё что связано с ним(звание в /r /f + доступ к команда с след.ранга). Но повышать можно только до 8 ранга(9 зам которого сам лидер должен назначить).
5. При понижении: всё тоже что и с повышением.




Всё остальное в ответы.
Автор: MrJunior(Я)​
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу