Создание скриптов в GTA 5 на C#: c чего начать? Часть вторая

17 листопада 2018
Пейдж


Привет. Если ты не видел первую часть гайда, то обязательно прочти. Сегодня мы продолжим знакомиться со скриптингом в GTA 5. Наш второй урок будет посвящен:
* Вызову нативных функций;
* Знакомству с векторами: что это, как с ними работать и как написать с их помощью простенький спавнер автомобилей;
* Как проводить различные манипуляции с автомобилем с помощью скрипта;
Если будут вопросы по данному материалу, ты можешь обращаться в комментарии под этим руководством!


Нативные функции
В игре свыше 5 тысяч различных функций, которые можно использовать в скриптинге. Все они представлены в виде так называемых хэшей. Для удобства им были придуманы читабельные названия. ScriptHookVDotNet уже имеет встроенные функции, но далеко не все из них были добавлены.
Alexander Blade, создатель ScriptHookV, собрал все функции в едино, их можно найти, перейдя по этой ссылке. Мы с редакцией LibertyCity работаем над собственной базой функций и в будущем обязательно представим её пользователям.
Эти функции предназначены для использования в C++. Но как написать их на языке C#? Довольно просто:
GTA.Native.Function.Call(GTA.Native.Hash._НАЗВАНИЕ ФУНКЦИИ, ПАРАМЕТРЫ);

Например, отключить свет во всем штате Сан Андреас можно функцией World.SetBlackout(true);
А можно вызвать её таким образом:
GTA.Native.Function.Call(GTA.Native.Hash._SET_BLACKOUT, true);

Интересный факт: данная функция была добавлена в игру с обновлением "Ограбления" и используется в ограблении Humane Labs. Данная функция полностью отключает все световые эффекты на объектах, машинах и персонажах, создавая самую натуральную темноту.



Векторы
Для определения позиции в GTA 5 использует векторы. Существует два типа векторов: Vector2 и Vector3. Vector3 используется для определения позиции в пространстве и состоит из трёх координат: X, Y и Z . Vector2 определяют позицию экрана и состоит из двух параметров: X и Y. Пока что не будем вдаваться в подробности Vector2, а сразу перейдем к примеру использования Vector3, чтобы вам было понятнее. Например, я хочу создать автомобиль в пяти метрах от игрока. Для этого мы получим позицию игрока, прибавим к координате Y 5 игровых метров и создадим автомобиль в этой позиции.
var position = Game.Player.Character.GetOffsetInWorldCoords(new Vector3(0, 5, 0));

Game.Player.Character - ваш персонаж. Более подробно об её использовании мы поговорим в другой части нашего урока. В position записывается наш вектор с позицией.
Чтобы автомобиль появился прямо перед вами, а не позади или сбоку, возьмем текущий угол поворота игрока и отнимем 90 градусов:
var heading = Game.Player.Character.Heading - 90;

Теперь создаем на этих координатах наш автомобиль:
var vehicle = World.CreateVehicle(VehicleHash.Dubsta, position, heading); // создаем машину под названием Dubsta



Манипуляции с автомобилем (и не только)
Создавая любой игровой предмет в игре, его данные записываются в переменную - так называемый хендл. Говоря простым языком - мы можем легко выделить предмет и манипулировать этим предметом.
Возьмем в пример автомобиль, который мы создавали раннее.
var vehicle = World.CreateVehicle(VehicleHash.Dubsta, position, heading);

Данные об автомобиле были записаны в переменную vehicle. Вы можете дать переменной любое имя. Используя эту переменную, мы можем совершать различные действия с этим автомобилем. Например, я его взорву.
GTA.Native.Function.Call(GTA.Native.Hash.EXPLODE_VEHICLE, vehicle, true, true);

Первый параметр - хэндл нашего автомобиля
Второй параметр - звук взрыва (true - звук есть, false - звука нет)
Третий параметр - видимость эффекта (true - видимый взрыв, false - невидимый взрыв).
Всё это я посмотрела в базе от Alexander Blade. Правда она на английском, поэтому базовые владения английским языком (или переводчиком) будут кстати. Я и администрация сайта работаем над русификацией базы и уведомим тебя и остальных пользователей, когда она будет готова.
Ожидайте следующую часть урока! Добавьте меня в друзья, чтобы не пропускать новых руководств. Удачи с освоением скриптинга!
Рейтинг: 5 (4 голосів)