• 0
elishanky

[закрыто] Как выполнить действие в диалоге если есть предмет

Вопросы

привет, как сделать действие если в диалоге есть такие предметы ?? Нажимай на них хочу делать действие 

CMD:flowerinfo(playerid)
{
    new txt[52],yashik[320];
    format(yashik, sizeof(yashik), "Вид:\Кол-Во\n");
    if(PlayerInfo[playerid][pCveti] != 0) { format(txt, 52"Тюльпаны\t%d\n", PlayerInfo[playerid][pCveti]), strcat(yashik, txt); }
    if(PlayerInfo[playerid][pRoses] != 0) { format(txt, 52"Розы\t%d\n", PlayerInfo[playerid][pRoses]); strcat(yashik, txt); }
    if(PlayerInfo[playerid][pCveti2] != 0) { format(txt, 52"Гвоздика\t%d\n", PlayerInfo[playerid][pCveti2]); strcat(yashik, txt); }
    ShowPlayerDialog(playerid,8585,DIALOG_STYLE_TABLIST_HEADERS,"Ящик с цветами",yashik,"Ok","Cancel");

 

Поделиться сообщением


Ссылка на сообщение

4 ответа на этот вопрос

  • 0

в OnDialogResponse

case 8585:
{
    if(!response) return true;
    switch(listitem) 
    {
        case 0:
        {
            // тюльпаны
        }
        case 1:
        {
            // розы
        }
        case 2:
        {
            // гвоздики
        }
    }
    return true;
}

 

Отредактировано пользователем trevison

Поделиться сообщением


Ссылка на сообщение
  • 0

@trevison Так не б

  В 12/3/2023 в 15:17, trevison сказал:

в OnDialogResponse

case 8585:
{
    if(!response) return true;
    switch(listitem) 
    {
        case 0:
        {
            // тюльпаны
        }
        case 1:
        {
            // розы
        }
        case 2:
        {
            // гвоздики
        }
    }
    return true;
}

 

Читать далее...  

Так не работает . внимательней гляньте команду . Там цветы показывается когда есть, а если нет, то не показывает, а вместо case 0 может быть не тюльпаны, а другие цветы

Поделиться сообщением


Ссылка на сообщение
  • 0

@elishanky 
 

// Stock's

stock GetString(const param1[], const param2[]) 
{
    return !strcmp(param1, param2, false);
}

// OnDialogResponse

case 8585:
{
    if(response)
    {
        if(GetString(inputtext, "Тюльпаны")) 
        {
            //  
        }
        else if(GetString(inputtext, "Розы"))
        {
            //  
        }
    }
    return 1;
}

 

Отредактировано пользователем break

Поделиться сообщением


Ссылка на сообщение
  • 0

Для обработки действий при нажатии на определенные элементы в диалоге с использованием TABLIST_HEADERS, вам нужно использовать коллбэк-функцию `OnPlayerSelectedMenuRow`. В этой функции вы можете проверять выбранный элемент и выполнять соответствующие действия.

Примерный код может выглядеть следующим образом:
 

public OnPlayerSelectedMenuRow(playerid, row)
{
    if (row == 1// Тюльпаны
    {
        // Ваш код для обработки выбора "Тюльпаны"
        SendClientMessage(playerid, -1"Вы выбрали тюльпаны!");
    }
    else if (row == 2// Розы
    {
        // Ваш код для обработки выбора "Розы"
        SendClientMessage(playerid, -1"Вы выбрали розы!");
    }
    else if (row == 3// Гвоздика
    {
        // Ваш код для обработки выбора "Гвоздика"
        SendClientMessage(playerid, -1"Вы выбрали гвоздику!");
    }

    // Возвращаем 1, чтобы предотвратить закрытие диалога
    return 1;
}

CMD:flowerinfo(playerid)
{
    new txt[52], yashik[320];
    format(yashik, sizeof(yashik), "Вид:\tКол-во\n");

    if (PlayerInfo[playerid][pCveti] != 0) {
        format(txt, sizeof(txt), "Тюльпаны\t%d\n", PlayerInfo[playerid][pCveti]);
        strcat(yashik, txt);
    }
    if (PlayerInfo[playerid][pRoses] != 0) {
        format(txt, sizeof(txt), "Розы\t%d\n", PlayerInfo[playerid][pRoses]);
        strcat(yashik, txt);
    }
    if (PlayerInfo[playerid][pCveti2] != 0) {
        format(txt, sizeof(txt), "Гвоздика\t%d\n", PlayerInfo[playerid][pCveti2]);
        strcat(yashik, txt);
    }

    ShowPlayerDialog(playerid, 8585, DIALOG_STYLE_TABLIST_HEADERS, "Ящик с цветами", yashik, "Ok""Cancel");
    return 1;
}


```

В этом примере, когда игрок выбирает элемент в диалоге, функция `OnPlayerSelectedMenuRow` будет вызвана, и в зависимости от выбранного элемента будет выполнен соответствующий код. Вам нужно добавить свой код обработки для каждого варианта.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

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

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

    • djxxx
      От djxxx
      приветствую всех.
       
      Задался таким вопросом при добавлении одной системы на DIALOG_STYLE_TABLIST_HEADERS.
       
      Суть проблемы в том, что диалог не выравнивается под нужные показатели, а просто как будто находиться по середине, в диалоге используется \t, но они особо не помогают в решении, также не ровно.
       
      а если попытаться выравнивать большим количеством \t, оно компилируется но в игре происходят вылеты
       
      Код такой:
      DialogAdmShop ( playerid, DIALOG_EPOINTSHOP, DIALOG_STYLE_TABLIST_HEADERS, fmt_str, ""BR"номер\t"BR"наименование\t"BR"доступное действие\n"\ "{EB4C42}#1\t{FFFFFF}Виртуальная валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#2\t{FFFFFF}Донат валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#3\t{FFFFFF}Вип статусы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#4\t{FFFFFF}Кейсы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#5\t{FFFFFF}Уникальные аксессуары\t{888888}нажмите для взаимодействия", "Выбрать", "Закрыть" ); }  
      сток dialogadmshop:
      stock DialogAdmShop(playerid, dialogid, style, title[], text[], button[], button2[]) {   if(style == 5)   {      ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "...", "...", "...", "");    }   ShowPlayerDialog(playerid, dialogid, style, title, text, button, button2);   return 1; }