mselect - выбор моделей на Text Draw
Описание
Библиотека, которая даёт возможность создавать диалоги выбора моделей на Text Draw. Сами Text Draw базируются на скрипте vspawner от Kye. Библиотека позиционируется как гибкая замена для скрипта mSelection, в которой отсутствуют проблемы, связанные с работой вложенных диалогов на Text Draw. Также в библиотеке предусмотрена возможность индивидуальной настройки каждого меню и изменение настроек по умолчанию.
Скриншоты
Меню выбора скина:
http://ihost.pro-pawn.ru/image.php?di=7JDH
Функции
Показать созданное меню
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_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];
format(string
, sizeof(string
), "ID: %d | Type: %d | Item: %d | Model: %d", playerid, _:response, itemid, modelid);
if (response == MSelect_Cancel) {
MSelect_Close(playerid);
}
return 1;
}
И где-то вы можете открыть созданное меню:
MSelect_Show(playerid, MSelect:example_ms);
Естественно вас никто не заставляет пользоваться этой системой, вы можете обойтись без MSelectCreate.
Скачать