Привіт. Якщо ти не бачив першу частину гайда, то обов'язково прочитай. Сьогодні ми продовжимо знайомитися зі скриптингом в GTA 5. Наш другий урок буде присвячений:
* Виклику нативних функцій; * Знайомству з векторами: що це, як з ними працювати і як написати з їхньою допомогою простенький спавнер автомобілів; * Як проводити різні маніпуляції з автомобілем за допомогою скрипта;
Якщо будуть питання по даному матеріалу, ти можеш звертатися в коментарі під цим керівництвом!
Нативні функції
В грі більше 5 тисяч різних функцій, які можна використовувати в скриптингу. Усі вони представлені у вигляді так званих хешів. Для зручності їм були придумані читабельні назви. ScriptHookVDotNet вже має вбудовані функції, але далеко не всі з них були додані.
Alexander Blade, творець ScriptHookV, зібрав усі функції в єдине, їх можна знайти, перейшовши за цією ссилкою. Ми з редакцією LibertyCity працюємо над власною базою функцій і в майбутньому обов'язково представимо її користувачам.
Ці функції призначені для використання в C++. Але як написати їх на мові C#? Досить просто:
Цікавий факт: дана функція була додана в гру з оновленням "Грабежі" і використовується в пограбуванні 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. Ви можете дати змінній будь-яке ім'я. Використовуючи цю змінну, ми можемо здійснювати різні дії з цим автомобілем. Наприклад, я його вибухну.
Перший параметр - хендл нашого автомобіля Другий параметр - звук вибуху (true - звук є, false - звуку немає) Третій параметр - видимість ефекту (true - видимий вибух, false - невидимий вибух).
Все це я подивилася в базі від Alexander Blade. Правда, вона англійською, тому базові знання англійської мови (або перекладача) будуть до речі. Я і адміністрація сайту працюємо над русифікацією бази і повідомимо тебе та інших користувачів, коли вона буде готова.
Очікуйте наступну частину уроку! Додайте мене в друзі, щоб не пропустити нових посібників. Удачі з освоєнням скриптингу!