User:AVS/Scripting
From VCMI Project Wiki
Contents
Configuration
{
//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
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
- Lua standard library
- base
- table
- string
- math
- bit
ERM
Features
- 'v' and 'z' variables are almost equivalent
- 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 при одевании и снятии артефактов
- [WiP] !?BA в начале и конце битвы
- [WiP] !?BF при проработке поля боя (препятствия и т.п.)
- [Todo] !?BG при любом действии стека или героя в битве
- [Todo] !?BR в начале каждого раунда битвы
- [Todo] !?CM при клике мышкой
- [Todo] !?CO при действиях с командиром
- [Todo] !?DL при действиях с диалогом пользователя (только TE или выше)
- [Done] !?FU Содержит код функции
- [Todo] !?GE при появлении определенного глобального события
- [Todo] !?GM при загрузке и сохранении игры
- [Todo] !?HE при атаке или обмене (союз.) с определенным героем
- [Todo] !?HL при получении героем уровня
- [Todo] !?HM при каждом шаге героя
- [Todo] !?IP поддерживает мультиплеер
- [Todo] !?LE (!$LE) при (после) посещения локального события
- [WiP] !?MF при каждом нанесении физ. урона в битве
- [Todo] !?MG при наложении заклинаний на карте
- !?MM при появлении подсказок (в битве, окне города, т.п.)
- [Todo] !?MR при сопротивляемости существа заклинанию в битве
- [Todo] !?MW для Бродячих монстров
- [WiP] !?OB (!$OB) при или после посещения объекта(ов)
- [Done] !?PI пост-инструкция
- [Todo] !?SN при попытке игры воспроизвести любой звук
- !?TH при входе и выходе в городской холл
- [Todo] !?TL таймер реального времени (только ТЕ или выше)
- [Todo] !?TM Содержит код таймера
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 Установка переменных