Создание скриптов в GTA 5 на C#: интерактивное меню с помощью NativeUI: часть первая
NativeUI - многофункциональный плагин, позволяющий работать с графическим интерфейсом GTA 5: создавать меню, тексты, выводить на экран текстуры и многое другое. Меня зовут Пейдж и сегодня мы создадим с тобой полноценное рабочее меню. Урок разделен на две части, рекомендую читать их по порядку.
Для работы потребуется:
* ScriptHookVDotNet
* NativeUI
* Базовые знания языка C# и работы в Visual Studio.
Начало работы
Открой Visual Studio и создай новый проект.
Добавь в проект ScriptHookVDotNet.dll и NativeUI.dll
Так же подключи к проекту стандартные библиотеки System.Windows.Forms и System.Drawing:
После этого добавь пространство имен в начало проекта:
Допишем настройки, чтобы наш класс унаследовал GTA.Script:
Теперь пару слов о NativeUI. Все созданные меню содержатся в MenuPool. Нам нужно создать главное меню, в которое затем можно поместить все остальные подменю. Давай сделаем это!
Добавим конструктор, который будет запускать созданные нами классы:
Разберем данный код:
modMenuPool = new MenuPool();
Создает экземпляр класса menuPool, чтобы добавить его в пул всех созданных меню.
mainMenu = new UIMenu("Mod Menu", "ВЫБЕРИТЕ ОПЦИЮ");
Создает основу меню с заголовком "Mod Menu" и подзаголовком "Выберите опцию". Ты можешь вписать сюда что угодно, в том числе и на русском языке. Последняя строчка кода добавляет наше созданное меню (mainMenu) в modMenuPool.
Теперь добавим основные события (onkeydown, OnTick):
Так же необходимо дописать функцию menuPool.ProcessMenus, иначе наше меню не будет отображаться на экране:
Теперь сделаем открытие и закрытие меню по нажатию клавиши. Делается это очень просто:
Давай проверим работоспособность нашего кода в игре:
Как видишь, наше меню пока что пустое, но оно работает! Давай добавим пункт в меню, который будет снимать розыск с игрока. Сделаем это с помощью приватной функции:
Сначала объявляем глобальную переменную resetWantedLevel типа UIMenuItem, значение которой устанавливается в функции Setup. Это добавит в меню пункт, но при его выборе ничего не произойдет. Для его активации нам нужно использовать событие, которое является встроенным классом NativeUI:
Это событие вызывается всякий раз, когда мы выбираем пункт меню, и возвращает ID этого пункта. Таким образом, мы можем легко расширить наше меню, добавив больше различных пунктов, и легко отслеживая, какой был выбран. Однако давай реализуем наш базовый функционал сброса уровня:
Протестируем скрипт в игре!
Если ты сделал всё правильно, скрипт должен работать. Если что-то пошло не так, пиши в комментариях и я постараюсь тебе помочь!
Теперь немного усложним наше меню и добавим возможность выбрать любое оружие, которое есть в игре. Для этого создадим подменю.
Это создает подменю внутри нашего mainMenu с заголовком "Выбор оружия". Мы воспользуемся функцией UIMenuListItem, с помощью которой создадим динамический список, перебрав в цикле всё существующее в игре оружие.
Здесь начинается самая сложная часть. Нам нужно получить все значения из массива WeaponHash и бросить их в WeaponHash:
Теперь у нас есть все хеши оружия. Давай настроим нашу вторую половину меню:
Чтобы не создавать ещё одно событие, можно поместить весь код в одну функцию, и делается это следующим образом:
Теперь добавим в наше меню кнопку выбора оружия:
Теперь нам необходимо получить хеш выбранного оружия из раннее созданного списка. Для этого добавим следующий код:
Вернемся к началу кода и пропишем в паблик наши созданные функции:
Всё готово, отправляемся в игру!
Задание
Прочитай вторую часть данного урока. Там ты найдешь задание, за которое сможешь получить небольшое вознаграждение на сайте. Желаю удачи!
Рекомендуемые файлы
ASSC (Anti Social Social Club) Grey Hoodie White Title 1.0
Airbus A380-800 F-WWDD Etihad Titles
Custom Wasted/Busted Title
GTA 3 titles upscaled
GTA SA Style loadscreens
Сайлент Хилл. Тизер.
DYOM# v1.7
[RU] Новый русификатор для GTA 3 Definitive Edition v2.1.2 Remastered
CLEO Redux v1.2.2
[RU] GTA San Andreas - Миссии 27-28 (Русская озвучка)
Emotion 98.3 (Advanced Track Player)
Интро ролик GTA SA с участием Young Maylay
Создатель и разработчик - Evgenii Sokolov
При копировании материалов ссылка на LibertyCity.Ru обязательна.