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

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

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

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

/infopun - Меню предупреждений

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

Биляш

Умник
Приветствую вас, дорогие друзья. Сейчас я вам представлю простенькую команду, для игрока.
Автор: Биляш
Мод: Подходит под RLS.
Тест: на RLS моде.
Время работы: Несколько часов.
Данная команда: показывает статистику наказаний на аккаунте игрока, а также с помощью этой команды, можно подать заявку на [Снятие Бан чата, Освобождение из Карцера (ДеМоргана), Снятие варна].
Итак, начнём...
В public OnPlayerCommandText вставляете это
PHP:
else if(strcmp(cmd, "/infopun", true) == 0)
	 {
			{
			    new listitems[] = "[1] - Посмотреть счётчик наказаний\n[2] - Подать заявку на снятие бан чата\n[3] - Подать заявку на освобождение из карцера\n[4] - Подать заявку на снятие предупреждений";
       			ShowPlayerDialog(playerid, 2700, DIALOG_STYLE_LIST, "{bbbbbb}Меню наказаний", listitems, "Выбрать", "Закрыть");

       		}
		return 1;
	}
К case'ам вставляете вот это
PHP:
	case 2700:
    {
        if(response)
        {
            switch(listitem)
            {
                case 0:
                {
          		format(string,sizeof(string), "{00ff00}Бан чата{ffffff}: %d раз\n{42aaff}Киков{ffffff}: %d раз\n{ffa500}Карцер{ffffff}: %d раз\n{faff00}Предупреждений{ffffff}: %d раз\n{ff0000}Блокировок{ffffff}: %d раз",PlayerInfo[playerid][pMutes],PlayerInfo[playerid][pKicks],PlayerInfo[playerid][pPrisons],PlayerInfo[playerid][pWarns],PlayerInfo[playerid][pBlocked]);
  				ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"{bbbbbb}Ваша таблица наказаний",string,"Выйти","");
				return 1;
				}
				case 1:
				{
				if(PlayerInfo[playerid][pMuted] == 0) return  SendClientMessage(playerid, COLOR_GREY, "У вас отсутствует бан чата");
				new plname[MAX_PLAYER_NAME];
				SendClientMessage(playerid, COLOR_GREY, "Вы подали заявление на снятие бан чата. Ожидайте ответа");
				GetPlayerName(playerid, plname, sizeof(plname));
				format(string, 256, "[Adm] %s подал заявку на снятие Бан чата [PlayerID: %d] [LVL: %d] [Время бан чата: %d]", plname,playerid,PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pMuteTime]);
				ABroadCast(COLOR_LIME,string,1);
				return 1;
				}
				case 2:
				{
				if(PlayerInfo[playerid][pMestoJail] == 0) return  SendClientMessage(playerid, COLOR_GREY, "Вы не сидите в карцере");
				if(PlayerInfo[playerid][pJailed] == 0) return SendClientMessage(playerid, COLOR_GREY, "Вы не сидите в карцере");
 				if(PlayerInfo[playerid][pJailed] == 1) return SendClientMessage(playerid, COLOR_GREY, "Вы не сидите в карцере");
 				if(PlayerInfo[playerid][pJailed] == 2) return SendClientMessage(playerid, COLOR_GREY, "Вы не сидите в карцере");
 				if(PlayerInfo[playerid][pJailed] == 3) return SendClientMessage(playerid, COLOR_GREY, "Вы не сидите в карцере");
				new plname[MAX_PLAYER_NAME];
				SendClientMessage(playerid, COLOR_GREY, "Вы подали заявление на освобождение из карцера. Ожидайте ответа");
				GetPlayerName(playerid, plname, sizeof(plname));
				format(string, 256, "[Adm] %s подал заявку на освобождение из карцера [PlayerID: %d] [LVL: %d] [Время карцера %d]", plname,playerid,PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pJailTime]);
				ABroadCast(COLOR_LIME,string,1);
				return 1;
				}
				case 3:
				{
				if(PlayerInfo[playerid][pWarns] == 0) return  SendClientMessage(playerid, COLOR_GREY, "У вас отсутствуют предупреждения");
				new plname[MAX_PLAYER_NAME];
				SendClientMessage(playerid, COLOR_GREY, "Вы подали заявление на снятие предупреждений. Ожидайте ответа");
				GetPlayerName(playerid, plname, sizeof(plname));
				format(string, 256, "[Adm] %s подал заявку на снятие Warn'a [PlayerID: %d] [LVL: %d] [Warn's: %d]", plname,playerid,PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pWarns]);
				ABroadCast(COLOR_LIME,string,1);
				return 1;
				}
            }
        }
    }
В enum pInfo вставляете
PHP:
    pMutes,
	pWarns,
	pKicks,
	pBlocked,
	pPrisons,
-------------------------------------------
Теперь в команду /kick (/skick пропускаем) вставляем это
PHP:
PlayerInfo[giveplayerid][pKicks] += 1;
Это должно стоять перед сообщением о кике игрока.
Сообщение выглядит примерно так
PHP:
format(string, sizeof(string), "Игрок %s отсоеденен администратором %s - %s", giveplayer,sendername, (result));
						SendClientMessageToAll(COLOR_GREY, string);
У каждого по разному выглядит сообщение.
В итоге должно получится, что-то в роде этого.
PHP:
						PlayerInfo[giveplayerid][pKicks] += 1;
						format(string, sizeof(string), "Игрок %s отсоеденен администратором %s - %s", giveplayer,sendername, (result));
						SendClientMessageToAll(COLOR_GREY, string);
-------------------------------------------
В команду /mute вставляем это
PHP:
PlayerInfo[playerid][pMutes] += 1;
Вставляем это, после
PHP:
		PlayerInfo[playa][pMuteTime] = mins*1;
		PlayerInfo[playa][pMuted] = 1;;
И у нас должно получится так
PHP:
							PlayerInfo[playa][pMuteTime] = mins*1;
							PlayerInfo[playa][pMuted] = 1;
							PlayerInfo[playerid][pMutes] += 1;
-------------------------------------------
Теперь ищем команду /prison и вставляем
PHP:
PlayerInfo[giveplayerid][pPrisons] += 1;
Вставляем только после
PHP:
					PlayerInfo[giveplayerid][pJailed] = 4;
					PlayerInfo[giveplayerid][pMestoJail] = 1;
И у нас получается
PHP:
					PlayerInfo[giveplayerid][pJailed] = 4;
					PlayerInfo[giveplayerid][pMestoJail] = 1;
					PlayerInfo[giveplayerid][pPrisons] += 1;
-------------------------------------------
Точно также вставляем в команду /ban, /offban (/sban пропускаем) вот это
PHP:
PlayerInfo[giveplayerid][pBlocked] += 1;
-------------------------------------------
Это мы сделали, чтобы при использовании этих команд, в игроку в счётчик насчитывались наказания. Команду Warn'a я пропустил. Так как в RLS модах, она уже готова.
И на завершение команды, сохраняем статистику наказаний, тоисть, чтобы при выходе и входе в игру таблица сохранялась.
Для этого в public OnPlayerConnect добавляем
PHP:
PlayerInfo[playerid][pWarns] = 0;
	PlayerInfo[playerid][pMutes] = 0;
	PlayerInfo[playerid][pKicks] = 0;
	PlayerInfo[playerid][pPrisons] = 0;
	PlayerInfo[playerid][pBlocked] = 0;
В public OnPlayerRegister добавляем
PHP:
ini_setInteger(File,"Mutes",PlayerInfo[playerid][pMutes]);
ini_setInteger(File,"Prisons",PlayerInfo[playerid][pPrisons]);
ini_setInteger(File,"Kicks",PlayerInfo[playerid][pKicks]);
ini_setInteger(File,"Blocked",PlayerInfo[playerid][pBlocked]);
В public OnPlayerUpdateRL вставляем
PHP:
ini_setInteger(File,"Mutes",PlayerInfo[playerid][pMutes]);
ini_setInteger(File,"Prisons",PlayerInfo[playerid][pPrisons]);
ini_setInteger(File,"Kicks",PlayerInfo[playerid][pKicks]);
ini_setInteger(File,"Blocked",PlayerInfo[playerid][pBlocked]);
В public OnPlayerLogin добавляем
PHP:
ini_getInteger(File,"Mutes",PlayerInfo[playerid][pMutes]);
ini_getInteger(File,"Prisons",PlayerInfo[playerid][pPrisons]);
ini_getInteger(File,"Kicks",PlayerInfo[playerid][pKicks]);
ini_getInteger(File,"Blocked",PlayerInfo[playerid][pBlocked]);
Вот и всё. Команда готова.
Примечание для модераторов: ув.Модераторы, в правилах раздела сказано вставлять префикс [C.M.D], но увы, у меня его нету, по этому мне пришлось в названии темы дорисовать его.
Разберу команду с самого начала, так как тему могут читать новички в Pawno и они не поймут что куда.
PHP:
else if(strcmp(cmd, "/infopun", true) == 0)
Если вы желаете чтобы команда вызывалась, не на /infopun, а на другую команду, то просто измените /infopun на то, что вы желаете.
Например, на команду /test1
Тогда строка должна выглядеть так
PHP:
else if(strcmp(cmd, "/test1", true) == 0)
Больше ничего не меняйте, true - значит, будет ли работать команда в вашем моде, если поставить false, то команда в моде существовать будет, но в игре вызываться не будет.
Или же, если вы желаете, чтобы команда вызывалась и на /infopun и, например, на /test1, то замените строчку
PHP:
else if(strcmp(cmd, "/infopun", true) == 0)
на
PHP:
else if(strcmp(cmd, "/infopun", true) == 0 || strcmp(cmd, "/test1", true)
-------------------------------------------
Дальше идет
PHP:
 new listitems[]
Без этого просто не будет вызываться меню команды.
-------------------------------------------
Дальше идёт сам список.
Скобки " - это начало/конец списка.
Из списка вы можете убрать нумерацию, для этого просто уберите
PHP:
[Цифра] -
Например, вы можете убрать это
PHP:
[1] -
Тогда в игре, нумерации этому пункту не будет, также вы можете убрать нумерацию всем пунктам.
PHP:
\n
Это переход на новую строку, в нашем случае на пункт. Если это не ставить, то всё будет в одном пункте.
-------------------------------------------
PHP:
ShowPlayerDialog(playerid, 2700, DIALOG_STYLE_LIST, "{bbbbbb}Меню наказаний", listitems, "Выбрать", "Закрыть");
ShowPlayerDialog - Означает, что команда вызывается в диалоге.
2700 - это ид диалога.
DIALOG_STYLE_LIST - стиль диалога, их всего есть 4 вида (если не ошибаюсь).
"Меню наказаний" - это название диалога.
{bbbbbb} - Это цвет названия (можно поставить цвет куда угодно).
"Выбрать", "Закрыть" - название кнопок.
-------------------------------------------
Теперь переходим к case'у 2700. От case зависит, что будет делать каждая кнопка в меню.
Из диалога 2700 case номер 0, я разбирать не буду, так как там очень похожее на меню, которое я разбирал вначале спойлера.
Case 1
PHP:
if(PlayerInfo[playerid][pMuted] == 0) return  SendClientMessage(playerid, COLOR_GREY, "У вас отсутствует бан чата"); 
                new plname[MAX_PLAYER_NAME]; 
                SendClientMessage(playerid, COLOR_GREY, "Вы подали заявление на снятие бан чата. Ожидайте ответа");
                GetPlayerName(playerid, plname, sizeof(plname)); 
                format(string, 256, "[Adm] %s подал заявку на снятие Бан чата [PlayerID: %d] [LVL: %d] [Время бан чата: %d]", plname,playerid,PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pMuteTime]); 
                ABroadCast(COLOR_LIME,string,1); 
                return 1;
PHP:
if(PlayerInfo[playerid][pMuted] == 0)
Означает, что данное действие не будет выполнятся при pMuted == 0. Тоисть, подать заявку на снятие бан чата будет не возможно если у вас его нету.
PHP:
return  SendClientMessage(playerid, COLOR_GREY, "У вас отсутствует бан чата");
Означает, что будет выводится текст, при pMuted == 0.
playerid - это означает, что текст будет выводится именно вам, а не какому-то там Васе.
COLOR_GREY - Это цвет текста, который будет выводится при pMuted == 0.
PHP:
new plname[MAX_PLAYER_NAME];
GetPlayerName(playerid, plname, sizeof(plname));
Благодаря этому, когда вы подаете заявку, то у админа будет писаться ваш ник, тоисть ник того кто подает заявку.

С этим всё. Остальное из Case не буду разбирать, так как там всё похожее, то что я рассказал.
-------------------------------------------
PHP:
    pMutes, 
    pWarns, 
    pKicks, 
    pBlocked, 
    pPrisons,
Это нужно для таблицы наказаний. Без этого у вас будут просто цифры.
-------------------------------------------
PHP:
public OnPlayerConnect
public OnPlayerRegister
public OnPlayerUpdateRL
public OnPlayerLogin
В это мы добавляли для того, чтобы при выходе из игры и при входе в игру, цифры (статистика наказаний) не обнулялась.
-------------------------------------------
На этом всё. Инструкция создана, для того, чтобы новички в Pawno поняли, что и куда нужно вставлять, а также, что все эти коды означают. Я сам новичок, по этому попытался подробно всё рассказать как я понимаю сам.
Пересмотрев свою команду, я понял, что команду можно оптимизировать.
Собственно вот...
Вот это
PHP:
 case 0: 
                { 
                  format(string,sizeof(string), "{00ff00}Бан чата{ffffff}: %d раз\n{42aaff}Киков{ffffff}: %d раз\n{ffa500}Карцер{ffffff}: %d раз\n{faff00}Предупреждений{ffffff}: %d раз\n{ff0000}Блокировок{ffffff}: %d раз",PlayerInfo[playerid][pMutes],PlayerInfo[playerid][pKicks],PlayerInfo[playerid][pPrisons],PlayerInfo[playerid][pWarns],PlayerInfo[playerid][pBlocked]); 
                  ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"{bbbbbb}Ваша таблица наказаний",string,"Выйти",""); 
                return 1; 
                }
Замените на
PHP:
                case 0:
                {
                new banchata = PlayerInfo[playerid][pMutes];
                new infokick = PlayerInfo[playerid][pKicks];
                new prisonss = PlayerInfo[playerid][pPrisons];
                new infowarn = PlayerInfo[playerid][pWarns];
                new infoban = PlayerInfo[playerid][pBlocked];
          		format(string,sizeof(string), "{00ff00}Бан чата{ffffff}: %d раз\n{42aaff}Киков{ffffff}: %d раз\n{ffa500}Карцер{ffffff}: %d раз\n{faff00}Предупреждений{ffffff}: %d раз\n{ff0000}Блокировок{ffffff}: %d раз",banchata,infokick,prisonss,infowarn,infoban);
  				ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"{bbbbbb}Ваша таблица наказаний",string,"Выйти","");
				return 1;
				}
-------------------------------------------
Вот это
PHP:
case 2: 
                { 
                if(PlayerInfo[playerid][pMestoJail] == 0) return  SendClientMessage(playerid, COLOR_GREY, "Вы не сидите в карцере"); 
                if(PlayerInfo[playerid][pJailed] == 0) return SendClientMessage(playerid, COLOR_GREY, "Вы не сидите в карцере"); 
                 if(PlayerInfo[playerid][pJailed] == 1) return SendClientMessage(playerid, COLOR_GREY, "Вы не сидите в карцере"); 
                 if(PlayerInfo[playerid][pJailed] == 2) return SendClientMessage(playerid, COLOR_GREY, "Вы не сидите в карцере"); 
                 if(PlayerInfo[playerid][pJailed] == 3) return SendClientMessage(playerid, COLOR_GREY, "Вы не сидите в карцере"); 
                new plname[MAX_PLAYER_NAME]; 
                SendClientMessage(playerid, COLOR_GREY, "Вы подали заявление на освобождение из карцера. Ожидайте ответа"); 
                GetPlayerName(playerid, plname, sizeof(plname)); 
                format(string, 256, "[Adm] %s подал заявку на освобождение из карцера [PlayerID: %d] [LVL: %d] [Время карцера %d]", plname,playerid,PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pJailTime]); 
                ABroadCast(COLOR_LIME,string,1); 
                return 1; 
                }
Замените на это
PHP:
case 2:
				{
				if(PlayerInfo[playerid][pMestoJail] == 0) return  SendClientMessage(playerid, COLOR_GREY, "Вы не сидите в карцере");
				if(PlayerInfo[playerid][pJailed] <= 4) return SendClientMessage(playerid, COLOR_GREY, "Вы не сидите в карцере");
				new plname[MAX_PLAYER_NAME];
				SendClientMessage(playerid, COLOR_GREY, "Вы подали заявление на освобождение из карцера. Ожидайте ответа");
				GetPlayerName(playerid, plname, sizeof(plname));
				format(string, 256, "[Adm] %s подал заявку на освобождение из карцера [PlayerID: %d] [LVL: %d] [Время карцера %d]", plname,playerid,PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pJailTime]);
				ABroadCast(COLOR_LIME,string,1);
				return 1;
				}
Пользуйтесь командой. Спасибо за внимание!! Кому, что не понятно, спрашивайте в теме, либо в мне в Личные сообщения. Если вы взяли команду, у вас возникают ошибки, то пишите в тему ошибки, которые возникают, а также пишите строки из мода в которых вибивают ошибки.
Если вам понравилась моя работа или же не понравилась, то просьба поставить оценку на сколько вам понравилась моя работа.
Чтобы поставить оценку, над темой нажмите на кнопку "Оценка этой темы" и выбирите балл от 1-го (Ужасно) до 5-ти (Отлично).
Дополняйте, спрашивайте, комментируйте, оценивайте тему - для меня это очень важно.
Постепенно буду обновлять спойлер "Помощь новичкам".
Также смотрите мои остальные работы у меня в подписи. Спасибо за внимание!!
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу