Створення скриптів в GTA 5 на C#: інтерактивне меню за допомогою NativeUI: частина перша
![](/uploads/posts/2018-11/1637945198_3719_bp.jpg)
NativeUI - багатофункціональний плагін, що дозволяє працювати з графічним інтерфейсом GTA 5: створювати меню, тексти, виводити на екран текстури та багато іншого. Мене звуть Пейдж, і сьогодні ми створимо з тобою повноцінне робоче меню. Урок розділений на дві частини, рекомендую читати їх по порядку.
Для роботи знадобиться:
* ScriptHookVDotNet
* NativeUI
* Базові знання мови C# та роботи в Visual Studio.
Початок роботи
Відкрий Visual Studio та створи новий проект.
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541967346_1.png)
Додай у проект ScriptHookVDotNet.dll та NativeUI.dll
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541967343_skrin2.png)
Також підключи до проекту стандартні бібліотеки System. Windows. Forms та System. Drawing:
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541967377_skrin3.png)
Після цього додай простір імен у початок проекту:
Допишемо налаштування, щоб наш клас успадкував GTA.Script:
Тепер кілька слів про NativeUI. Всі створені меню містяться в MenuPool. Нам потрібно створити головне меню, в яке потім можна помістити всі інші підменю. Давай зробимо це!
Додамо конструктор, який буде запускати створені нами класи:
Розберемо цей код:
modMenuPool = new MenuPool();
Створює екземпляр класу menuPool, щоб додати його в пул всіх створених меню.
mainMenu = new UIMenu("Mod Menu", "ВИБЕРІТЬ ОПЦІЮ");
Створює основу меню з заголовком "Mod Menu" та підзаголовком "Виберіть опцію". Ти можеш вписати сюди що завгодно, в тому числі й українською мовою. Останній рядок коду додає наше створене меню (mainMenu) в modMenuPool.
Тепер додамо основні події (onkeydown, OnTick):
Також необхідно дописати функцію menuPool.ProcessMenus, інакше наше меню не буде відображатися на екрані:
Тепер зробимо відкриття та закриття меню по натисканню клавіші. Робиться це дуже просто:
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541968223_skrin10.png)
Давай перевіримо працездатність нашого коду в грі:
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541968148_gta5-2018-11-11-21-43-30-26.png)
Як бачиш, наше меню поки що порожнє, але воно працює! Давай додамо пункт у меню, який буде знімати розшук з гравця. Зробимо це за допомогою приватної функції:
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541968407_skrin11.png)
Спочатку оголосимо глобальну змінну resetWantedLevel типу UIMenuItem, значення якої встановлюється в функції Setup. Це додасть у меню пункт, але при його виборі нічого не відбудеться. Для його активації нам потрібно використовувати подію, яка є вбудованим класом NativeUI:
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541968606_skrin12.png)
Ця подія викликається щоразу, коли ми вибираємо пункт меню, і повертає ID цього пункту. Таким чином, ми можемо легко розширити наше меню, додавши більше різних пунктів, і легко відстежуючи, який був обраний. Однак давай реалізуємо наш базовий функціонал скидання рівня:
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541968705_skrin13.png)
Протестуємо скрипт в грі!
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541968692_gta5-2018-11-11-22-10-40-22.png)
Якщо ти зробив усе правильно, скрипт має працювати. Якщо щось пішло не так, пиши в коментарях і я постараюся тобі допомогти!
Тепер трохи ускладнимо наше меню і додамо можливість вибрати будь-яку зброю, яка є в грі. Для цього створимо підменю.
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541968742_skrin14.png)
Це створює підменю всередині нашого mainMenu з заголовком "Вибір зброї". Ми скористаємося функцією UIMenuListItem, за допомогою якої створимо динамічний список, перебравши в циклі всю існуючу в грі зброю.
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541968824_skrin15.png)
Тут починається найскладніша частина. Нам потрібно отримати всі значення з масиву WeaponHash і викинути їх в WeaponHash:
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541968843_skrin16.png)
Тепер у нас є всі хеші зброї. Давай налаштуємо нашу другу половину меню:
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541968914_skrin17.png)
Щоб не створювати ще одну подію, можна помістити весь код в одну функцію, і робиться це наступним чином:
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541969043_skrin18.png)
Тепер додамо в наше меню кнопку вибору зброї:
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541969179_skrin19.png)
Тепер нам необхідно отримати хеш обраної зброї з раніше створеного списку. Для цього додамо наступний код:
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541969225_skrin20.png)
Повернемося на початок коду і пропишемо в паблік наші створені функції:
Усе готово, вирушаємо в гру!
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541969329_gta5-2018-11-11-23-07-53-93.png)
![Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая](https://libertycity.ru/uploads/posts/2018-11/thumbs/1541969376_gta5-2018-11-11-23-07-49-32.png)
Завдання
Прочитай другу частину цього уроку. Там ти знайдеш завдання, за яке зможеш отримати невелику винагороду на сайті. Бажаю удачі!
Рекомендуемые файлы
Створювач і розробник - Evgenii Sokolov
При використанні матеріалів посилання на LibertyCity.Ru обов'язкове.