ziggi
09.10.2016, 22:20
mselect
GitHub (https://github.com/Open-GTO/mselect)
Описание
Библиотека, которая даёт возможность создавать диалоги выбора моделей на 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_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];
format(string, sizeof(string), "ID: %d | Type: %d | Item: %d | Model: %d",
playerid, _:response, itemid, modelid);
SendClientMessage(playerid, -1, string);
if (response == MSelect_Cancel) {
MSelect_Close(playerid);
}
return 1;
}
И где-то вы можете открыть созданное меню:
MSelect_Show(playerid, MSelect:example_ms);
Естественно вас никто не заставляет пользоваться этой системой, вы можете обойтись без MSelectCreate.
Скачать
Последнюю версию вы всегда можете найти на странице релизов GitHub (https://github.com/Open-GTO/mselect/releases).
GitHub (https://github.com/Open-GTO/mselect)
Описание
Библиотека, которая даёт возможность создавать диалоги выбора моделей на 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_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];
format(string, sizeof(string), "ID: %d | Type: %d | Item: %d | Model: %d",
playerid, _:response, itemid, modelid);
SendClientMessage(playerid, -1, string);
if (response == MSelect_Cancel) {
MSelect_Close(playerid);
}
return 1;
}
И где-то вы можете открыть созданное меню:
MSelect_Show(playerid, MSelect:example_ms);
Естественно вас никто не заставляет пользоваться этой системой, вы можете обойтись без MSelectCreate.
Скачать
Последнюю версию вы всегда можете найти на странице релизов GitHub (https://github.com/Open-GTO/mselect/releases).