mirror of
https://github.com/vcmi/vcmi.git
synced 2025-02-19 19:10:20 +02:00
Added missing file
This commit is contained in:
parent
4cb10460a8
commit
0f07870f4b
209
docs/lua.md
Normal file
209
docs/lua.md
Normal file
@ -0,0 +1,209 @@
|
|||||||
|
# Configuration
|
||||||
|
|
||||||
|
``` javascript
|
||||||
|
{
|
||||||
|
//general purpose script, Lua or ERM, runs on server
|
||||||
|
"myScript":
|
||||||
|
{
|
||||||
|
"source":"path/to/script/with/ext",
|
||||||
|
"implements":"ANYTHING"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
//custom battle spell effect, Lua only, runs on both client and server
|
||||||
|
//script ID will be used as effect 'type' (with mod prefix)
|
||||||
|
"mySpellEffect":
|
||||||
|
{
|
||||||
|
"source":"path/to/script/with/ext",
|
||||||
|
"implements":"BATTLE_EFFECT"
|
||||||
|
},
|
||||||
|
|
||||||
|
//TODO: object|building type
|
||||||
|
//custom map object or building, Lua only, runs on both client and server
|
||||||
|
//script ID will be used as 'handler' (with mod prefix)
|
||||||
|
"myObjectType":
|
||||||
|
{
|
||||||
|
"source":"path/to/script/with/ext",
|
||||||
|
"implements":"MAP_OBJECT"
|
||||||
|
},
|
||||||
|
//TODO: server query
|
||||||
|
//TODO: client query
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
# Lua
|
||||||
|
|
||||||
|
## API Reference
|
||||||
|
|
||||||
|
TODO **In near future Lua API may change drastically several times.
|
||||||
|
Information here may be outdated**
|
||||||
|
|
||||||
|
### Globals
|
||||||
|
|
||||||
|
- DATA - persistent table
|
||||||
|
- DATA.ERM contains ERM state, anything else is free to use.
|
||||||
|
- GAME - IGameInfoCallback API
|
||||||
|
- BATTLE - IBattleInfoCallback API
|
||||||
|
- EVENT_BUS - opaque handle, for use with events API
|
||||||
|
- SERVICES - root "raw" access to all static game objects
|
||||||
|
- SERVICES:artifacts()
|
||||||
|
- SERVICES:creatures()
|
||||||
|
- SERVICES:factions()
|
||||||
|
- SERVICES:heroClasses()
|
||||||
|
- SERVICES:heroTypes()
|
||||||
|
- SERVICES:spells()
|
||||||
|
- SERVICES:skills()
|
||||||
|
- require(URI)
|
||||||
|
- works similar to usual Lua require
|
||||||
|
- require("ClassName") - loads additional API and returns it as
|
||||||
|
table (for C++ classes)
|
||||||
|
- require("core:relative.path.to.module") - loads module from
|
||||||
|
"SCRIPTS/LIB"
|
||||||
|
- TODO require("modName:relative.path.to.module") - loads module
|
||||||
|
from dependent mod
|
||||||
|
- TODO require(":relative.path.to.module") - loads module from
|
||||||
|
same mod
|
||||||
|
- logError(text) - backup error log function
|
||||||
|
|
||||||
|
### Low level events API
|
||||||
|
|
||||||
|
``` Lua
|
||||||
|
|
||||||
|
-- Each event type must be loaded first
|
||||||
|
local PlayerGotTurn = require("events.PlayerGotTurn")
|
||||||
|
|
||||||
|
-- in this example subscription handles made global, do so if there is no better place
|
||||||
|
-- !!! do not store them in local variables
|
||||||
|
sub1 = PlayerGotTurn.subscribeAfter(EVENT_BUS, function(event)
|
||||||
|
--do smth
|
||||||
|
end)
|
||||||
|
|
||||||
|
sub2 = PlayerGotTurn.subscribeBefore(EVENT_BUS, function(event)
|
||||||
|
--do smth
|
||||||
|
end)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Lua standard library
|
||||||
|
|
||||||
|
VCMI uses LuaJIT, which is Lua 5.1 API, see [upstream
|
||||||
|
documentation](https://www.lua.org/manual/5.1/manual.html)
|
||||||
|
|
||||||
|
Following libraries are supported
|
||||||
|
|
||||||
|
- base
|
||||||
|
- table
|
||||||
|
- string
|
||||||
|
- math
|
||||||
|
- bit
|
||||||
|
|
||||||
|
# ERM
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- no strict limit on function/variable numbers (technical limit 32 bit
|
||||||
|
integer except 0))
|
||||||
|
- TODO semi compare
|
||||||
|
- DONE macros
|
||||||
|
|
||||||
|
## Bugs
|
||||||
|
|
||||||
|
- TODO Broken XOR support (clashes with \`X\` option)
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
|
||||||
|
- TODO **!?AE** Equip/Unequip artifact
|
||||||
|
- WIP **!?BA** when any battle occurs
|
||||||
|
- WIP **!?BF** when a battlefield is prepared for a battle
|
||||||
|
- TODO **!?BG** at every action taken by any stack or by the hero
|
||||||
|
- TODO **!?BR** at every turn of a battle
|
||||||
|
- *!?CM (client only) click the mouse button.*
|
||||||
|
- TODO **!?CO** Commander triggers
|
||||||
|
- TODO **!?DL** Custom dialogs
|
||||||
|
- DONE **!?FU** function
|
||||||
|
- TODO **!?GE** "global" event
|
||||||
|
- TODO **!?GM** Saving/Loading
|
||||||
|
- TODO **!?HE** when the hero \# is attacked by an enemy hero or
|
||||||
|
visited by an allied hero
|
||||||
|
- TODO **!?HL** hero gains a level
|
||||||
|
- TODO **!?HM** every step a hero \# takes
|
||||||
|
- *!?IP Multiplayer support.*
|
||||||
|
- TODO **!?LE** (!$LE) An Event on the map
|
||||||
|
- WIP **!?MF** stack taking physical damage(before an action)
|
||||||
|
- TODO **!?MG** casting on the adventure map
|
||||||
|
- *!?MM scroll text during a battle*
|
||||||
|
- TODO **!?MR** Magic resistance
|
||||||
|
- TODO **!?MW** Wandering Monsters
|
||||||
|
- WIP **!?OB** (!$OB) visiting objects
|
||||||
|
- DONE **!?PI** Post Instruction.
|
||||||
|
- TODO **!?SN** Sound and ERA extensions
|
||||||
|
- *!?TH town hall*
|
||||||
|
- TODO **!?TL** Real-Time Timer
|
||||||
|
- TODO **!?TM** timed events
|
||||||
|
|
||||||
|
## Receivers
|
||||||
|
|
||||||
|
### VCMI
|
||||||
|
|
||||||
|
- **!!MC:S@varName@** - declare new "normal" variable (technically
|
||||||
|
v-var with string key)
|
||||||
|
- TODO Identifier resolver
|
||||||
|
- WIP Bonus system
|
||||||
|
|
||||||
|
### ERA
|
||||||
|
|
||||||
|
- DONE !!if !!el !!en
|
||||||
|
- TODO !!br !!co
|
||||||
|
- TODO !!SN:X
|
||||||
|
|
||||||
|
### WoG
|
||||||
|
|
||||||
|
- TODO !!AR Артефакт (ресурс) в определенной позиции
|
||||||
|
- TODO !!BA Битва
|
||||||
|
- !!BA:A$ return 1 for battle evaluation
|
||||||
|
- TODO !!BF Препятствия на поле боя
|
||||||
|
- TODO !!BG Действий монстров в бою
|
||||||
|
- TODO !!BH Действия героя в бою
|
||||||
|
- TODO !!BM Монстр в битве
|
||||||
|
- WIP !!BU Универсальные параметры битвы
|
||||||
|
- TODO !!CA Замок
|
||||||
|
- TODO !!CD Разрушения замков
|
||||||
|
- TODO !!CE События в замке
|
||||||
|
- TODO !!CM Клика мышью
|
||||||
|
- TODO !!DL Нестандартный диалог (только ТЕ или выше)
|
||||||
|
- TODO !!CO Командиры
|
||||||
|
- WIP !!DO Многократный вызов функции
|
||||||
|
- TODO !!EA Бонусы опыта существ
|
||||||
|
- TODO !!EX Опыт стека
|
||||||
|
- DONE !!FU Однократный вызов функции
|
||||||
|
- TODO !!GE Глобальное событие
|
||||||
|
- WIP !!HE Герой
|
||||||
|
- TODO !!HL Новый уровень героя
|
||||||
|
- TODO !!HO Взаимодействия героев
|
||||||
|
- TODO !!HT Подсказки по правому клику
|
||||||
|
- WIP !!IF Диалоги и флагов
|
||||||
|
- TODO !!IP Сетевой сервис битвы
|
||||||
|
- TODO !!LE Локальное события
|
||||||
|
- WIP !!MA Общие параметры монстров
|
||||||
|
- DONE !!MC Макросы
|
||||||
|
- WIP !!MF Получение физ. урона в бою
|
||||||
|
- TODO !!MM Текст в битве
|
||||||
|
- WIP !!MO Монстр в определенной позиции
|
||||||
|
- TODO !!MP Контроль MP3
|
||||||
|
- TODO !!MR Сопротивления магии
|
||||||
|
- TODO !!MW Бродячих монстров
|
||||||
|
- WIP !!OB Объект в определенной позиции
|
||||||
|
- TODO !!OW Параметры игрока
|
||||||
|
- TODO !!PM Пирамиды или новые объекты
|
||||||
|
- TODO !!PO Информация квадрата карты
|
||||||
|
- TODO (???) !!QW Журнала
|
||||||
|
- TODO !!SN Проигрываемые звуков
|
||||||
|
- TODO !!SS Настройка заклинаний (только ТЕ или выше)
|
||||||
|
- TODO !!TL Контроль времени хода (только ТЕ или выше)
|
||||||
|
- TODO !!TM Временный таймер
|
||||||
|
- TODO !!TR Квадрата карты (почва, проходимость, т.п.)
|
||||||
|
- TODO !!UN Универсальная команда
|
||||||
|
- *!#VC Контроль переменных*
|
||||||
|
- WIP !!VR Установка переменных
|
||||||
|
|
||||||
|
## Persistence
|
Loading…
x
Reference in New Issue
Block a user