В этом примере показано, как сделать диалоговое окно, дающее возможность купить себе напитки (используя SetPlayerSpecialAction) за определенное количество денег.
Диалоговое окно будет вызываться командой. Добавьте это в паблик - public OnPlayerCommandText(playerid, cmdtext[])
Code: Select all
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[]) вставляем:
Code: Select all
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