Українська

Создание скриптов в 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 5 на C#: интерактивное меню с помощью NativeUI: часть первая



Допишем настройки, чтобы наш класс унаследовал GTA.Script:

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



Теперь пару слов о NativeUI. Все созданные меню содержатся в MenuPool. Нам нужно создать главное меню, в которое затем можно поместить все остальные подменю. Давай сделаем это!

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



Добавим конструктор, который будет запускать созданные нами классы:

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



Разберем данный код:

modMenuPool = new MenuPool();

Создает экземпляр класса menuPool, чтобы добавить его в пул всех созданных меню.

mainMenu = new UIMenu("Mod Menu", "ВЫБЕРИТЕ ОПЦИЮ");

Создает основу меню с заголовком "Mod Menu" и подзаголовком "Выберите опцию". Ты можешь вписать сюда что угодно, в том числе и на русском языке. Последняя строчка кода добавляет наше созданное меню (mainMenu) в modMenuPool.

Теперь добавим основные события (onkeydown, OnTick):

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



Так же необходимо дописать функцию menuPool.ProcessMenus, иначе наше меню не будет отображаться на экране:

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



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

Создание скриптов в 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: часть первая

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



Задание

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

Рейтинг: 5 (3 голосів)

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