Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая

13 ноября 2018
Пейдж

NativeUI - многофункциональный плагин, позволяющий работать с графическим интерфейсом GTA 5: создавать меню, тексты, выводить на экран текстуры и многое другое. Меня зовут Пейдж и сегодня мы создадим с тобой полноценное рабочее меню. Урок разделен на две части, рекомендую читать их по порядку.

Для работы потребуется:

* ScriptHookVDotNet

* NativeUI

* Базовые знания языка C# и работы в Visual Studio.

Начало работы

Открой Visual Studio и создай новый проект.

Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая

Добавь в проект ScriptHookVDotNet.dll и NativeUI.dll

Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая

Так же подключи к проекту стандартные библиотеки System.Windows.Forms и System.Drawing:

Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая

После этого добавь пространство имен в начало проекта:

Допишем настройки, чтобы наш класс унаследовал 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: часть первая

Как видишь, наше меню пока что пустое, но оно работает! Давай добавим пункт в меню, который будет снимать розыск с игрока. Сделаем это с помощью приватной функции:

Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая

Сначала объявляем глобальную переменную resetWantedLevel типа UIMenuItem, значение которой устанавливается в функции Setup. Это добавит в меню пункт, но при его выборе ничего не произойдет. Для его активации нам нужно использовать событие, которое является встроенным классом NativeUI:

Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая

Это событие вызывается всякий раз, когда мы выбираем пункт меню, и возвращает ID этого пункта. Таким образом, мы можем легко расширить наше меню, добавив больше различных пунктов, и легко отслеживая, какой был выбран. Однако давай реализуем наш базовый функционал сброса уровня:

Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая

Протестируем скрипт в игре!

Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая

Если ты сделал всё правильно, скрипт должен работать. Если что-то пошло не так, пиши в комментариях и я постараюсь тебе помочь!

Теперь немного усложним наше меню и добавим возможность выбрать любое оружие, которое есть в игре. Для этого создадим подменю.

Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая

Это создает подменю внутри нашего mainMenu с заголовком "Выбор оружия". Мы воспользуемся функцией UIMenuListItem, с помощью которой создадим динамический список, перебрав в цикле всё существующее в игре оружие.

Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая

Здесь начинается самая сложная часть. Нам нужно получить все значения из массива WeaponHash и бросить их в WeaponHash:

Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая

Теперь у нас есть все хеши оружия. Давай настроим нашу вторую половину меню:

Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая

Чтобы не создавать ещё одно событие, можно поместить весь код в одну функцию, и делается это следующим образом:

Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая

Теперь добавим в наше меню кнопку выбора оружия:

Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая

Теперь нам необходимо получить хеш выбранного оружия из раннее созданного списка. Для этого добавим следующий код:

Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая

Вернемся к началу кода и пропишем в паблик наши созданные функции:

Всё готово, отправляемся в игру!

Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая
Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая

Задание

Прочитай вторую часть данного урока. Там ты найдешь задание, за которое сможешь получить небольшое вознаграждение на сайте. Желаю удачи!

Рекомендуемые файлы