Инструменты пользователя

Инструменты сайта


ru:rpd:mods_scripts

Это старая версия документа!


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"
ru/rpd/mods_scripts.1510423990.txt.gz · Последнее изменение: 2017/11/11 18:13 — mike