Урок dota 2 lua скриптинг

Мета даного уроку - дати введення в систему скриптів використовувану в Dota 2, і трохи рад і прийомів в їх розробці. Передбачається що ви знайомі з базовими поняттями ООП і Lua. Так само бажано використовувати Notepad ++ або Sublime Text

Ми будемо працювати в папці ваш_аддон / scripts / vscripts. Коли ваш аддон завантажений движком Dota 2 виконуються два файли addon_init.lua і після цього addon_game_mode.lua. Згідно з правилами ці файли не ваші головні файли, а просто файли, які необхідні. Будемо вважати що ми маємо об'єкти нашого проекту в addon_main.lua - це і є головний файл.

addon_init.lua
Цей файл виконується першим і як правило глобальні функції викликаються в ньому. Припустимо ми маємо два додаткових файлу в нашому аддоне: addon_main.lua (який містить опису об'єктів в вашому аддоні) і util.lua (що містить деякі утиліти - маленькі корисні функції).

У вашому випадку ваш addon_init.lua буде виглядати приблизно так:

addon_game_mode.lua

Цей файл виконується після addon_init.lua і відповідає за ініціалізацію аддона. Ось так виглядає приклад:

Ядро вашого доповнення

Давайте поглянемо на addon_main.lua - це ядро ​​вашого мода. Якщо ми залишимо головний код, то побачимо це:

розширене ядро

Додамо деякі базові функції за допомогою подій (Events) і команди, які можуть бути викликані з призначеного для користувача інтерфейсу.

Події будуються в ігровому движку і можуть бути викликані, коли в грі сталося щось. Є багато подій, наприклад такі як dota_roshan_kill. dota_courier_lost і dota_player_gained_level. Більшість подій мають деякі додаткові атрибути, наприклад в подію dota_player_gained_level є PlayerID і рівень. Ви також можете налаштувати свої власні події в scripts / custom_events.txt.

Так як же використовувати ці події? Є два основних компоненти для використання скриптів в вашому моді - listener (слухач) і handler (обробник).
Listener задає подія і як тільки це відбувається, відразу ж виконується функція, задана у властивостях Listener. Ви можете задати слухача всюди, але як правило, це робиться в функції ініціалізації. Шматочок налаштувань слухача:

приклад:
Припустимо, ми хочемо дати 1000 голди героям, які досягають 6 рівня. Додамо нашого Слухача в InitGameMode () наступним чином:

Тепер ми додаємо обробник для цієї події в якості нової функції в нашому CustomGameMode об'єкті, в даному прикладі це виглядає так:

Команди схожі на події - вони також спричиняються для виконання певних функцій. Різниця в тому, що ігровий движок не викликає ніяких команд, тільки ви можете викликати їх. Це кращий спосіб для взаємодії вашого призначеного для користувача інтерфейсу (Flash UI) і Lua скриптів.

Ми реєструємо приблизно таку команду

Тепер, коли сервер отримає Command1 X в своїй консолі, наша функція Оброблювач викликається з параметром X (параметр є рядком - string).

Припустимо у нас є кнопка в нашому UI, яка дозволяє гравцеві отримати очки здатності. З нашого UI ми викликаємо команду GiveAbilityPoints з показником того, скільки очок ми хочемо дати. Наприклад виклик команди може виглядати наступним чином: "GiveAbilityPoints 3", що дає 3 очка. Реєструємо це приблизно так:

Звичайно, ми повинні також додати обробник:

Поради та підказки

Друкуємо таблицю в консоль

Ви не можете побачити всі значення в таблиці. Ви можете вивести її в консоль за допомогою цієї функції. Просто викличте PrintTable (table).

Отримання предмета з інвентарю

Деякі функції вимагають предмети в якості вхідних даних, але ви не можете отримати імена предметів з інвентарю гравця. Якщо вам потрібно зробити це, використовуйте цей приклад:

Схожі статті