mselect
GitHub
Описание
Библиотека, которая даёт возможность создавать диалоги выбора моделей на Text Draw. Сами Text Draw базируются на скрипте vspawner от Kye. Библиотека позиционируется как гибкая замена для скрипта mSelection, в которой отсутствуют проблемы, связанные с работой вложенных диалогов на Text Draw. Также в библиотеке предусмотрена возможность индивидуальной настройки каждого меню и изменение настроек по умолчанию.
Скриншоты
Меню выбора скина:
Функции
Показать созданное меню
MSelect_Show(playerid, function[]);
Открыть меню выбора моделей
MSelect_Open(playerid, function[], items_array[], items_count, bool:list_loop = MSELECT_DEF_LIST_LOOP, header[] = "", button[] = MSELECT_DEF_BUTTON_TEXT, button_next[] = MSELECT_DEF_BUTTON_NEXT, button_prev[] = MSELECT_DEF_BUTTON_PREV, Float:pos_x = MSELECT_DEF_POS_X, Float:pos_y = MSELECT_DEF_POS_Y, Float:button_width = MSELECT_DEF_BUTTON_WIDTH, Float:button_height = MSELECT_DEF_BUTTON_HEIGHT, Float:page_button_width = MSELECT_DEF_PBUTTON_WIDTH, Float:page_button_height = MSELECT_DEF_PBUTTON_HEIGHT, Float:item_width = MSELECT_DEF_ITEM_WIDTH, Float:item_height = MSELECT_DEF_ITEM_HEIGHT, Float:rot_x = MSELECT_DEF_ROT_X, Float:rot_y = MSELECT_DEF_ROT_Y, Float:rot_z = MSELECT_DEF_ROT_Z, Float:zoom = MSELECT_DEF_ZOOM, Float:background_padding = MSELECT_DEF_BG_PADDING, Float:item_padding = MSELECT_DEF_ITEM_PADDING, Float:button_padding = MSELECT_DEF_BUTTON_PADDING, Float:header_padding = MSELECT_DEF_HEADER_PADDING, Float:page_padding = MSELECT_DEF_PAGE_PADDING, select_color = MSELECT_DEF_SELECT_COLOR, items_bg_colors[MSELECT_MAX_ITEMS] = {MSELECT_DEF_ITEMS_BG_COLOR, ...}, dialog_bg_color = MSELECT_DEF_DIALOG_BG_COLOR, header_fg_color = MSELECT_DEF_HEADER_FG_COLOR, page_fg_color = MSELECT_DEF_PAGE_FG_COLOR, button_fg_color = MSELECT_DEF_BUTTON_FG_COLOR, button_bg_color = MSELECT_DEF_BUTTON_BG_COLOR);
Закрыть меню
MSelect_Close(playerid);
Статус меню
MSelect_IsOpen(playerid);
Автовызываемые функции
Для каждого меню оформляется собственная функция-обработчик, выглядит она следующим образом:
MSelectResponse:example_ms(playerid, MSelectType:response, itemid, itemvalue[]) { return 1; }
Эта функция вызывается при любом взаимодействии пользователя с меню.
MSelectType может принимать следующие значения:
- MSelect_None
- MSelect_Item
- MSelect_Button
- MSelect_ButtonNext
- MSelect_ButtonPrev
- MSelect_Cancel
Константы
Доступно несколько констант, некоторые из них можно переназначить.
Константа Значение по умолчанию Можно переназначить? MSELECT_MAX_ITEMS 100 да MSELECT_MAX_ITEMS_PER_LINE 7 да MSELECT_MAX_ITEMS_LINES 3 да MSELECT_DEF_LIST_LOOP false да MSELECT_DEF_BUTTON_TEXT "Cancel" да MSELECT_DEF_BUTTON_NEXT ">>" да MSELECT_DEF_BUTTON_PREV "<<" да MSELECT_DEF_POS_X 85.0 да MSELECT_DEF_POS_Y 130.0 да MSELECT_DEF_BUTTON_WIDTH 60.0 да MSELECT_DEF_BUTTON_HEIGHT 13.0 да MSELECT_DEF_PBUTTON_WIDTH 30.0 да MSELECT_DEF_PBUTTON_HEIGHT 13.0 да MSELECT_DEF_ITEM_WIDTH 60.0 да MSELECT_DEF_ITEM_HEIGHT 70.0 да MSELECT_DEF_ROT_X 0.0 да MSELECT_DEF_ROT_Y 0.0 да MSELECT_DEF_ROT_Z 0.0 да MSELECT_DEF_ZOOM 1.0 да MSELECT_DEF_BG_PADDING 20.0 да MSELECT_DEF_ITEM_PADDING 2.0 да MSELECT_DEF_BUTTON_PADDING 5.0 да MSELECT_DEF_SELECT_COLOR 0xAAAAAAFF да MSELECT_DEF_ITEMS_BG_COLOR 0x55555599 да MSELECT_DEF_DIALOG_BG_COLOR 0x00000099 да MSELECT_DEF_HEADER_FG_COLOR 0xDDDDDDDD да MSELECT_DEF_PAGE_FG_COLOR 0xDDDDDDDD да MSELECT_DEF_BUTTON_FG_COLOR 0x888888FF да MSELECT_DEF_BUTTON_BG_COLOR 0x000000CC да MSELECT_DEF_HEADER_PADDING 3.0 да MSELECT_DEF_PAGE_PADDING 3.0 да MSELECT_MAX_ITEMS_ON_LIST (MSELECT_MAX_ITEMS_PER_LINE * MSELECT_MAX_ITEMS_LINES) нет MSELECT_MAX_FUNCTION_NAME 31 нет MSELECT_INVALID_MODEL_ID -1 нет
Использование
Для более удобного использования, в системе предусмотрена возможность создавать функцию для открытия меню, это полезно при множественном вызове одного меню (в основном используется при создании вложенных меню):
MSelectCreate:example_ms(playerid) { static items_array[311] = {MSELECT_INVALID_MODEL_ID, ...}, items_count = 0; if (items_count == 0) { for(new i = 0; i <= sizeof(items_array); i++) { if (i == 74) { continue; } items_array[items_count] = i; items_count++; } } MSelect_Open(playerid, MSelect:example_ms, items_array, items_count, .header = "Header"); } MSelectResponse:example_ms(playerid, MSelectType:response, itemid, modelid) { new string[144]; playerid, _:response, itemid, modelid); if (response == MSelect_Cancel) { MSelect_Close(playerid); } return 1; }
И где-то вы можете открыть созданное меню:
MSelect_Show(playerid, MSelect:example_ms);
Естественно вас никто не заставляет пользоваться этой системой, вы можете обойтись без MSelectCreate.
Скачать
- Последнюю версию вы всегда можете найти на странице релизов GitHub.