Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 3 из 3
  1. #1
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±

    mselect - выбор моделей на Text Draw

    mselect
    GitHub

    Описание
    Библиотека, которая даёт возможность создавать диалоги выбора моделей на Text Draw. Сами Text Draw базируются на скрипте vspawner от Kye. Библиотека позиционируется как гибкая замена для скрипта mSelection, в которой отсутствуют проблемы, связанные с работой вложенных диалогов на Text Draw. Также в библиотеке предусмотрена возможность индивидуальной настройки каждого меню и изменение настроек по умолчанию.

    Скриншоты
    Меню выбора скина:


    Функции
    Показать созданное меню
    1. MSelect_Show(playerid, function[]);


    Открыть меню выбора моделей
    1. MSelect_Open(playerid, function[], items_array[], items_count, bool:list_loop = MSELECT_DEF_LIST_LOOP,
    2. header[] = "", button[] = MSELECT_DEF_BUTTON_TEXT,
    3. button_next[] = MSELECT_DEF_BUTTON_NEXT, button_prev[] = MSELECT_DEF_BUTTON_PREV,
    4. Float:pos_x = MSELECT_DEF_POS_X, Float:pos_y = MSELECT_DEF_POS_Y,
    5. Float:button_width = MSELECT_DEF_BUTTON_WIDTH, Float:button_height = MSELECT_DEF_BUTTON_HEIGHT,
    6. Float:page_button_width = MSELECT_DEF_PBUTTON_WIDTH, Float:page_button_height = MSELECT_DEF_PBUTTON_HEIGHT,
    7. Float:item_width = MSELECT_DEF_ITEM_WIDTH, Float:item_height = MSELECT_DEF_ITEM_HEIGHT,
    8. Float:rot_x = MSELECT_DEF_ROT_X, Float:rot_y = MSELECT_DEF_ROT_Y, Float:rot_z = MSELECT_DEF_ROT_Z,
    9. Float:zoom = MSELECT_DEF_ZOOM, Float:background_padding = MSELECT_DEF_BG_PADDING,
    10. Float:item_padding = MSELECT_DEF_ITEM_PADDING, Float:button_padding = MSELECT_DEF_BUTTON_PADDING,
    11. Float:header_padding = MSELECT_DEF_HEADER_PADDING, Float:page_padding = MSELECT_DEF_PAGE_PADDING,
    12. select_color = MSELECT_DEF_SELECT_COLOR,
    13. items_bg_colors[MSELECT_MAX_ITEMS] = {MSELECT_DEF_ITEMS_BG_COLOR, ...},
    14. dialog_bg_color = MSELECT_DEF_DIALOG_BG_COLOR,
    15. header_fg_color = MSELECT_DEF_HEADER_FG_COLOR,
    16. page_fg_color = MSELECT_DEF_PAGE_FG_COLOR,
    17. button_fg_color = MSELECT_DEF_BUTTON_FG_COLOR,
    18. button_bg_color = MSELECT_DEF_BUTTON_BG_COLOR);


    Закрыть меню
    1. MSelect_Close(playerid);


    Статус меню
    1. MSelect_IsOpen(playerid);


    Автовызываемые функции
    Для каждого меню оформляется собственная функция-обработчик, выглядит она следующим образом:
    1. MSelectResponse:example_ms(playerid, MSelectType:response, itemid, itemvalue[])
    2. {
    3. return 1;
    4. }

    Эта функция вызывается при любом взаимодействии пользователя с меню.

    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 нет

    Использование
    Для более удобного использования, в системе предусмотрена возможность создавать функцию для открытия меню, это полезно при множественном вызове одного меню (в основном используется при создании вложенных меню):
    1. MSelectCreate:example_ms(playerid)
    2. {
    3. static
    4. items_array[311] = {MSELECT_INVALID_MODEL_ID, ...},
    5. items_count = 0;
    6.  
    7. if (items_count == 0) {
    8. for(new i = 0; i <= sizeof(items_array); i++) {
    9. if (i == 74) {
    10. continue;
    11. }
    12.  
    13. items_array[items_count] = i;
    14. items_count++;
    15. }
    16. }
    17.  
    18. MSelect_Open(playerid, MSelect:example_ms, items_array, items_count, .header = "Header");
    19. }
    20.  
    21. MSelectResponse:example_ms(playerid, MSelectType:response, itemid, modelid)
    22. {
    23. new string[144];
    24. format(string, sizeof(string), "ID: %d | Type: %d | Item: %d | Model: %d",
    25. playerid, _:response, itemid, modelid);
    26. SendClientMessage(playerid, -1, string);
    27. if (response == MSelect_Cancel) {
    28. MSelect_Close(playerid);
    29. }
    30. return 1;
    31. }

    И где-то вы можете открыть созданное меню:
    1. MSelect_Show(playerid, MSelect:example_ms);

    Естественно вас никто не заставляет пользоваться этой системой, вы можете обойтись без MSelectCreate.

    Скачать
    Последний раз редактировалось ziggi; 15.03.2018 в 20:24.

  2. 6 пользователя(ей) сказали cпасибо:
    Blood (10.10.2016) DeimoS (09.10.2016) Desulaid (09.10.2016) Dr.Deft (09.10.2016) Sambook (01.06.2018) [ForD] (16.12.2016)
  3. #2
    Аватар для Sambook
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.08.2017
    Сообщений
    4
    Репутация:
    0 ±
    PHP код:
    .header "Header" 
    что означает точка, стоящая перед параметром, и в каких случаях её нужно использовать?
    Последний раз редактировалось Sambook; 06.06.2018 в 20:18.

  4. #3
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Sambook Посмотреть сообщение
    PHP код:
    .header "Header" 
    что означает точка, стоящая перед параметром и в каких случаях её нужно использовать?
    Это позволяет вызывать параметры функции в порядке, отличном от заданного при объявлении
    Например, есть функция:
    PHP код:
    main()
    {
        
    SomeFunc(12.2"Test");// Вызвали по-порядку
        
    SomeFunc(1, .param3 "Test", .param2 2.2);// Изменили порядок
    }
    stock SomeFunc(param1Float:param2param3[])
    {
        
    printf("\n%d\n%f\n%s\n"param1param2param3);
        return 
    1;

    Так же это позволяет пропустить значения по-умолчанию. Например, в стримере есть функция создания объекта с рядом параметров, у которых есть значение по-умолчанию:
    1. native STREAMER_TAG_OBJECT CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = STREAMER_OBJECT_SD, Float:drawdistance = STREAMER_OBJECT_DD, STREAMER_TAG_AREA areaid = STREAMER_TAG_AREA -1, priority = 0);


    Нам нужно указать своё значение для streamdistance и, дабы не указывать значения для всех предыдущих параметров, можно сделать так:
    1. CreateDynamicObject(32313, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, .streamdistance = 500.0);

    или, например, так
    1. new Float:streamdistance = 500.0;
    2. CreateDynamicObject(32313, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, .streamdistance = streamdistance);

    1. new Float:test = 500.0;// Имя может быть любым
    2. CreateDynamicObject(32313, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, .streamdistance = test);


    То есть, после точки ты пишешь имя параметра, для которого нужно передать значение, после ставишь знак "=" и после уже указываешь значение
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  5. 2 пользователя(ей) сказали cпасибо:
    Sambook (06.06.2018) ziggi (06.06.2018)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •