Близы забросили игру и к сожалению в реальном редакторе мы такого не увидим, и так встречайте, Фреймы на русском ГУИ, любой может без знаний джасс и кода и знаний синтаксиса создать свой первый фрейм
К сожалению всё очень топорно, по русский больше на албанский похож, многое мне не удалось к сожалению, но в целом всё возможно и легко
Чтобы активировать эти фреймы в своём редакторе нужно в папке C:\Games\Warcraft III\_retail_ создать папку ui поместить туда мой triggerdata
Не скажу что тут тонна работы проделана, но добавил:
Пару функций
// Frame actions
BlzHideOriginFrames=0,boolean
_BlzHideOriginFrames_DisplayName="Отключение оригинальных фреймов"
_BlzHideOriginFrames_Parameters="Отключить оригинальные фремы?: ",~Enable
_BlzHideOriginFrames_Defaults=FALSE
_BlzHideOriginFrames_Category=TC_FRAMES

BlzCreateFrameByTypeBJ=0,string,string,framehandle,string,integer
_BlzCreateFrameByTypeBJ_DisplayName="Создать фрейм по типу из шаблона"
_BlzCreateFrameByTypeBJ_Parameters="Создать фрейм типа ",~String," по имени ",~String," От фрейма родителя ",~framehandle," По шаблону ",~String," В контекст ",~Integer
_BlzCreateFrameByTypeBJ_Defaults="BACKDROP","FaceButtonIcon",,"",0
_BlzCreateFrameByTypeBJ_Category=TC_FRAMES

BlzFrameSetAllPoints=0,framehandle,framehandle
_BlzFrameSetAllPoints_DisplayName="Сопоставить позиции фреймов"
_BlzFrameSetAllPoints_Parameters="Фрейм ",~framehandle, "сопоставить с",~framehandle
_BlzFrameSetAllPoints_Category=TC_FRAMES

BlzFrameSetTexture=0,framehandle,string,integer,boolean
_BlzFrameSetTexture_DisplayName="Установить текстуру для фрейма"
_BlzFrameSetTexture_Parameters="Установить для ",~framehandle," текстуру пути ",~String," с каким-то флагом ",~integer," и включить смешивание? ",~boolean
_BlzFrameSetTexture_Defaults=,"ReplaceableTextures\CommandButtons\BTNSelectHeroOn",0,TRUE
_BlzFrameSetTexture_Category=TC_FRAMES

BlzFrameSetSize=0,framehandle,real,real
_BlzFrameSetSize_DisplayName="Масштабировать фрейм"
_BlzFrameSetSize_Parameters="Для фрейма ",~framehandle," установить масштаб по x ",~real," и по y ",~real
_BlzFrameSetSize_Defaults=,0.039,0.039
_BlzFrameSetSize_Category=TC_FRAMES

BlzFrameSetAbsPoint=0,framehandle,framepointtype,real,real
_BlzFrameSetAbsPoint_DisplayName="Установить абсолютную позицию фрейма"
_BlzFrameSetAbsPoint_Parameters="Для фрейма ",~framehandle," центрировать позицию в ",~framepointtype, по х ,~real, и по у ,~real
_BlzFrameSetAbsPoint_Defaults=,FRAMEPOINT_CENTER,0.4,0.3
_BlzFrameSetAbsPoint_Category=TC_FRAMES

BlzGetOriginFrameBJ=0,originframetype,integer
_BlzGetOriginFrameBJ_DisplayName="Получить оригинальный фрейм"
_BlzGetOriginFrameBJ_Parameters=" Получить фрейм типа ",~originframetype," по индексу ",~integer
_BlzGetOriginFrameBJ_Defaults=ORIGIN_FRAME_GAME_UI,0
_BlzGetOriginFrameBJ_Category=TC_FRAMES
Пару типов данных
framehandle=1,1,0 ,"Frame Handle"
framepointtype=1,1,0 ,"Frame Point Type"
originframetype=1,1,0 ,"Frame Type Origin"
И пару хинтов
// FramePointType

FRAMEPOINT_TOPLEFT=0,framepointtype,FRAMEPOINT_TOPLEFT,"Вверх-лево"
FRAMEPOINT_TOP=0,framepointtype,FRAMEPOINT_TOP,"Вверх"
FRAMEPOINT_TOPRIGHT=0,framepointtype,FRAMEPOINT_TOPRIGHT,"Вверх-право"
FRAMEPOINT_LEFT=0,framepointtype,FRAMEPOINT_LEFT,"Лево"
FRAMEPOINT_CENTER=0,framepointtype,FRAMEPOINT_CENTER,"По центру"
FRAMEPOINT_RIGHT=0,framepointtype,FRAMEPOINT_RIGHT,"Право"
FRAMEPOINT_BOTTOMLEFT=0,framepointtype,FRAMEPOINT_BOTTOMLEFT,"Низ-лево"
FRAMEPOINT_BOTTOM=0,framepointtype,FRAMEPOINT_BOTTOM,"Вниз"
FRAMEPOINT_BOTTOMRIGHT=0,framepointtype,FRAMEPOINT_BOTTOMRIGHT,"Низ-Право"

// Originframetype
ORIGIN_FRAME_GAME_UI=0,originframetype,ORIGIN_FRAME_GAME_UI,"ORIGIN_FRAME_GAME_UI"
ORIGIN_FRAME_COMMAND_BUTTON=0,originframetype,ORIGIN_FRAME_COMMAND_BUTTON,"ORIGIN_FRAME_COMMAND_BUTTON"
ORIGIN_FRAME_HERO_BAR=0,originframetype,ORIGIN_FRAME_HERO_BAR,"ORIGIN_FRAME_HERO_BAR"
ORIGIN_FRAME_HERO_BUTTON=0,originframetype,ORIGIN_FRAME_HERO_BUTTON,"ORIGIN_FRAME_HERO_BUTTON"
ORIGIN_FRAME_HERO_HP_BAR=0,originframetype,ORIGIN_FRAME_HERO_HP_BAR,"ORIGIN_FRAME_HERO_HP_BAR"
ORIGIN_FRAME_HERO_MANA_BAR=0,originframetype,ORIGIN_FRAME_HERO_MANA_BAR,"ORIGIN_FRAME_HERO_MANA_BAR"
ORIGIN_FRAME_HERO_BUTTON_INDICATOR=0,originframetype,ORIGIN_FRAME_HERO_BUTTON_INDICATOR,"ORIGIN_FRAME_HERO_BUTTON_INDICATOR"
ORIGIN_FRAME_ITEM_BUTTON=0,originframetype,ORIGIN_FRAME_ITEM_BUTTON,"ORIGIN_FRAME_ITEM_BUTTON"
ORIGIN_FRAME_MINIMAP=0,originframetype,ORIGIN_FRAME_MINIMAP,"ORIGIN_FRAME_MINIMAP"
ORIGIN_FRAME_MINIMAP_BUTTON=0,originframetype,ORIGIN_FRAME_MINIMAP_BUTTON,"ORIGIN_FRAME_MINIMAP_BUTTON"
ORIGIN_FRAME_SYSTEM_BUTTON=0,originframetype,ORIGIN_FRAME_SYSTEM_BUTTON,"ORIGIN_FRAME_SYSTEM_BUTTON"
ORIGIN_FRAME_TOOLTIP=0,originframetype,ORIGIN_FRAME_TOOLTIP,"ORIGIN_FRAME_TOOLTIP"
ORIGIN_FRAME_UBERTOOLTIP=0,originframetype,ORIGIN_FRAME_UBERTOOLTIP,"ORIGIN_FRAME_UBERTOOLTIP"
ORIGIN_FRAME_CHAT_MSG=0,originframetype,ORIGIN_FRAME_CHAT_MSG,"ORIGIN_FRAME_CHAT_MSG"
ORIGIN_FRAME_UNIT_MSG=0,originframetype,ORIGIN_FRAME_UNIT_MSG,"ORIGIN_FRAME_UNIT_MSG"
ORIGIN_FRAME_TOP_MSG=0,originframetype,ORIGIN_FRAME_TOP_MSG,"ORIGIN_FRAME_TOP_MSG"
ORIGIN_FRAME_PORTRAIT=0,originframetype,ORIGIN_FRAME_PORTRAIT,"ORIGIN_FRAME_PORTRAIT"
ORIGIN_FRAME_WORLD_FRAME=0,originframetype,ORIGIN_FRAME_WORLD_FRAME,"ORIGIN_FRAME_WORLD_FRAME"
ORIGIN_FRAME_SIMPLE_UI_PARENT=0,originframetype,ORIGIN_FRAME_SIMPLE_UI_PARENT,"ORIGIN_FRAME_SIMPLE_UI_PARENT"
ORIGIN_FRAME_PORTRAIT_HP_TEXT=0,originframetype,ORIGIN_FRAME_PORTRAIT_HP_TEXT,"ORIGIN_FRAME_PORTRAIT_HP_TEXT"
ORIGIN_FRAME_PORTRAIT_MANA_TEXT=0,originframetype,ORIGIN_FRAME_PORTRAIT_MANA_TEXT,"ORIGIN_FRAME_PORTRAIT_MANA_TEXT"
ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR=0,originframetype,ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR,"ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR"
ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR_LABEL=0,originframetype,ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR_LABEL,"ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR_LABEL"
Ну и пришлось добавить свои BJ функции в нестандартный код карты
globals
	framehandle bj_lastLastCreatedFrameHandle=null
endglobals

function GetLastCreatedFrameHandle takes nothing returns framehandle
	return bj_lastLastCreatedFrameHandle
endfunction

function BlzCreateFrameByTypeBJ takes string typeName, string name, framehandle owner, string inherits, integer createContext  returns framehandle
	set bj_lastLastCreatedFrameHandle=BlzCreateFrameByType(typeName, name, owner, inherits, createContext)
	return bj_lastLastCreatedFrameHandle
endfunction

function BlzGetOriginFrameBJ takes originframetype frameType, integer index returns framehandle
	set bj_lastLastCreatedFrameHandle=BlzGetOriginFrame(frameType, index)
	return bj_lastLastCreatedFrameHandle
endfunction
Но лично я это доделывать никогда не буду, может быть если только за денги.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
30
Именно гуишнику придется брать чужие библиотеки и собирать их у себя в один triggerdata файл в чем он не разберется.
Задача гуишника взять собранный умными людьми triggerdata и скопировать себе. Побочный эффект это конечно куча неиспользованного кода, но неиспользуемый код лучше чем унылый)
Тут скорее сборщик писать придется.
Так сборщик уже давно написан, притом совместимый со стандартным редактором. Можно к нему допилить нужный функционал. Но это потребуется только в случае коммандной работы над проэктом, где работают гуишники и кодеры с IDE.
33
NazarPunk, забей, лучше на сборщика апдейт напиши на xgm.guru/p/wc3/cheapack/comments?postid=448575#comment37, хотя я часть уже и сам сделал, но об этом поговорить либо там либо в личке
15
Задача гуишника взять собранный умными людьми triggerdata и скопировать себе. Побочный эффект это конечно куча неиспользованного кода, но неиспользуемый код лучше чем унылый)
Пользователь сам волен выбирать используемые библиотеки. Никому не уперлось копировать себе в CustomScript тонну неизвестно вообще чего и зачем.
33
Пользователь сам волен выбирать используемые библиотеки. Никому не уперлось копировать себе в CustomScript тонну неизвестно вообще чего и зачем.
я ж чё и говорю в иделе оно должно автоматически добавляться в кастом скрип, как только для гуи функции нужен этот код
Проблема именно вот в таких функциях
function BlzCreateFrameByTypeBJ takes string typeName, string name, framehandle owner, string inherits, integer createContext  returns framehandle
	set bj_lastLastCreatedFrameHandle=BlzCreateFrameByType(typeName, name, owner, inherits, createContext)
	return bj_lastLastCreatedFrameHandle
endfunction
Оно нужно чтобы хоть как-то получить новый тип данных, потому что
 BlzCreateFrameByType(typeName, name, owner, inherits, createContext)
само по себе ничего не возвращает для гуи, нужно сразу для переменной создавать, но я не знаю как это сделать, сделать
Set VariableFrameType=BlzCreateFrameByType, я максимум смог добавить функцию "последний созданный фрейм", если бы это было возможно, тогда бы можно было обойтись без самописных BJ в кастом коде
30
Пользователь сам волен выбирать используемые библиотеки.
Нормальный пользователь берёт IDE, сборщик по вкусу и пишет на lua, а гуишники пусть пихают. им не привыкать))
Никому не уперлось копировать себе в CustomScript тонну неизвестно вообще чего и зачем.
Ну так можно запилить подобие Download Builder и пусть выбирает по вкусу, только с таким подходом есть ненулевой шанс запороть карту использовав гуи функцию отсутствующую в triggerdata.
33
Самый лол, этот пост Дизлайкнуло 2 гуишника. Интересно ребята, я впервые мог сделать то, что вам может пригодиться, я даже луа тут спецом не использован, а вы вот как.

Аргументируйте пожалуйста своё решение, может вас обидело что я написал "никогда не буду доделывать"?

Niken покажи пожалуйста скрин триггера из редактора SK2, где создаётся просто кнопка в центре экрана
30
Самый лол, этот пост Дизлайкнуло 2 гуишника.
Так гуишники привыкли по кнопочкам из менюшечек тыкать, а не разрабатывать инструменты для своей же пользы.
33
(см последнюю строчку)
На старкрафте в общем в 1 строчку такое делается, так что сё таки придётся писать свои BJ, а то на стандарте будет по 10 строк
Загруженные файлы
30
На старкрафте в общем в 1 строчку такое делается, так что сё таки придётся писать свои BJ, на стандарте будет по 10 строк
С интерфейсом удобнее из кода работать. Я всёравно склоняюсь готовым решениям и выведения настроек в гуи.
Напримерм выбор героя на фрэймах сделать, а из гуи только функции:
  • добавить героя
  • заблокировать героя
  • убрать героя
  • показать для игрока
  • ...
  • profit

Ну и везде в юнитах добавить вариант [Главный герой игрока]
33
Напримерм выбор героя на фрэймах сделать, а из гуи только функции:
маловато, нужна функция для создания такого окна, нужна возможность задать его положение, поле для описания героя... дофига всего, ну и самое печальное, так это допданные для triggerdata
30
маловато, нужна функция для создания такого окна, нужна возможность задать его положение, поле для описания героя...
Ну так я же троеточие поставил, туда всё и поместим.
ну и самое печальное, так это допданные для triggerdata
Что-то я не понял насчёт допданных.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.