- •Справочник по скриптовому 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 CreateMonster( sMonsterName, nCreatureId, nCount, nX, nY, nFloorId, nMonsterMoodId, nCreatureCourageId )
Создает стек существ из nCount существ типа nCreatureID в указанных координатах и присваивает ему имя sMonsterName. Созданный стек имеет mood и courage (ага, трудности у меня с внятным переводом – настроение и кураж? Как-то не звучит…) в соответствии с константами
MONSTER_MOOD_FRIENDLY = 0
MONSTER_MOOD_AGGRESSIVE = 1
MONSTER_MOOD_HOSTILE = 2
MONSTER_MOOD_WILD = 3
и
MONSTER_COURAGE_ALWAYS_JOIN = 0
MONSTER_COURAGE_ALWAYS_FIGHT = 1
MONSTER_COURAGE_CAN_FLEE_JOIN = 2
Данные константы нигде не определены. Стек принадлежит нейтральному игроку c ID = PLAYER_NONE.
Если тайл с указанными координатами занят, монстр будет создан на ближайшем свободном тайле. Начиная с версии игры 1.3 последние два параметра функции имеют умолчательные параметры MONSTER_MOOD_AGGRESSIVE и, соответственно, MONSTER_COURAGE_CAN_FLEE_JOIN. В официальном руководстве к скриптам у функции указан еще один опциональный параметр – rotation. Однако, даже если он и есть, то на результат никак не влияет.
Функция имеет алиас с именем CreateMob.
void RemoveAllMonsters( nCreatureID )
Удаляет с карты все стеки с типом существ nCreatureID. Функция имеет алиас с именем KillMobs
void GenerateMonsters( nCreatureID, nCountGroupsMin, nCountGroupsMax, nCountInGroupMin, nCountInGroupMax )
Генерирует в рандомных местах карты от nCountGroupsMin до nCountGroupsMax стеков существ типа nCreatureID от nCountInGroupMin до nCountInGroupMax существ в каждом стеке. Созданные стеки принадлежат нейтральному игроку c ID = PLAYER_NONE.
Функция имеет алиас с именем GenerateMobs.
3.2.8 Работа с интерфейсом.
void QuestionBox( spTXT, sCallback )
Выдает немодальный QuestionBox с текстом spTXT и кнопками «Да/Отмена», по завершении в случае положительного ответа вызывает функцию с именем sCallback и пустым списком параметров. Обращаю внимание – функция немодальная. Т.е. скрипт продолжит выполнение со следующей за вызовом функции строчки, не ожидая нажатия к/л кнопки игроком. Функция имеет алиас с именем QuestionBoxInt.
void StartDialogScene( spDialogSceneXDB, sCallback = nil, sSaveName = nil )
Стартует диалоговую сцену на движке согласно первому параметру. Если второй параметр не nil, то после диалога будет вызвана функция с именем sCallback и пустым списком параметров. Если sSaveName не nil, то перед диалогом будет произведено сохранение в соотв. слот. Что мешает просто вызывать перед StartDialogScene функцию Save пока не понимаю. Возможно, дело в состоянии экрана на момент сохранения (и, соответственно, в картинке, которая ляжет в сейв).
void StartCutScene( sAnimSceneXDB, sCallback = nil, saveName = nil )
Стартует анимированную сцену на движке согласно первому параметру. Если второй параметр не nil, то после ролика будет вызвана функция с именем sCallback и пустым списком параметров. Если sSaveName не nil, то перед диалогом будет произведено сохранение в соотв. слот.
void MessageBox( spTXT, sCallback = nil, sSaveName = nil )
Выдает модальный MessageBox с текстом spTXT, по завершении вызывает функцию с именем sCallback и пустым списком параметров. Если sSaveName не nil, то перед диалогом будет произведено сохранение в соотв. слот.
