# Menu

Класс для взаимодействия с меню чита. Даёт возможность создавать свои элементы в меню чита.

Рекомендуем к ознакомлению:

# Статические методы

# AddToggle

Создаёт чекбокс, которые принимает значения вкл/выкл

Аргументы:

  • whereAt - Array<string>
  • name - string
  • defaultValue - true | false

Возвращаемые значения:

Пример использования:

let exampleScript = {};

let myOption = 
    Menu.AddToggle(['My', 'Own', 'Path'], 'My Own Option Name', false)
    .OnChange(state => {
        console.log(`My Own Option changed value from ${state.oldValue} to ${state.newValue}`);
    });

exampleScript.OnUpdate = () => {
    if (myOption.GetValue() === true) {
        console.log('Option is enabled');
    } else {
        console.log('Option is disabled :(');
    }
};

RegisterScript(exampleScript);

# AddSlider

Создаёт слайдер, который позволяет выбрать точное числовое значение в заданном диапозоне

Аргументы:

  • whereAt - Array<string>
  • name - string
  • min - number
  • max - number
  • defaultValue - number
  • step? - "шаг"; по умолчанию 1

Пример использования:

let exampleScript = {};

let myOption = 
    Menu.AddSlider(['My', 'Own', 'Path'], 'My Own Slider Name', 10, 100, 50, 5)
    .OnChange(state => {
        console.log(`My Own Slider changed value from ${state.oldValue} to ${state.newValue}`);
    });

exampleScript.OnUpdate = () => {
    if (myOption.GetValue() === 10) {
        console.log('Value equal 10');
    } else {
        console.log('Value NOT equal 10');
    }
};

RegisterScript(exampleScript);

# AddComboBox

Создаёт селектор, который позволяет выбрать точное значение из списка

Аргументы:

  • whereAt - Array<string>
  • name - string
  • values - Array<string>
  • defaultValueIndex - number

Пример использования:

let exampleScript = {};

const weathers = ['Default', 'Snow', 'Rain', 'Moonbeam', 'Pestilence', 'Harvest', 'Sirocco', 'Spring'];

let weatherStyleIndex = Menu.AddComboBox(
    ['General', 'Weather Changer'], // whereAt
    'Weather Name', // name
    weathers, // values
    0 // defaultValueIndex
)
    .OnChange(state => (weatherStyleIndex = state.newValue))
    .GetValue();

exampleScript.OnUpdate = () => {
    console.log(`Current weather ${weathers[weatherStyleIndex]}`);
};

RegisterScript(exampleScript);

# AddInputBox

Создаёт поле для ввода

Аргументы:

  • whereAt - Array<string>
  • name - string
  • defaultValue - string

Пример использования:

let exampleScript = {};

let inputBoxValue = Menu.AddInputBox(
    ['My', 'Own', 'Path'], // whereAt
    'Input Box', // name
    'Test' // defaultValue
)
    .SetNameLocale(locale, loc(locale, "weatherChanger", "type"))
    .OnChange(state => (inputBoxValue = state.newValue))
    .GetValue();

exampleScript.OnUpdate = () => {
    console.log(`Current input box value ${inputBoxValue}`);
};

RegisterScript(exampleScript);

# AddKeyBind

Добавляет возможность назначать бинд на кнопку через меню

Аргументы:

Пример использования:

let exampleScript = {};

let keybindHandle = Menu.AddKeyBind(['My', 'Own', 'Path'], 'Key Bind Example', Enum.ButtonCode.KEY_G);

exampleScript.OnUpdate = () => {
    if(Menu.IsKeyDown(keybindHandle)) {
        console.log('Bind pressed');
    }
};

RegisterScript(exampleScript);

# SetOrdering

Устанавливает позицию элемента. По умолчанию у всех элементов позиция 0, а сортировка происходит по дате создания элемента (ранее созданные находятся выше).

Аргументы:

  • handle - MenuOptionHandler | Array<string>; можно передавать непосредственно хендлы элементов, а можно передавать пути (см. примеры)
  • value - number; от -2147483648 до +2147483647. Чем выше значение, тем выше будет элемент.

Пример использования:

let exampleScript = {};

Menu.AddToggle(['Ordering Example'], 'The last element', false);
let handle1 = Menu.AddToggle(['Ordering Example'], 'First element', false);
let handle2 = Menu.AddToggle(['Ordering Example'], 'Second element', false);

Menu.SetOrdering(['Ordering Example', 'The last element'], -1); // Пример сортировки по пути эл-та
Menu.SetOrdering(handle1, 1);
Menu.SetOrdering(handle2, 0); // Эта строка необязательна, так как у всех элементов по умолчанию стоит 0 

RegisterScript(exampleScript);

# GetLocale

Получает код текущего языка в меню

Возвращаемые значения:

  • ru | en | cn

# GetValue

Получает значение элемента в меню с помощью хендла

Аргументы:

  • handle - MenuOptionHandler

Возвращаемые значения:

  • В зависимости от типа элемента меню

# SetValue

Устанавливает значение элемента в меню с помощью хендла

Аргументы:

  • handle - MenuOptionHandler
  • value - в зависимости от типа элемента меню

# IsKeyDown

Проверяет нажата ли кнопка по хендлу меню

Аргументы:

  • handle

Возвращаемые значения:

  • true | false

Пример использования: cм. Menu.AddKeyBind

# IsKeyDownOnce

Алгоритм работы схож с Menu.IsKeyDown, принципиальное отличие в задержке нажатия. Этот бинд будет срабатывать 1 раз в ~200мс

Аргументы:

  • handle

Возвращаемые значения:

  • true | false

Пример использования: cм. Menu.AddKeyBind

# SetImage

Устанавливает изображение для опции

Аргументы:

  • whereAt - MenuOptionHandler | Array<string>
  • imagePath - string; путь до изображения в папке Dota 2 или VPK-архиве. Пример: panorama/images/heroes/icons/npc_dota_hero_rubick_png.vtex_c

# RemoveOption

Удаляет опцию меню с помощью хендла

Аргументы:

  • handle - MenuOptionHandler

Пример использования:

let exampleScript = {};

// Если бинд будет нажат, опция удалится из меню
let handle = Menu.AddKeyBind(['My', 'Own', 'Path'], 'Bind', Enum.ButtonCode.KEY_F1);

exampleScript.OnUpdate = () => {
    if(handle) {
        if(Menu.IsKeyDown(handle)) {
            Menu.RemoveOption(handle);
            handle = null;
        }  
    }
};

RegisterScript(exampleScript);

ВНИМАНИЕ

Эта зона документация находится в процессе дополнения 😃