Void SetGameVar( sVarName, sValue )
String GetGameVar( sVarName )
Функции осуществляют перенос информации между несколькими эпизодами одной кампании. SetGameVar устанавливает глобальную переменную, GetGameVar, соответственно, предоставляет способ добраться до ее значения. Если переменная не установлена, вернется пустая строка.
Void Save( sSaveName )
Void Load( sSaveName )
Сохранение, и, соответственно, загрузка игры. Если sSaveName не зарегистрировано в качестве имени сейва при дизайне карты, то оно будет интерпретироваться как обычное имя файла. Если зарегистрировано – то собственно имя файла и описание сейва (т.е. строка, которая показывается в меню) будет взято из соотв. xdb.
Void TutorialSetBlink( sID, nOn )
Void TutorialMessageBox( sID )
Bool IsTutorialMessageBoxOpen()
Bool IsTutorialItemEnabled( sID )
Void TutorialActivateHint( sID )
Void TutorialSetBlink( sID, nBlink )
Функции для работы с туториалом. На настоящий момент они не представляют для меня интереса, желающие могут поэкспериментировать самостоятельно. Разнообразные sID перечислены в файле /UI/uiconsts.(UIGameConstsH5).xdb в разделе /GameOptions/TutorialOptions/Hints/Item/ScriptID
Стратегический режим.
При старте стратегического режима игра делает следующее:
1) Загружает файл /scripts/advmap-startup.lua и все прописанные в нем с помощью doFile скрипты
2) Вызывает функцию createAdvmapAliases()
3) Приступает к интерпретации файла скрипта текущей карты.
Кроме перечисленных выше общих функций в данном режиме доступны следующие:
Общая работа с параметрами игрока.
NPlayerID GetCurrentPlayer()
Возвращает ID текущего игрока. Соотв. PLAYER_? константы см. в файле /scripts/advmap-startup.lua. Коротенько – в случае кампании номер игрока-человека равен PLAYER_1 = 1.
NPlayerStateID GetPlayerState( nPlayerID )
Возвращает статус игрока nPlayerID. Бывает таким:
PLAYER_NOT_IN_GAME = 0
PLAYER_ACTIVE = 1
PLAYER_WON = 2
PLAYER_LOST = 3
Number GetPlayerResource( nPlayerID, nResID )
Возвращает текущее количество ресурса nResID у игрока nPlayerID. ID ресурсов прописаны в /scripts/advmap-startup.lua и бывают такими:
WOOD = 0
ORE = 1
MERCURY = 2
CRYSTAL = 3
SULFUR = 4
GEM = 5
GOLD = 6
Void SetPlayerResource( nPlayerID, nResID, nCount )
Установка текущего количества ресурса nResID в nCount для игрока nPlayerID. На основе данной функции в файле /scripts/advmap-common.lua реализован примитив более высокого уровня – void SetPlayerStartResource( nPlayerID, nResID, nCount ) который распределяет игроку стартовые ресурсы в зависимости от уровня сложности.
Void SetPlayerStartResources( nPlayerID, nWoodCnt, nOreCnt, nMercuryCnt, nCrystalCnt, nSulfurCnt, nGemCnt, nGoldCnt )
Установка текущего количества ресурсов для игрока nPlayerID. В принципе данная функция эквивалентна ряду вызовов SetPlayerResource. Отличие будет видно только на интерфейсе результата миссии.
TsHeroes GetPlayerHeroes( nPlayerID )
Возвращает таблицу, содержащую имена всех героев указанного игрока.
Void SetPlayerHeroesCountNotForHire( nPlayerID, nCount )
Уменьшает количество героев, которых сможет нанять игрок, на nCount. Общее количество нанимаемых устанавливается при дизайне.
NPlayerID GetObjectOwner( sObjectName )
Возвращает ID игрока, которому принадлежит объект. В качестве объекта может выступать герой, город, строение, герой и т.п. Если объект не принадлежит никому, вернет PLAYER_NONE.
Void SetObjectOwner( sObjectName, nPlayerID )
Устанавливает владельца объекта sObjectName в nPlayerID.
Bool IsObjectVisible( nPlayerID, sObjectName )
Возвращает, виден ли игроку nPlayerID объект с именем sObjectName. В случае, если объект занимает на карте более одного тайла, функция может работать некорректно (фактически, в этом случае она возвращает виден ли игроку центр объекта).
Void OpenCircleFog( nX, nY, nFloorID, nRadius, nPlayerID )
Открывает для игрока nPlayerID туман войны в окружности с центром в указанных координатах и радиусом nRadius. Константы для nFloorID прописаны в /scripts/advmap-startup.lua и бывают такими:
GROUND = 0
UNDERGROUND = 1