ru:rpd:mods_scripts
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| ru:rpd:mods_scripts [2017/11/11 18:20] – mike | ru:rpd:mods_scripts [2025/12/18 20:16] (текущий) – внешнее изменение 127.0.0.1 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | Lua скрипты в Remixed Pixel Dungeon. | ||
| + | ====== Вступление ====== | ||
| + | |||
| + | Скрипты в rpd реализованы с помощью [[http:// | ||
| + | |||
| + | Благодаря библиотеке luajava ( её реализации в luaj ) с помощью скриптов можно менять **всё**, однако такой | ||
| + | |||
| + | Общая структура скриптов в моде: | ||
| + | |||
| + | * корневая папка мода | ||
| + | * scripts - корневая папка для скриптов | ||
| + | * lib - библиотеки RPD и другие, | ||
| + | * actors - тут лежат уже готовые акторы | ||
| + | * traps - тут лежат уже готовые ловушки | ||
| + | |||
| + | Скрипты основных библиотек имеют имена файлов в camelCase, пользовательские же скрипты предпочтительно именовать в CamelCase. | ||
| + | |||
| + | Все файлы скриптов должны быть в кодировке UTF-8 без BOM. | ||
| + | |||
| + | Ниже последует описание некоторых уже реализованных возможностей скриптинга: | ||
| + | |||
| + | ====== Ловушки (Они же триггеры) ====== | ||
| + | |||
| + | Ловушка ( LevelObject - Trap ) объект, | ||
| + | |||
| + | На вход скрипт получает индекс клетки где должен сработать, | ||
| + | |||
| + | Например так будет выглядеть описание триггера который просто покажет текст: | ||
| + | |||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | |||
| + | Посмотрите для примера на код файла [[https:// | ||
| + | |||
| + | ====== Акторы ====== | ||
| + | |||
| + | Актор - это такая бесплотная сущность которая существует на уровне и периодически что-то делает. | ||
| + | |||
| + | В отличие от ловушки актор может реализовывать 3 метода: | ||
| + | * act - собственно действие, | ||
| + | * actionTime - возвращает время через которое актор активируется ещё раз | ||
| + | * activate - выполняется один раз при добавлении актора на уровень | ||
| + | |||
| + | Актора можно подцепить к уровню в Dungeon.json например так: | ||
| + | " | ||
| + | | ||
| + | " | ||
| + | |||
| + | Или же можно подцепить актора к уровню из любого другого скрипта ( например активируемого триггером ) примерно так: | ||
| + | | ||
| + | '' | ||
| + | | ||
| + | А вот и пример [[https:// | ||
| + | |||
| + | ====== Мобы ====== | ||
| + | Мобы ( а с ними и NPC ) в обилии населяют город и подземелье. | ||
| + | |||
| + | Для некоторых из них ( [[custommob|для кастомных]] ) можно задавать скрипты описывающие некоторые события в его жизни. | ||
| + | |||
| + | Сейчас это: | ||
| + | |||
| + | * Смерть ( пример - [[https:// | ||
| + | * Взаимодействие с героем ( пример - [[https:// | ||
| + | * Добавление моба на уровень (spawn) | ||
| + | * Получение урона | ||
| + | * Перемещение моба (move) - (пример - [[https:// | ||
| + | * Задание характеристик (stats) (пример - [[https:// | ||
| + | |||
| + | ====== Библиотеки ====== | ||
| + | |||
| + | В этом разделе будут описаны встроенные библиотеки облегчающие жизнь мододела | ||
| + | |||
| + | ===== CommonClasses ===== | ||
| + | |||
| + | Модуль '' | ||
| + | |||
| + | Например: | ||
| + | |||
| + | Остальные элементы RPD содержат привязки классов которые интересны для скриптов только статическими методами и/ | ||
| + | |||
| + | Списки некоторых классов приведены ниже: | ||
| + | |||
| + | ==== Основные классы RPD ==== | ||
| + | |||
| + | Общий список доступных для lua классов можно увидеть по [[https:// | ||
| + | |||
| + | === Блобы === | ||
| + | Блобы - это жидкости, | ||
| + | |||
| + | '' | ||
| + | |||
| + | Где оно будет (или нет) как-то взаимодействовать с героем, | ||
| + | |||
| + | Список блобов: | ||
| + | |||
| + | * Fire | ||
| + | * Foliage | ||
| + | * ConfusionGas | ||
| + | * LiquidFlame | ||
| + | * ParalyticGas | ||
| + | * Darkness | ||
| + | * Web | ||
| + | * ToxicGas | ||
| + | * Regrowth | ||
| + | |||
| + | |||
| + | ===== Storage ===== | ||
| + | |||
| + | Модуль '' | ||
| + | |||
| + | Для этого он предоставляет 4 метода: | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Ключом - может быть строка или число, значением же строка, | ||
| + | |||
| + | Данные сохраняются в тех же файлах что и сейвы, а значит подчиняются всем правилам связанным классами и модами. Для сериализации/ | ||
| + | |||
| + | В качестве примера давайте рассмотрим [[https:// | ||
| + | |||
| + | ===== Quest ===== | ||
| + | |||
| + | Модуль '' | ||
| + | |||
| + | ===== Mob ===== | ||
| + | |||
| + | Модуль '' | ||
