Створення скриптів у GTA 5 на 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 на C#: c чего начать? Часть вторая

Вектори

Для визначення позиції в 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. Правда, вона англійською, тому базові знання англійської мови (або перекладача) будуть до речі. Я і адміністрація сайту працюємо над русифікацією бази і повідомимо тебе та інших користувачів, коли вона буде готова.

Очікуйте наступну частину уроку! Додайте мене в друзі, щоб не пропустити нових посібників. Удачі з освоєнням скриптингу!

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