Близы забросили игру и к сожалению в реальном редакторе мы такого не увидим, и так встречайте, Фреймы на русском ГУИ, любой может без знаний джасс и кода и знаний синтаксиса создать свой первый фрейм
К сожалению всё очень топорно, по русский больше на албанский похож, многое мне не удалось к сожалению, но в целом всё возможно и легко
Чтобы активировать эти фреймы в своём редакторе нужно в папке 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
Но лично я это доделывать никогда не буду, может быть если только за денги.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
21
GetLocalPlayer, при чём тут массово
мне интересно кому это реально надо, покажите мне этого типа
который будет этим пользоваться
30
Никому, поэтому я это и не стал доделывать, была интересна лишь возможность создание такого.
Кстати, а таким образом можно переписать стандартные BJ? Тогда можно вообще изящно эту штуку реализовать.
33
NazarPunk, нет, bj же находятся внутри blizzard.j их можно только переопределить, но ты об этом знаешь и именно это и делал. В целом можно всё это совместить до кучи и сделать отдельный нормальный рефорджевый гуи редактор со всеми функциями и без утечек.
30
но ты об этом знаешь и именно это и делал
Так я и хотел бы переопределить, только не добавлением в custom_code, а таким нехитрым способом. Зато с другой стороны можно в гуи например добавить векторы и прочие полезные вещи.
15
Так я и хотел бы переопределить, только не добавлением в custom_code, а таким нехитрым способом
Если я правильно понял твое заблуждение, то triggerdata не определяет код функций, он лишь определяет код вызова функций. Имя функции, принимаемые параметры, возвращаемое значение и описание, которое будет отображаться в GUI редакторе.
Технически это позволяет лишь добавить в GUI функции твоей библиотеки, но не их начинку.
33
Ну всю эту начинку можно добавлять во внутрь карты (во внутрь war3map.lua или j) автоматически, как только в гуи вызывается функция данных для которой не обнаружено
NazarPunk:
а таким нехитрым способом
Ну тогда надо модифицировать blizzard.j, правда такая карта будет только у тебя работать
30
мне интересно кому это реально надо, покажите мне этого типа
который будет этим пользоваться
Сама идея добавления кода в гуи крута сама по себе. Только вот нужно 100500 времени чтоб её развить и доделать.
Ну всю эту начинку можно добавлять во внутрь карты
Мы о гуишниках говорим, они же без сборщика работают. В идеале найти способ заставить редактор вставлять код в карту.

Фреймы на русском ГУИ, любой может без знаний джасс и кода и знаний синтаксиса создать свой первый фрейм
Во влажных мечтах конечно не фрэймы давать юзеру, а например сделать выбор кастомного интерфейса.
15
Только вот нужно 100500 времени чтоб её развить и доделать.
Не сказал бы, процесс достаточно ускоряется практикой Ctrl+C/V
Тут основная проблема в том что все это дело нужно распихивать в один единственный текстовый файл (в два, если с подсказками), да еще по заранее определенным секциям. Рядовой гуишник в этом деле запутается если будет использовать больше одной сторонней библиотеки.
33
Только вот нужно 100500 времени чтоб её развить и доделать
Время есть, потребности нет
NazarPunk:
В идеале найти способ заставить редактор вставлять код в карту
Я думаю, что те кто руку к jngp приложил, знают как это сделать
NazarPunk:
Во влажных мечтах конечно не фрэймы давать юзеру, а например сделать выбор кастомного интерфейса
Тут тоже да, в идеале для гуишника надо чтобы фрейм создавался без переменных и в 1 строчку, как видишь у меня вообще потребовалось 10 строк написать, ради 1 фрейма без событий. Это плохо, мы же юнита всё таки 1 строчкой создаём же.
30
Тут основная проблема в том что все это дело нужно распихивать в один единственный текстовый файл (в два, если с подсказками), да еще по заранее определенным секциям.
Да хоть в 100500, современные IDE в прямых руках замечательно всё соберут в один нужный файлик.
Рядовой гуишник в этом деле запутается если будет использовать больше одной сторонней библиотеки.
Если бы редактор подхватывал внешний код, то гуишнику нужно всего один раз скопировать файло в triggerdata и с удовольствием использовать новый функционал. Ну а куча неиспользованого кода всяко лучше того, что он в гуи натыкает.

Время есть, потребности нет
Ну дык злые программисты распугали всех гуишников)
Я думаю, что те кто руку к jngp приложил, знают как это сделать
Если я правильно понимаю, близы прикрыли лавочку с надстройками редактора.
в идеале для гуишника надо чтобы фрейм создавался без переменных и в 1 строчку
В идеале для гуишника вообще не знать что такое фрэймы, а выбирать из менюшечек:
Интерфейс:
  • РПГ
  • Арена
  • Обсервер
  • Минимальный
  • Стандартный
Инвентарь
  • Стандартный
  • Расширенный
  • ...
33
В идеале для гуишника вообще не знать что такое фрэймы, а выбирать из менюшечек:
А не пошли ли они нахер?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.