Кратко: Мы уже рассмотрели ранее фреймы ORIGIN_FRAME_GAME_UI и его потомков, также и ORIGIN_FRAME_WORLD_FRAME. Теперь давайте рассмотрим остальные элементы интерфейса.
ORIGIN_FRAME_HERO_BAR
ORIGIN_FRAME_HERO_BUTTON
index | info |
---|---|
0-6 | интерактивные кнопки собственных / союзных героев в левой части экрана |
пример
BlzGetOriginFrame(ORIGIN_FRAME_HERO_BUTTON, 0), -- 1ый герой, клавиша F1
BlzGetOriginFrame(ORIGIN_FRAME_HERO_BUTTON, 1), -- 2ой герой, клавиша F2
BlzGetOriginFrame(ORIGIN_FRAME_HERO_BUTTON, 2), -- 3ий герой, клавиша F3
BlzGetOriginFrame(ORIGIN_FRAME_HERO_BUTTON, 3), -- 4ый герой, клавиша F4
BlzGetOriginFrame(ORIGIN_FRAME_HERO_BUTTON, 4), -- 5ый герой, клавиша F5
BlzGetOriginFrame(ORIGIN_FRAME_HERO_BUTTON, 5), -- 6ой герой
BlzGetOriginFrame(ORIGIN_FRAME_HERO_BUTTON, 6) -- 7ой герой
BlzGetOriginFrame(ORIGIN_FRAME_HERO_BUTTON, 1), -- 2ой герой, клавиша F2
BlzGetOriginFrame(ORIGIN_FRAME_HERO_BUTTON, 2), -- 3ий герой, клавиша F3
BlzGetOriginFrame(ORIGIN_FRAME_HERO_BUTTON, 3), -- 4ый герой, клавиша F4
BlzGetOriginFrame(ORIGIN_FRAME_HERO_BUTTON, 4), -- 5ый герой, клавиша F5
BlzGetOriginFrame(ORIGIN_FRAME_HERO_BUTTON, 5), -- 6ой герой
BlzGetOriginFrame(ORIGIN_FRAME_HERO_BUTTON, 6) -- 7ой герой
Children of ORIGIN_FRAME_HERO_BUTTON
index | информация и описание дочерних фреймов |
---|---|
0 | HP-Bar (полоска здоровья под иконкой) |
1 | MP-Bar (полоска маны под иконкой) |
2 | Unspent-SkillPointsBox (только если в этом слоте когда-либо были неизрасходованные SkillPoints) |
ORIGIN_FRAME_HERO_HP_BAR и ORIGIN_FRAME_HERO_MANA_BAR
ORIGIN_FRAME_HERO_BUTTON_INDICATOR
index | info |
---|---|
0-6 | Unspent-SkillPointsBox - потомок для Parent of ORIGIN_FRAME. Подсвечивающая рамка для HeroButton, появляющаяся при получении новых очков навыков. Светится, когда у героя есть очки навыков; подключен к HeroButtons. Они появляются снова, когда герой получает новое очко навыков, даже если все исходные рамки скрыты. |
ORIGIN_FRAME_ITEM_BUTTON
Тут есть нарисованный инвентарь со слотами. Проще говоря, это рисунок. И нет никаких ячеек. Тут поверх появляются/исчезают кнопки предметов. Когда юнит получает предмет, у нас появляется кнопка предмета.
index | info |
---|---|
0-5 | Кнопки предметов. Периодически обновляются, появляются при каждом изменении выбора юнита. Когда его родительский элемент виден. |
Чтобы посмотреть этот фрейм подробнее с помощью Casc Viewer, есть файл fdf:
ui/framedef/ui/inventorybar.fdf
ui/framedef/ui/reforged/inventorybar.fdf
ui/framedef/ui/inventorybar.fdf
ui/framedef/ui/reforged/inventorybar.fdf
ORIGIN_FRAME_COMMAND_BUTTON
Children of ORIGIN_FRAME_ITEM_BUTTON/ORIGIN_FRAME_COMMAND_BUTTON
Кол-во потомков: 0, 1 или 3 - зависит от того, может ли слот/кнопка когда-нибудь использована, и содержит ли заряды
index | информация и описание дочерних фреймов |
---|---|
0, 1, 3 | На самом деле, я не знаю за что отвечают данные потомки. Либо они часто пустые, или происходит вылет. Перебирать потомка надо, если сама кнопка видима. Итог: я так и не смог определить значимость этих потомков. Пишут, что отвечает за texture (string), text (string), value (значение, заряды) |
ORIGIN_FRAME_SYSTEM_BUTTON
ORIGIN_FRAME_PORTRAIT
index | info |
---|---|
0 | Этот фрейм портрета можно назвать тоже что-то вроде кнопки. Когда вы кликаете по рожице, камера наводится на этого юнита. Можете повесить на этот фрейм событие клика. |
При выключении фрейма портрет исчезает.
Как видим на скрине остался черный фон. И тексты хп и мана под портретом.
Кол-во потомков: 0
ORIGIN_FRAME_PORTRAIT_HP_TEXT и ORIGIN_FRAME_PORTRAIT_MANA_TEXT
V1.32+ Не существует до тех пор, пока не будет сделан какой-либо выбор, и не пройдет короткое время. Форсируйте выбор и подождите немного.
Проверяйте видимость фрейма через BlzFrameIsVisible(frame).
Проверяйте видимость фрейма через BlzFrameIsVisible(frame).
Перемещать позицию этого фрейма, по словам автора, правильнее через точку FRAMEPOINT_CENTER, другие framepoints, по его словам, могут привести к каким то неведомым мне ошибкам.
Скорее всего, текстовый фрейм с использовании некоторых нативок может привести к вылету игры (crash one setAlpha/Level, BlzFrameGetText возвращает показанное значение, BlzFrameSetFont работает...).
ORIGIN_FRAME_MINIMAP
MiniMapFrame, 0 <- другое обращение к фрейму.
index | info |
---|---|
0 | Мини-карта отвечает за отображения карты (ладншафт, деревья, юниты), исключая текстуры интерфейса и кнопки по правому боку. Эта мини-карта тоже особая кнопка, жмешь по ней и перемещаешь к камеру в нужную часть карты. |
Ниже названия фреймов мини-карты не указаны в содержимом всех fdf, нашел их на хайве. Но их можно было найти в ui/framedef/ui/minimapframe/fdf.
Сейчас в 1.32 таких фреймов не вижу в дебагах в качестве потомков, всякие кнопочки миникарты, minimapbar видимо не являются потомками MinimapFrame.
В ui/war3skins.txt
MinimapSprite = UI\MiniMap\MiniMapIcon\MiniMapUnitIcon.mdl
MinimapSprite = UI\MiniMap\MiniMapIcon\MiniMapUnitIcon.mdl
Чтобы посмотреть этот фрейм подробнее с помощью Casc Viewer, есть файл fdf:
ui/framedef/ui/MiniMapFrame.fdf
ui/framedef/ui/reforged/MiniMapFrame.fdf
ui/framedef/ui/MiniMapFrame.fdf
ui/framedef/ui/reforged/MiniMapFrame.fdf
MinimapButtonBar
ORIGIN_FRAME_MINIMAP_BUTTON
index | info |
---|---|
0-4 | Кнопки мини-карты. кнопка 0 - верхняя, а кнопка 4 - самая нижняя кнопка. |
код
MiniMapAllyButton, 0 (цвет ваших войск и союзников а мини-карте и на карте)
MiniMapCreepButton, 0 (крипы на мини-карте)
MinimapSignalButton, 0 (отметка на мини-карте)
MiniMapTerrainButton, 0 (рельеф на мини-карте)
FormationButton, 0 (боевое построение - кнопка на мини-карте)
ORIGIN_FRAME_TOOLTIP и ORIGIN_FRAME_UBERTOOLTIP
Эти фреймы отвечают за всплывающие окна с подсказками, появляющиеся при наведении мыши на элементы интерфейса: иконки героя, раба, кнопки абилки/юнита/технологии, кнопки меню/мини-карты, информация по интерфейсу.
originframetype | index | info |
---|---|---|
ORIGIN_FRAME_TOOLTIP | 0 | |
ORIGIN_FRAME_UBERTOOLTIP | 0 | Обрабатывает окно всплывающей подсказки |
можно проверить таймером видимость подсказки. Когда вы наводите на фрейм или любой объект, у вас всплывает подсказка. Иногда можно этим пользоваться. Пример, мне нужно узнать не находится ли курсор внутри стандартных фреймов. Например, я выделили иконку защиты героя, и мне всплыла информация. Зачем это нужно? Ну например мне нужно было определить лежит ли курсор внутри интерфейса, или в игровом поле.
код
TimerStart(CreateTimer(),1.0,true,function()
local frame = BlzGetOriginFrame(ORIGIN_FRAME_UBERTOOLTIP,0)
if BlzFrameIsVisible(frame) then
print("видим")
end
end)
У ORIGIN_FRAME_TOOLTIP и ORIGIN_FRAME_UBERTOOLTIP есть по одному безымянному потомку.
ORIGIN_FRAME_CHAT_MSG и ORIGIN_FRAME_UNIT_MSG
originframetype | index | info |
---|---|---|
ORIGIN_FRAME_CHAT_MSG | 0 | рамка вывода печати для сообщения в чат. Это происходит, когда игрок пишет в чат, и вам выводится текст. У рамки есть опред границы. Или триггерная нативка ввода чат BlzDisplayChatMessage. Выключение этого фрейма, вы перестаете видеть на экране введенные в чат сообщения. Но, отключение может вызвать фатал. |
ORIGIN_FRAME_UNIT_MSG | 0 | рамка вывода системного сообщения игры (вроде смерти героя). Или сообщения триггера DisplayTextToPlayer. Однако, не все тексты скрывает. Вроде желтенькие системные сообщения о запрете строительства на занятых участка, нельзя выбросить предмет, если он так настроен и прочее. |
ORIGIN_FRAME_TOP_MSG
ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR