Биляш
Умник
Приветствую вас, дорогие друзья. Сейчас я вам представлю простенькую команду, для игрока.
Итак, начнём...
В public OnPlayerCommandText вставляете это
К case'ам вставляете вот это
В enum pInfo вставляете
-------------------------------------------
Теперь в команду /kick (/skick пропускаем) вставляем это
Это должно стоять перед сообщением о кике игрока.
Сообщение выглядит примерно так
У каждого по разному выглядит сообщение.
В итоге должно получится, что-то в роде этого.
-------------------------------------------
В команду /mute вставляем это
Вставляем это, после
И у нас должно получится так
-------------------------------------------
Теперь ищем команду /prison и вставляем
Вставляем только после
И у нас получается
-------------------------------------------
Точно также вставляем в команду /ban, /offban (/sban пропускаем) вот это
-------------------------------------------
Это мы сделали, чтобы при использовании этих команд, в игроку в счётчик насчитывались наказания. Команду Warn'a я пропустил. Так как в RLS модах, она уже готова.
И на завершение команды, сохраняем статистику наказаний, тоисть, чтобы при выходе и входе в игру таблица сохранялась.
Для этого в public OnPlayerConnect добавляем
В public OnPlayerRegister добавляем
В public OnPlayerUpdateRL вставляем
В public OnPlayerLogin добавляем
Вот и всё. Команда готова.
Примечание для модераторов: ув.Модераторы, в правилах раздела сказано вставлять префикс [C.M.D], но увы, у меня его нету, по этому мне пришлось в названии темы дорисовать его.
Пользуйтесь командой. Спасибо за внимание!! Кому, что не понятно, спрашивайте в теме, либо в мне в Личные сообщения. Если вы взяли команду, у вас возникают ошибки, то пишите в тему ошибки, которые возникают, а также пишите строки из мода в которых вибивают ошибки.
Дополняйте, спрашивайте, комментируйте, оценивайте тему - для меня это очень важно.
Постепенно буду обновлять спойлер "Помощь новичкам".
Также смотрите мои остальные работы у меня в подписи. Спасибо за внимание!!
Автор: Биляш
Мод: Подходит под RLS.
Тест: на RLS моде.
Время работы: Несколько часов.
Данная команда: показывает статистику наказаний на аккаунте игрока, а также с помощью этой команды, можно подать заявку на [Снятие Бан чата, Освобождение из Карцера (ДеМоргана), Снятие варна].
Мод: Подходит под 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;
}
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;
}
}
}
}
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;
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]);
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]);
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 и они не поймут что куда.
Если вы желаете чтобы команда вызывалась, не на /infopun, а на другую команду, то просто измените /infopun на то, что вы желаете.
Например, на команду /test1
Тогда строка должна выглядеть так
Больше ничего не меняйте, true - значит, будет ли работать команда в вашем моде, если поставить false, то команда в моде существовать будет, но в игре вызываться не будет.
Или же, если вы желаете, чтобы команда вызывалась и на /infopun и, например, на /test1, то замените строчку
на
-------------------------------------------
Дальше идет
Без этого просто не будет вызываться меню команды.
-------------------------------------------
Дальше идёт сам список.
Скобки " - это начало/конец списка.
Из списка вы можете убрать нумерацию, для этого просто уберите
Например, вы можете убрать это
Тогда в игре, нумерации этому пункту не будет, также вы можете убрать нумерацию всем пунктам.
Это переход на новую строку, в нашем случае на пункт. Если это не ставить, то всё будет в одном пункте.
-------------------------------------------
ShowPlayerDialog - Означает, что команда вызывается в диалоге.
2700 - это ид диалога.
DIALOG_STYLE_LIST - стиль диалога, их всего есть 4 вида (если не ошибаюсь).
"Меню наказаний" - это название диалога.
{bbbbbb} - Это цвет названия (можно поставить цвет куда угодно).
"Выбрать", "Закрыть" - название кнопок.
-------------------------------------------
Теперь переходим к case'у 2700. От case зависит, что будет делать каждая кнопка в меню.
Из диалога 2700 case номер 0, я разбирать не буду, так как там очень похожее на меню, которое я разбирал вначале спойлера.
Case 1
Означает, что данное действие не будет выполнятся при pMuted == 0. Тоисть, подать заявку на снятие бан чата будет не возможно если у вас его нету.
Означает, что будет выводится текст, при pMuted == 0.
playerid - это означает, что текст будет выводится именно вам, а не какому-то там Васе.
COLOR_GREY - Это цвет текста, который будет выводится при pMuted == 0.
Благодаря этому, когда вы подаете заявку, то у админа будет писаться ваш ник, тоисть ник того кто подает заявку.
С этим всё. Остальное из Case не буду разбирать, так как там всё похожее, то что я рассказал.
-------------------------------------------
Это нужно для таблицы наказаний. Без этого у вас будут просто цифры.
-------------------------------------------
В это мы добавляли для того, чтобы при выходе из игры и при входе в игру, цифры (статистика наказаний) не обнулялась.
-------------------------------------------
На этом всё. Инструкция создана, для того, чтобы новички в Pawno поняли, что и куда нужно вставлять, а также, что все эти коды означают. Я сам новичок, по этому попытался подробно всё рассказать как я понимаю сам.
PHP:
else if(strcmp(cmd, "/infopun", true) == 0)
Например, на команду /test1
Тогда строка должна выглядеть так
PHP:
else if(strcmp(cmd, "/test1", true) == 0)
Или же, если вы желаете, чтобы команда вызывалась и на /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, "Выбрать", "Закрыть");
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)
PHP:
return SendClientMessage(playerid, COLOR_GREY, "У вас отсутствует бан чата");
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-ти (Отлично).
Чтобы поставить оценку, над темой нажмите на кнопку "Оценка этой темы" и выбирите балл от 1-го (Ужасно) до 5-ти (Отлично).
Постепенно буду обновлять спойлер "Помощь новичкам".
Также смотрите мои остальные работы у меня в подписи. Спасибо за внимание!!
Последнее редактирование модератором:
