[Include] Dynamic Dialogs
#1

Dynamic Dialogs BETA
  • Упрощает работу с диалогами, содержащими динамические пункты.
  • Перед тем, как ставить инклуд, подключите foreach.
  • Наличие багов не исключается.
Скачать
Полная версия:Упрощенная версия: Функции
Полная версия:
pawn Code:
// Создает диалог. Пример: TestDialog[playerid] = CreateDialog("{ffffff}» {ffd100}Оружие", "Выбрать", "Отмена");
native CreateDialog(caption[], button1[], button2[] = "");

// Удаляет диалог. Пример: DestroyDialog(TestDialog[playerid]);
native DestroyDialog(dialogid);

// Добавляет пункт. Пример: AddDialogItem(TestDialog[playerid], 123, "Desert {ffd100}Eagle");
native AddDialogItem(dialogid, itemid, itemtext[]);

// Обновляет пункт. Пример: UpdateDialogItem(TestDialog[playerid], 123, "Капот");
native UpdateDialogItem(dialogid, itemid, newitemtext[]);

// Получает текст пункта. Пример:
// new item_text[MAX_ITEM_LENGTH];
// GetDialogItemText(TestDialog[playerid], 123, item_text);
native GetDialogItemText(dialogid, itemid, dest[]);

// Удаляет пункт. Пример: DeleteDialogItem(TestDialog[playerid], 123);
native DeleteDialogItem(dialogid, itemid);

// Обновляет заголовок диалогового окна. Пример: UpdateDialogCaption(TestDialog[playerid], newcaption[]);
native UpdateDialogCaption(dialogid, newcaption[]);

// Получает заголовок. Пример:
// new caption_str[MAX_CAPTION_LENGTH];
// GetDialogItemText(TestDialog[playerid], caption_str);
native GetDialogCaption(dialogid, dest[]);

// Обновляет первую кнопку. Пример: UpdateDialogButton1(TestDialog[playerid], "Ок");
native UpdateDialogButton1(dialogid, newbutton[]);

// Обновляет вторую кнопку. Пример: UpdateDialogButton2(TestDialog[playerid], "Назад");
native UpdateDialogButton2(dialogid, newbutton[]);

// Получает название первой кнопки. Пример:
// new button1_name[MAX_BUTTON_LENGTH];
// GetDialogButton1(TestDialog[playerid], button1_name);
native GetDialogButton1(dialogid, dest[]);

// Получает название второй кнопки. Пример:
// new button2_name[MAX_BUTTON_LENGTH];
// GetDialogButton2(TestDialog[playerid], button2_name);
native GetDialogButton2(dialogid, dest[]);

// Показывает диалог игроку. Пример:
// ShowDialogForPlayer(playerid, TestDialog[playerid]);
native ShowDialogForPlayer(playerid, dialogid);

// Скрывает диалог игроку. Пример: HideDialogForPlayer(playerid);
native HideDialogForPlayer(playerid);

// Получает ID динамического диалога, который открыт у игрока.
// Пример: GetPlayerDialog(playerid);
native GetPlayerDialog(playerid);
Упрощенная версия:
pawn Code:
// Удаляет все пункты.
native ClearDialogListItems(playerid);

// Добавляет пункт.
native AddDialogListItem(playerid, itemid, itemtext[]);

// Показывает диалог.
native ShowPlayerDialogList(playerid, dialogid, caption[], button1[], button2[]);
Обратные вызовы
Полная версия:
pawn Code:
/* Вызывается при нажатии любого пункта в динамическом диалоге.
    playerid   - ID игрока
    dialogid   - ID динамического диалога
    response   - ID кнопки
    itemid     - ID пункта
    itemtext[] - Текст пункта
*/

forward OnDynamicDialogResponse(playerid, dialogid, response, itemid, itemtext[]);
В упрощенной версии вызывается стандартный callback OnDialogResponse с модифицированным значением listitem.

Изменения
16.04.2013 11:05
  • Добавлена упрощенная версия
16.04.2013 12:33
  • Релиз публичной бета версии
Благодарности
  • Y_Less за foreach
Reply
#2

15 функций, да уж... упрощает.
Reply
#3

Quote:
Originally Posted by AirKite
View Post
15 функций, да уж... упрощает.
Их в принципе можно и убрать. Но найдутся те, кому они будут нужны...
И никто не заставляет тебя использовать все функции.
Могу сделать упрощенный инклуд, где будут только самые важные функции в упрощенном формате.
Reply
#4

Quote:
Originally Posted by GameMan
View Post
Их в принципе можно и убрать. Но найдутся те, кому они будут нужны...
И никто не заставляет тебя использовать все функции.
Могу сделать упрощенный инклуд, где будут только самые важные функции в упрощенном формате.
Дело не в этом, я в принципе не использую чужие инклуды вообще. Это просто совет. Не важно что функции можно и не использовать. Я вижу излишний механизм, типа создания диалога и получения его ида, для последующих манипуляций с ним (на экран диалог то всё равно можно только 1 вывести), ну и конечно же общее количество ненужных функций, что автоматически отталкивает.
Reply
#5

Quote:
Originally Posted by AirKite
View Post
Дело не в этом, я в принципе не использую чужие инклуды вообще. Это просто совет. Не важно что функции можно и не использовать. Я вижу излишний механизм, типа создания диалога и получения его ида, для последующих манипуляций с ним (на экран диалог то всё равно можно только 1 вывести), ну и конечно же общее количество ненужных функций, что автоматически отталкивает.
Хорошо, учту. В первую очередь инклуд я делал для себя. Для моей системы гонок, чтобы по куча раз не получать все данные при подключении игрока в гонку, лучше просто обновлять определенные пункты.
Действительно, я что-то слишком увлекся, когда придумывал функции.
Reply
#6

Попробуй выложить на ENG (если ещё не сделал). Там скорее всего оценят больше
Reply
#7

Quote:
Originally Posted by AirKite
View Post
Попробуй выложить на ENG (если ещё не сделал). Там скорее всего оценят больше
Я бы с радостью, но знание английского языка не позволяет
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)