Как Создать Диалог
From SA-MP Wiki
Создание диалогов
Создание диалоговых окон может показаться сложнее чем это есть на самом деле. В этом уроке описано как можно создать диалоговое окно, с выбором элемента. В данном диалоге не будет использовано много функций, так как это только демонстрация.
В этом примере показано, как сделать диалоговое окно, дающее возможность купить себе напитки (используя SetPlayerSpecialAction) за определенное количество денег.
Диалоговое окно будет вызываться командой. Добавьте это в
OnPlayerCommandText:
if(!strcmp(cmdtext, "/выпивка", true)) { ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Что из этого вы хотите выпить?", "Sprunk ($1)\nПиво ($2)\nВино ($3)", "Купить", "Отмена"); return 1; }
Как вы видите, использована функция ShowPlayerDialog со 2 типом диалогового окна (типы диалоговых окон).
Используя \n можно добавлять несколько элементов.
(\n - перенос строки (добавление новой строки))
Сейчас мы должны указать что будет выполнятся при выборе какого-либо элемента, используя авто вызываемую функцию OnDialogResponse.
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; }
Если вы всё правильно делали, то диалоговое окно будет работать отлично. Чтобы его вызвать, надо набрать команду /выпивка.