ru:rpd:mods_scripts
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версияСледующая версияСледующая версия справа и слева | ||
ru:rpd:mods_scripts [2017/11/12 19:32] – [Storage] mike | ru:rpd:mods_scripts [2017/11/26 20:37] – [Storage] mike | ||
---|---|---|---|
Строка 6: | Строка 6: | ||
Благодаря библиотеке luajava ( её реализации в luaj ) с помощью скриптов можно менять **всё**, однако такой | Благодаря библиотеке luajava ( её реализации в luaj ) с помощью скриптов можно менять **всё**, однако такой | ||
+ | |||
+ | Общая структура скриптов в моде: | ||
+ | |||
+ | * корневая папка мода | ||
+ | * scripts - корневая папка для скриптов | ||
+ | * lib - библиотеки RPD и другие, | ||
+ | * actors - тут лежат уже готовые акторы | ||
+ | * traps - тут лежат уже готовые ловушки | ||
+ | |||
+ | Скрипты основных библиотек имеют имена файлов в camelCase, пользовательские же скрипты предпочтительно именовать в CamelCase. | ||
Ниже последует описание некоторых уже реализованных возможностей скриптинга: | Ниже последует описание некоторых уже реализованных возможностей скриптинга: | ||
Строка 27: | Строка 37: | ||
} | } | ||
- | А код файла scripts/TrapMessage.lua будет таким: | + | Посмотрите для примера на код файла |
- | + | ||
- | local RPD = require "scripts/commonClasses" | + | |
- | local trap = require" | + | |
- | -- | + | |
- | return trap.init( | + | |
- | function (cell, char, data) | + | |
- | local wnd = RPD.new(RPD.Objects.Ui.WndMessage, | + | |
- | RPD.GameScene: | + | |
- | end | + | |
- | ) | + | |
====== Акторы ====== | ====== Акторы ====== | ||
Строка 56: | Строка 55: | ||
Или же можно подцепить актора к уровню из любого другого скрипта ( например активируемого триггером ) примерно так: | Или же можно подцепить актора к уровню из любого другого скрипта ( например активируемого триггером ) примерно так: | ||
| | ||
- | | + | '' |
| | ||
- | Сам же scripts/ | + | А вот и пример [[https:// |
+ | |||
+ | ====== Мобы ====== | ||
+ | Мобы ( а с ними и NPC ) в обилии населяют город и подземелье. | ||
+ | |||
+ | Для некоторых из них ( [[custommob|для кастомных]] ) можно задавать скрипты описывающие некоторые события в его жизни. | ||
+ | |||
+ | Сейчас это: | ||
+ | |||
+ | * Смерть ( пример - [[https:// | ||
+ | * Взаимодействие с героем ( пример - [[https:// | ||
- | local RPD = require " | ||
- | local actor = require " | ||
- | return actor.init({ | ||
- | act = function() | ||
- | local levelSize = RPD.Dungeon.level: | ||
- | local cell = math.random(levelSize)-1 | ||
- | if not RPD.Dungeon.level.solid[cell] then | ||
- | RPD.GameScene: | ||
- | end | ||
- | return true | ||
- | end, | ||
- | actionTime = function() | ||
- | return 1 | ||
- | end, | ||
- | activate = function() | ||
- | local wnd = RPD.new(RPD.Objects.Ui.WndStory," | ||
- | | ||
- | end | ||
- | }) | ||
- | | ||
====== Библиотеки ====== | ====== Библиотеки ====== | ||
В этом разделе будут описаны встроенные библиотеки облегчающие жизнь мододела | В этом разделе будут описаны встроенные библиотеки облегчающие жизнь мододела | ||
+ | |||
+ | ===== CommonClasses ===== | ||
+ | |||
+ | Модуль '' | ||
+ | |||
+ | Например: | ||
+ | |||
+ | Остальные элементы RPD содержат привязки классов которые интересны для скриптов только статическими методами и/ | ||
+ | |||
+ | Списки некоторых классов приведены ниже: | ||
+ | |||
+ | ==== Основные классы RPD ==== | ||
+ | |||
+ | Общий список доступных для lua классов можно увидеть по [[https:// | ||
+ | |||
+ | === Блобы === | ||
+ | Блобы - это жидкости, | ||
+ | |||
+ | '' | ||
+ | |||
+ | Где оно будет (или нет) как-то взаимодействовать с героем, | ||
+ | |||
+ | Список блобов: | ||
+ | < | ||
+ | * Fire | ||
+ | * Foliage | ||
+ | * ConfusionGas | ||
+ | * LiquidFlame | ||
+ | * ParalyticGas | ||
+ | * Darkness | ||
+ | * Web | ||
+ | * ToxicGas | ||
+ | * Regrowth | ||
+ | </ | ||
===== Storage ===== | ===== Storage ===== | ||
Строка 99: | Строка 122: | ||
Данные сохраняются в тех же файлах что и сейвы, а значит подчиняются всем правилам связанным классами и модами. Для сериализации/ | Данные сохраняются в тех же файлах что и сейвы, а значит подчиняются всем правилам связанным классами и модами. Для сериализации/ | ||
- | В качестве примера давайте рассмотрим [[https:// | + | В качестве примера давайте рассмотрим [[https:// |
+ | |||
+ | ===== Quest ===== | ||
+ | |||
+ | Модуль '' |
ru/rpd/mods_scripts.txt · Последнее изменение: 2020/07/30 19:59 — mike