CMD:fmenu (Приватные каналы связи)

Добро пожаловать!

Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.

Зарегистрироваться!
  • Если Вы желаете помогать развитию проекта, готовы заполнять раздел(-ы) и подсказывать другим пользователям на портале, есть возможность попасть в команду редакторов. Для этого следует обратиться в техническую поддержку
Пользователь
Регистрация
21 Мар 2022
Сообщения
12
Всех приветствую! Заливаю для вас достаточно прикольную команду, для создания приватных каналов связи. Перейдем непосредственно к самому коду.

Для начала сама команда:

C++:
CMD:fmenu(playerid, params[])
{
    if(PlayerInfo[playerid][pMember] != F_FBI && PlayerInfo[playerid][pRank] < 8) return SendClientMessage(playerid,CGREY,"Вам недоступна данная команда"); //Проверка на фракцию, меняете под себя
    if(PlayerInfo[playerid][pWork] == 0) return SendClientMessage(playerid,CGREY,"Начните рабочий день на базе организации"); //Проверка на начала рабочего дня, меняете под себя
    ShowPlayerDialog(playerid,448,DIALOG_STYLE_LIST,"Меню канала","1 | Открыть/закрыть канал\n2 | Список участников\n3 | Пригласить в канал\n4 | Удалить из канала","Далее","Отмена");
    return 1;
}

PlayerInfo - Ваша информация об игроке (PI, Users, pInfo)
CGREY - Цвет тексте, также можете менять под себя.

В Public OnPlayerDialogResponse

C++:
case 448:
        {
            if(!response) return 1;
            switch(listitem)
            {
                case 0:
                {
                    kanals = (!kanals) ? (true) : (false);
                    if(kanals) SendClientMessage(playerid,CREWARD,"Вы открыли канал!");
                    else SendClientMessage(playerid,CREWARD,"Вы закрыли канал!");
                }
                case 1:
                {
                    new str[70];
                    query = "{ffffff}";
                    for(new i = 0; i < MAX_PLAYERS; i++)
                    {
                        if(!IsPlayerConnected(i) || PlayerLogged[i] == false || !GetPVarInt(i,"FR")) continue;
                        format(str,sizeof(str),"%s [id: %d]\n",PlayerInfo[i][pSendername],i);
                        strcat(query,str);
                    }
                    ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Список участников",query,"Далее","");
                }
                case 2: ShowPlayerDialog(playerid,449,DIALOG_STYLE_INPUT,"Пригласить в канал","{ffffff}Введите ID игрока:\n\n","Далее","Отмена");
                case 3: ShowPlayerDialog(playerid,450,DIALOG_STYLE_INPUT,"Удалить из канала","{ffffff}Введите ID игрока:\n\n","Далее","Отмена");
            }
        }
        case 449:
        {
            if(!response) return ShowPlayerDialog(playerid,448,DIALOG_STYLE_LIST,"Меню канала","1 | Открыть/закрыть канал\n2 | Список участников\n3 | Пригласить в канал\n4 | Удалить из канала","Далее","Отмена");
            if(!strlen(inputtext)) return ShowPlayerDialog(playerid,449,DIALOG_STYLE_INPUT,"Пригласить в канал","{ffffff}Введите ID игрока:\n\n","Далее","Отмена");
            new player = strval(inputtext);
            if(GetPVarInt(player,"FR")) return SendClientMessage(playerid,CGREY,"Игрок уже состоит в приватном канале!");
            new Float:x,Float:y,Float:z;
            GetPlayerPos(player,x,y,z);
            if(!IsPlayerInRangeOfPoint(playerid, 5.0, x,y,z)) return SendClientMessage(playerid,CGREY,"Вы не рядом с игроком");
            SendClientMessage(player,-1,"Вас пригласили в приватный канал. Используйте: {f7ae11}/fr");
            static const fmt_string[] = "Вы пригласили %s в приватный канал";
            new str[sizeof(fmt_string)+MAX_PLAYER_NAME];
            format(str, sizeof(str), fmt_string,PlayerInfo[player][pSendername]);
            SendClientMessage(player,CREWARD,str);
            SetPVarInt(player,"FR",1);
        }
        case 450:
        {
            if(!response) return ShowPlayerDialog(playerid,448,DIALOG_STYLE_LIST,"Меню канала","1 | Открыть/закрыть канал\n2 | Список участников\n3 | Пригласить в канал\n4 | Удалить из канала","Далее","Отмена");
            if(!strlen(inputtext)) return ShowPlayerDialog(playerid,450,DIALOG_STYLE_INPUT,"Удалить из канала","{ffffff}Введите ID игрока:\n\n","Далее","Отмена");
            new player = strval(inputtext);
            if(!GetPVarInt(player,"FR")) return SendClientMessage(playerid,CGREY,"Игрок не состоит в приватном канале!");
            SendClientMessage(player,CREWARD,"Вас выгнали из приватного канала!");
            static const fmt_string[] = "Вы выгнали %s из приватного канала";
            new str[sizeof(fmt_string)+MAX_PLAYER_NAME];
            format(str, sizeof(str), fmt_string,PlayerInfo[player][pSendername]);
            SendClientMessage(player,CREWARD,str);
            DeletePVar(player,"FR");
        }

CREWARD - цвет текста, меняете под себя.
PlayerInfo[i][pSendername] - это информация об игровом нике (PlayerName[playerid], PN(playerid), PlayerInfo[playerid][pName]) - настраиваем также под себя.

В начало мода
C++:
new bool:kanals;

 
Создатель WayDev
Команда форума
Администратор
Регистрация
13 Мар 2022
Сообщения
991
Хорошая система, сделана аккуратно. Приятно видеть, что люди научились работать с тернарными операторами :)
 
.NET software developer
Пользователь
Регистрация
20 Мар 2022
Сообщения
76
Заблокированный
Регистрация
20 Май 2022
Сообщения
122
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.

CMD:fmenu(playerid, params[])
{
if(PlayerInfo[playerid][pMember] != F_FBI && PlayerInfo[playerid][pRank] < 8) return SendClientMessage(playerid,CGREY,"Вам недоступна данная команда"); //Проверка на фракцию, меняете под себя
if(PlayerInfo[playerid][pWork] == 0) return SendClientMessage(playerid,CGREY,"Начните рабочий день на базе организации"); //Проверка на начала рабочего дня, меняете под себя
ShowPlayerDialog(playerid,448,DIALOG_STYLE_LIST,"Меню канала","1 | Открыть/закрыть канал\n2 | Список участников\n3 | Пригласить в канал\n4 | Удалить из канала","Далее","Отмена");
return 1;
}

case 448:
{
if(!response) return 1;
switch(listitem)
{
case 0:
{
kanals = (!kanals) ? (true) : (false);
if(kanals) SendClientMessage(playerid,CREWARD,"Вы открыли канал!");
else SendClientMessage(playerid,CREWARD,"Вы закрыли канал!");
}
case 1:
{
new str[70];
query = "{ffffff}";
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || PlayerLogged == false || !GetPVarInt(i,"FR")) continue;
format(str,sizeof(str),"%s [id: %d]\n",PlayerInfo[pSendername],i);
strcat(query,str);
}
ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Список участников",query,"Далее","");
}
case 2: ShowPlayerDialog(playerid,449,DIALOG_STYLE_INPUT,"Пригласить в канал","{ffffff}Введите ID игрока:\n\n","Далее","Отмена");
case 3: ShowPlayerDialog(playerid,450,DIALOG_STYLE_INPUT,"Удалить из канала","{ffffff}Введите ID игрока:\n\n","Далее","Отмена");
}
}
 
.NET software developer
Пользователь
Регистрация
20 Мар 2022
Сообщения
76

CMD:fmenu(playerid, params[])
{
if(PlayerInfo[playerid][pMember] != F_FBI && PlayerInfo[playerid][pRank] < 8) return SendClientMessage(playerid,CGREY,"Вам недоступна данная команда"); //Проверка на фракцию, меняете под себя
if(PlayerInfo[playerid][pWork] == 0) return SendClientMessage(playerid,CGREY,"Начните рабочий день на базе организации"); //Проверка на начала рабочего дня, меняете под себя
ShowPlayerDialog(playerid,448,DIALOG_STYLE_LIST,"Меню канала","1 | Открыть/закрыть канал\n2 | Список участников\n3 | Пригласить в канал\n4 | Удалить из канала","Далее","Отмена");
return 1;
}

case 448:
{
if(!response) return 1;
switch(listitem)
{
case 0:
{
kanals = (!kanals) ? (true) : (false);
if(kanals) SendClientMessage(playerid,CREWARD,"Вы открыли канал!");
else SendClientMessage(playerid,CREWARD,"Вы закрыли канал!");
}
case 1:
{
new str[70];
query = "{ffffff}";
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || PlayerLogged == false || !GetPVarInt(i,"FR")) continue;
format(str,sizeof(str),"%s [id: %d]\n",PlayerInfo[pSendername],i);
strcat(query,str);
}
ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Список участников",query,"Далее","");
}
case 2: ShowPlayerDialog(playerid,449,DIALOG_STYLE_INPUT,"Пригласить в канал","{ffffff}Введите ID игрока:\n\n","Далее","Отмена");
case 3: ShowPlayerDialog(playerid,450,DIALOG_STYLE_INPUT,"Удалить из канала","{ffffff}Введите ID игрока:\n\n","Далее","Отмена");
}
}
А как же обернуть код в соответствующий HTML-блок? А как же табуляция?
 
Пользователь
Регистрация
21 Мар 2022
Сообщения
12
А как же обернуть код в соответствующий HTML-блок? А как же табуляция?
C++:
CMD : fmenu(playerid, params[])
{
    if (PlayerInfo[playerid][pMember] != F_FBI && PlayerInfo[playerid][pRank] < 8)
        return SendClientMessage(playerid, CGREY, "Вам недоступна данная команда"); //Проверка на фракцию, меняете под себя
    if (PlayerInfo[playerid][pWork] == 0)
        return SendClientMessage(playerid, CGREY, "Начните рабочий день на базе организации"); //Проверка на начала рабочего дня, меняете под себя
    ShowPlayerDialog(playerid, 448, DIALOG_STYLE_LIST, "Меню канала", "1 | Открыть/закрыть канал\n2 | Список участников\n3 | Пригласить в канал\n4 | Удалить из канала", "Далее", "Отмена");
    return 1;
}

case 448: {
    if (!response)
        return 1;
    switch (listitem) {
    case 0: {
        kanals = (!kanals) ? (true) : (false);
        if (kanals)
            SendClientMessage(playerid, CREWARD, "Вы открыли канал!");
        else
            SendClientMessage(playerid, CREWARD, "Вы закрыли канал!");
    }
    case 1: {
        new str[70];
        query = "{ffffff}";
        for (new i = 0; i < MAX_PLAYERS; i++) {
            if (!IsPlayerConnected(i) || PlayerLogged == false || !GetPVarInt(i, "FR"))
                continue;
            format(str, sizeof(str), "%s [id: %d]\n", PlayerInfo[pSendername], i);
            strcat(query, str);
        }
        ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Список участников", query, "Далее", "");
    }
    case 2:
        ShowPlayerDialog(playerid, 449, DIALOG_STYLE_INPUT, "Пригласить в канал", "{ffffff}Введите ID игрока:\n\n", "Далее", "Отмена");
    case 3:
        ShowPlayerDialog(playerid, 450, DIALOG_STYLE_INPUT, "Удалить из канала", "{ffffff}Введите ID игрока:\n\n", "Далее", "Отмена");
    }
}
 
Заблокированный
Регистрация
20 Май 2022
Сообщения
122
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
C++:
CMD : fmenu(playerid, params[])
{
    if (PlayerInfo[playerid][pMember] != F_FBI && PlayerInfo[playerid][pRank] < 8)
        return SendClientMessage(playerid, CGREY, "Вам недоступна данная команда"); //Проверка на фракцию, меняете под себя
    if (PlayerInfo[playerid][pWork] == 0)
        return SendClientMessage(playerid, CGREY, "Начните рабочий день на базе организации"); //Проверка на начала рабочего дня, меняете под себя
    ShowPlayerDialog(playerid, 448, DIALOG_STYLE_LIST, "Меню канала", "1 | Открыть/закрыть канал\n2 | Список участников\n3 | Пригласить в канал\n4 | Удалить из канала", "Далее", "Отмена");
    return 1;
}

case 448: {
    if (!response)
        return 1;
    switch (listitem) {
    case 0: {
        kanals = (!kanals) ? (true) : (false);
        if (kanals)
            SendClientMessage(playerid, CREWARD, "Вы открыли канал!");
        else
            SendClientMessage(playerid, CREWARD, "Вы закрыли канал!");
    }
    case 1: {
        new str[70];
        query = "{ffffff}";
        for (new i = 0; i < MAX_PLAYERS; i++) {
            if (!IsPlayerConnected(i) || PlayerLogged == false || !GetPVarInt(i, "FR"))
                continue;
            format(str, sizeof(str), "%s [id: %d]\n", PlayerInfo[pSendername], i);
            strcat(query, str);
        }
        ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Список участников", query, "Далее", "");
    }
    case 2:
        ShowPlayerDialog(playerid, 449, DIALOG_STYLE_INPUT, "Пригласить в канал", "{ffffff}Введите ID игрока:\n\n", "Далее", "Отмена");
    case 3:
        ShowPlayerDialog(playerid, 450, DIALOG_STYLE_INPUT, "Удалить из канала", "{ffffff}Введите ID игрока:\n\n", "Далее", "Отмена");
    }
}
params[] в команде не используется и ещё вот этот участок странный

new str[70]; query = "{ffffff}";
 
Пользователь
Регистрация
25 Апр 2022
Сообщения
1
можно и без тернарного оператора

Код:
kanals = !kanals;
 
Сверху