Это старая версия документа!
Содержание
Lua скрипты в Remixed Pixel Dungeon.
Вступление
Скрипты в rpd реализованы с помощью luaj 3.0.1 - реализации языка lua 5.2 в jvm.
Благодаря библиотеке luajava ( её реализации в luaj ) с помощью скриптов можно менять всё, однако такой подход потребует хорошего знания java, lua и всей кодовой базы rpd, наша же цель сделать моддинг (процесс создания модов ) - максимально простым (насколько это возможно при разумных затратах времени на создание инструментов).
Ниже последует описание некоторых уже реализованных возможностей скриптинга:
Ловушки (Они же триггеры)
Ловушка ( LevelObject - Trap ) объект который активируется когда на него наступает герой (или моб, или падает предмет в засимости от параметров). При активации Trap может имитировать поведение одной из базовых ловушек или выполнить скрипт.
На вход скрипт получает индекс клетки где должен сработать, существо которое привело тригер в действие и строку указанную в описании ловушки.
Например так будет выглядеть описание тригера который просто покажет текст:
{ "kind":"Trap", "x":9, "y":9, "uses":1, "trapKind":"scriptFile", "script":"scripts/TrapMessage", "data":"This is test Message", }
А код файла scripts/TrapMessage.lua будет таким:
local RPD = require "scripts/commonClasses" local trap = require"scripts/TrapCommon" -- return trap.init( function (cell, char, data) local wnd = RPD.new(RPD.Objects.Ui.WndMessage,data) RPD.GameScene:show(wnd) end )
Акторы
Актор - это такая бесплотная сущность которая существует на уровне и переодически что-то делает.
Актора можно подцепить к уровню в Dungeon.json например так:
"hotLevel":{"kind":"PredesignedLevel", "depth":0, "file":"levelsDesc/TestLevelSewers.json","script":"scripts/Burn"} "script":"scripts/Burn"