Создание диалоговых окон

Описание: Основы скриптинга
Модератор: SJplayer

Дим M
Автор темы, Администратор
Администратор
Аватара
Дим M
Автор темы, Администратор
Администратор
Сообщения: 1608
Зарегистрирован: 5 апреля 2013
С нами: 10 лет 11 месяцев

#1 Дим » 6 апреля 2013, 15:00

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

В этом примере показано, как сделать диалоговое окно, дающее возможность купить себе напитки (используя SetPlayerSpecialAction) за определенное количество денег.

Диалоговое окно будет вызываться командой. Добавьте это в паблик - public OnPlayerCommandText(playerid, cmdtext[])

Код: Выделить всё

if(!strcmp(cmdtext, "/выпивка", true))
{
    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Что из этого вы хотите выпить?", "Sprunk ($1)\nПиво ($2)\nВино ($3)", "Купить", "Отмена");
    return 1;


Как вы видите, использована функция ShowPlayerDialog со вторым типом диалогового окна.
Используя \n можно добавлять несколько элементов. (\n - перенос строки (добавление новой строки))
Сейчас мы должны указать что будет выполнятся при выборе какого-либо элемента, используя авто вызываемую функцию OnDialogResponse.

В паблик - public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) вставляем:

Код: Выделить всё

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    // Для более простого управления диалоговыми окнами, можно использовать switch(dialogid), но в 
    //этом уроке использовано лишь одно диалоговое окно.
    if(dialogid == 1 && response) // Если ID диалогового окна 1 (как мы указали в ShowPlayerDialog), и игрок нажал 'Купить'
    {
        // Теперь используем switch(listitem), чтобы выполнять действия для разных элементов 
        //диалогового окна. ID первого элемента в диалоговом окне - 0.
        switch(listitem)
        {
            case 0:
            {
                if(GetPlayerMoney(playerid) < 1) 
                return SendClientMessage
(playerid, 0xFFFFFF, "У вас недостаточно денег.");
                GivePlayerMoney(playerid, -1);
                SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_SPRUNK);
            }
            case 1:
            {
                if(GetPlayerMoney(playerid) < 2) 
                return SendClientMessage
(playerid, 0xFFFFFF, "У вас недостаточно денег.");
                GivePlayerMoney(playerid, -2);
                SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_BEER);
            }
            case 2:
            {
                if(GetPlayerMoney(playerid) < 3) 
                return SendClientMessage
(playerid, 0xFFFFFF, "У вас недостаточно денег.");
                GivePlayerMoney(playerid, -3);
                SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_WINE);
            }
        }
    }
    return 1;
}


Если вы всё правильно делали, то диалоговое окно будет работать отлично. Чтобы его вызвать, надо набрать команду /выпивка.

Урок написал CalgonX
Переводил MazaHACKa
[center]i love you [s]mxIni[/s] Mysql[/center]


Alien M
Ефрейтор
Ефрейтор
Аватара
Alien M
Ефрейтор
Ефрейтор
Сообщения: 25
Зарегистрирован: 9 июня 2014
С нами: 9 лет 9 месяцев

#2 Alien » 10 июня 2014, 10:53

Дим писал(а):\n - перенос строки (добавление новой строки)
также очень нужный символ: \t - табуляция, чтобы выровнять строки.
http://vk.com/alien_brickman


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Основы скриптинга»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 4 гостя