- •Справочник по скриптовому api HoMm V, версия 1.3
- •1. Про всякое.
- •2. Немножко про lua.
- •3. Реализация скрипт-системы в HoMmv.
- •Void print( s1, s2, ... )
- •Void print_to( sFileName, v1, v2, ... )
- •Void startThread( fProc, vParam1, vParam2, ... )
- •Void SetAiHeroAttractor( sObjectName, sHeroName, nPriority )
- •Void EnableHeroAi( sHeroName, bEnable )
- •Void UnreserveHero( sHeroName )
- •NCount GetHeroCreatures( sHeroName, nCreatureId )
- •Void AddHeroCreatures( sHeroName, nCreateureId, nCount )
- •Void RemoveHeroCreatures( sHeroName, nCreatureId, nCount )
- •Void GiveHeroWarMachine( sHeroName, nWarMachineId )
- •Void HasHeroWarMachine( sHeroName, nWarMachineId ) bool RemoveHeroWarMachine( sHeroName, nWarMachineId )
- •Void RemoveObject( sObjectName )
- •Bool IsObjectExists( sObjectName )
- •Bool IsObjectEnabled( sObjectName )
- •Void SetObjectEnabled( sObjectName, bEnable )
- •TsObjects GetObjectNamesByType( sObjectTypeSubstr )
- •Void AddObjectCreatures( sObjectName, nGreatureId, nCount ) nCount GetObjectCreatures( sObjectName, nCreatureId )
- •Void RemoveObjectCreatures( sObjectName, nCreatureId, nCount )
- •Void SetObjectDwellingCreatures( sObjectName, nCreatureId, nCount ) nCount GetObjectDwellingCreatures( sTownName, nCreatureId )
- •Void CreateArtifact( sArtName, nArtId, nX, nY, nFloorId )
- •Void CreateMonster( sMonsterName, nCreatureId, nCount, nX, nY, nFloorId, nMonsterMoodId, nCreatureCourageId )
- •Void StartDialogSceneInt( spDialogSceneXdb, sCallback, sSaveName )
- •Void StartCutSceneInt( spAnimSceneXdb, sCallback, sSaveName )
- •Void MessageBoxInt(spTxt, sCallback, sSaveName)
- •Void SetWarfogBehaviour( nOnLand, nOnSea )
- •Void Trigger(nTriggerType, ...)
- •Void StopTrigger()
- •Void PlayObjectAnimation( sObjectId, sAnimId, nAction )
- •3.3. Тактический режим.
- •3.3.1 Общее положение дел.
- •Void UnitDeath(sUnitName)
- •Void addUnit(nCreatureId, nSideId, nX, nY, nCount, sUnitName)
- •Void removeUnit( sUnitName )
- •Void UnitCastAimedSpell( sUnitName, nSpellId, sTarget)
- •Void UnitCastGlobalSpell( sUnitName, nSpellId )
- •Void UnitCastAreaSpell( sUnitName, nSpellId, nX, nY )
- •Void displace( sUnitName, nX, nY )
- •Number GetWarMachineType( sUnitName )
- •Number GetBuildingType( sUnitName )
- •SUnitName combatReadyPerson()
- •String unitNames()
Void RemoveObject( sObjectName )
Удаляет объект с карты. Объект должен быть перемещаемым и присутствовать на карте. Т.е., например, город удалить нельзя.
В качестве объекта может выступать, например, герой.
Bool IsObjectExists( sObjectName )
Возвращает, существует ли на карте объект с данным именем. Функция имеет алиас с именем Exists. В качестве объекта может выступать, например, герой.
Bool IsObjectEnabled( sObjectName )
Возвращает, находится ли объект с именем sObjectName в состоянии enabled. Если да, то объект будет взаимодействовать с героем игрока обычным образом (т.е. для города – зарядится интерфейс города, для героя противника – стартует битва и т.п.) В противном случае «атоматом» ничего происходить не будет. Это удобно, когда на объект навешен триггер OBJECT_TOUCH_TRIGGER, который должен среагировать на «тырканье» нестандартным образом.
Void SetObjectEnabled( sObjectName, bEnable )
Выставляет или снимает с объекта sObjectName состояние enabled.
TsObjects GetObjectNamesByType( sObjectTypeSubstr )
Выдает массив имен объектов на карте в соответствии с подстройкой sObjectNameSubstr, которая встречается в наименовании его типа. Полностью список соответствующих строк BUILDING_*, TOWN_*, CREATURE_* и HERO_CLASS_* можно найти в файле /types.xml, ветка /Base/Tables. Обращаю внимание, что 1) параметр – именно строка и к константам в /scripts/common.lua имеет весьма опосредованное отношение 2) полного совпадения имени не требуется, достаточно совпадения куска. Например, вызовы
GetObjectNamesByType(“SAWMILL”) и GetObjectNamesByType(“BUILDING_SAWMILL”) вернут один и тот же массив.
Void AddObjectCreatures( sObjectName, nGreatureId, nCount ) nCount GetObjectCreatures( sObjectName, nCreatureId )
Void RemoveObjectCreatures( sObjectName, nCreatureId, nCount )
Позволяет добавить/получить/удалить стеки существ, охраняющих объект. В качестве объекта может выступать любой объект, допускающий наличие армии, либо монстр на карте. В последнем случае функцией AddObjectCreatures добавить можно только существ, которые уже есть в армии монстра. Если после операции удаления в армии монстра не остается ни одного существа, монстр удаляется с карты. Герой в качестве объекта выступать не может (несмотря на то, что в официальном руководстве по скриптам написано обратное). Соответствующие операции с героем осуществляются с помощью функций GetHeroCreatures/AddHeroCreatures/RemoveHeroCreatures.
Void SetObjectDwellingCreatures( sObjectName, nCreatureId, nCount ) nCount GetObjectDwellingCreatures( sTownName, nCreatureId )
Позволяет установить/получить стеки существ, которые будут э-э-э, произрастать в объекте, если последний является точкой найма (например, городом). Уточню – изменить тип нанимаемых существ нельзя, можно управлять только их количеством. Например, при попытке вызвать SetObjectDwellingCreatures для города инферно с параметром nCreatureID=1 (крестьяне) никаких крестьян в городе не образуется. (Впрочем, к ошибке данный вызов не приводит) Т.е. данный тип стека должно в принципе быть возможным нанять в указанном месте.
Void CreateArtifact( sArtName, nArtId, nX, nY, nFloorId )
Создает артефакт nArtID в точке с указанными координатами и присваивает ему имя sArtName.
void ShowFlyingSign( spTXT, sObjectName, nPlayerID = -1, nTimeSec = 1.0)
Показывает всплывающую надпись из файла spTXT над объектом sObjectName для игрока nPlayerID в течение nTimeSec секунд. Если nPlayerID = -1, то надпись показывается для всех игроков. Функция имеет алиас с именем ShowFlyMessage.
