XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
GhfDllT

offline
Опыт: 3,980
Активность:
*.fdf файлы в WarcraftIII
В архивах вара в папке FrameDef лежат файлы типа fdf. Это описания фреймов игры(Frame Define наверное имелось в виду), т.е. описание положения всех кнопок, полос прокрутки и тд(не путать с форматом Acrobat Reader). Я пытаюсь разобраться, но там довольно сложно - шаблоны непонятно определяются, наследуются потом. Короче я не смог ничего сделать, кроме как изменить в игре надписи на кнопках, и еще пути к текстурам переписать, ну еще добавил еще слот к выбору рас..
Та к вот, если кто знает формат этих файлов, как там иерархия организована и как ее менять(последнее вообще мечты) , то пожалуйста поделитесь этими сведениями со мной.
P.S. Поиск на fdf. результатов не дал
Старый 30.07.2009, 16:38
ARCHIMONDE
Маг'хар
offline
Опыт: 16,313
Активность:
GhfDllT,а там можно только один слот к выбору рас добавить или больше?
Старый 30.07.2009, 16:46
GhfDllT

offline
Опыт: 3,980
Активность:
ARHIMOND5, вообще то я вопросы задаю=(......
Добавить то можно больше, но вот обрабатываться слот не будет(т.е. после выбора в списке раса даже в строке не появится . А wooteam в своем моде в основное меню мурлоков добавили? Просто не играл. Надо у участников спросить

GhfDllT добавил:
Просто что-то мне подсказывает, что возможноти большие у этой штуки. В Blizzard.j видел какие-то функции загрузки начальных юнитов расам, значит можно что-то замутить. А кажется мне что наши мэтры все знают, но молчат, гады...
Старый 30.07.2009, 17:07
ARCHIMONDE
Маг'хар
offline
Опыт: 16,313
Активность:
GhfDllT,не они не добавляли слот, просто к "Ночным Эльфам" дописали "Мурлоков" и все.
Старый 30.07.2009, 17:17
MF
Что-то вокруг не так
offline
Опыт: 26,594
Активность:
Эти файлы загружаются во время старта игры. Заменить их импортом в карту не получится.
Старый 30.07.2009, 17:26
GhfDllT

offline
Опыт: 3,980
Активность:
MF, то есть данные о стандартном игровом интерфейсе для каждой расы грузится сразу при запуске игры, а не карты? Это близары специально сделали? Тогда у меня вопрос: когда закидываешь ошибочный фрейм(например главного меню одиночной игры), то игра вылетает не сразу, а только когда из главного меню жмешь "один игрок". Ну а там конечно вылетает, ибо обработчики к этой хрени не может вызвать. Так вот в чем вопрос - как игра грузит сразу, а ошибочность выясняет только при вызове? Может все-таки есть надежда?
Цитата:
они не добавляли слот, просто к "Ночным Эльфам" дописали "Мурлоков"
- это наверное через GlobalStrings.fdf, по сути единственный способ, так что знать что-то об этих файлах они должны.
Цитата:
Заменить их импортом в карту не получится.
- и в кампанию тоже?
Итак, главный вопрос остается - где взять более или менее подробное описание этого формата. Хоть это и абсолютно бесполезно(за исключением замены текста интерфейса в модах), но жутко интересно!!! Хотя бы для того, чтобы увидеть пару картинок, типа этих
Миниатюры
Кликните на картинку для увеличения
Название:  fdfSimple1.jpg
Просмотров: 388
Размер:  79.4 Кбайт  Кликните на картинку для увеличения
Название:  fdfSimple2.jpg
Просмотров: 345
Размер:  30.1 Кбайт  
Старый 30.07.2009, 22:09
ScorpioT1000
Работаем
online
Опыт: отключен
я так понял там примерно такой синтаксис:
Название типа "ИМЯ" "Подтип" INHERITS(наследуется) WITHCHILDREN(с потомком) от "Подтип предка"
{
входящие элементы,
через,
запятую,
Могут быть "ВЛОЖЕННЫЕ" {
и тоже содержать элементы,
}
}
Старый 30.07.2009, 22:24
GhfDllT

offline
Опыт: 3,980
Активность:
ScorpioT1000, именно такой(только вместо "название типа" всюду Frame), но хотелось бы общетеоретически, и про эти самые элементы, и про то как элементы жруг в дгуга включаются, в общем все что знаешь, если не трудно

GhfDllT добавил:
Цитата:
можно даже написать небольшую прогу-конструктор менюшек
- а толку, обрабатывает ведь движок а не джасс по-любому, сколько ты native-функций не засовывай(хотя я может быть ошибаюсь)
Старый 30.07.2009, 22:34
ScorpioT1000
Работаем
online
Опыт: отключен
да нет, чтобы у тя появилось визуальное меню вара на экране и ты его перетаскивал/редактировал, а в конце нажал "сохранить в fdf" и импортил в вар)
ScorpioT1000 добавил:
ScorpioT1000, именно такой(только вместо "название типа" всюду Frame), но хотелось бы общетеоретически, и про эти самые элементы, и про то как элементы жруг в дгуга включаются, в общем все что знаешь, если не трудно
я не знаю, первый раз открыл. могу приблизительно сказать, что это. хотя тут знания английского достаточно.
рассмотрим MainMenu.fdf
// -- INCLUDE FILES ---------------------------------------------

IncludeFile "UI\FrameDef\Glue\StandardTemplates.fdf",
означает, что текущий файл использует некоторые шаблоны из других включенных файлов, по путям..
// -- FRAMES ----------------------------------------------------
кадры или "слои"
Frame "FRAME" "MainMenuFrame" INHERITS "StandardFrameTemplate" {
сначала тип "Frame", потом либо его надтип, либо его "сокращенное название", а затем уже полное название (MainMenuFrame), потом то, что он наследует набор данных и функций из шаблона "StandardFrameTemplate"
далее внутренние элементы
    SetAllPoints,

    Frame "SPRITE" "WarCraftIIILogo" {
        BackgroundArt "UI\Glues\MainMenu\WarCraftIIILogo\WarCraftIIILogo.mdl",
        SetPoint TOPLEFT, "MainMenuFrame", TOPLEFT, 0.13, 0.04,
    }
какой-то параметр(bool) SetAllPoints
далее подшаблон, тоже "Frame", но надтип уже SPRITE, а название "WarCraftIIILogo"
и внутренние свойства
где их брать, я не знаю, скорей всего в файлах "выше" (INCLUDE FILES)
например, функция(если это функция) SetPoint принимает параметры TOPLEFT, "MainMenuFrame", TOPLEFT, 0.13, 0.04 - про них надо узнать подробнее
Старый 30.07.2009, 22:49
TNT
О_о
offline
Опыт: 11,019
Активность:
получится заменить эти файлики через подключение mpq только наверное.
Старый 30.07.2009, 23:02
ScorpioT1000
Работаем
online
Опыт: отключен
можно в папку с варом запихать
Старый 30.07.2009, 23:05
TNT
О_о
offline
Опыт: 11,019
Активность:
имею в виду для модов или карт. а то так это на весь вар повлияет, а с архивом на свой exe
Старый 30.07.2009, 23:08
GhfDllT

offline
Опыт: 3,980
Активность:
TNT, резервные копии mgq делать надо(war2patch)
Цитата:
означает, что текущий файл использует некоторые шаблоны
- ну это ясно, там все от стандартных шаболонов наследуется.
Цитата:
он наследует набор данных и функций из шаблона
- он наследует его именно как шаблон фрейма
Цитата:
где их брать, я не знаю, скорей всего в файлах "выше" (INCLUDE FILES)
- не похоже, там их нету, там только описание внешнего вида компонента, оно и наследуется в шаблоне, напримерЖ:
Код:
Frame "BACKDROP" "StandardControlBackdropTemplate" {
    BackdropTileBackground,
    BackdropHalfSides,
    BackdropBackground  "UI\Widgets\ButtonBackGround.blp",
    BackdropCornerFlags "UL|UR|BL|BR",    
    BackdropCornerSize  0.015,
    BackdropCornerFile  "UI\Widgets\ButtonCorners.blp",
    BackdropLeftFile    "UI\Widgets\ButtonLeft.blp",
    BackdropRightFile   "UI\Widgets\ButtonRight.blp",
    BackdropTopFile     "UI\Widgets\ButtonTop.blp",
    BackdropBottomFile  "UI\Widgets\ButtonBottom.blp",        
}

ну там соответственно на все случаи жизни(кнопки, надписи, CheckBox и т.д.) Описание атрибутов в др файлах не нашел, поэтому предполагаю что их понимает непосредственно движок, или может какие компоненты описаны/сериализованы в двоичных|зашифрованных файлах вара.
Цитата:
я не знаю, первый раз открыл. могу приблизительно сказать, что это. хотя тут знания английского достаточно.
- ну в общих чертах я тоже понимаю, просто думал что кто-нибудь даст подробный теоретический курс синтаксиса и характеристику всех компонентов и их артибутов))) Ну тогда будем разбирать вместе, это имхо веселее.
Цитата:
да нет, чтобы у тя появилось визуальное меню вара на экране и ты его перетаскивал/редактировал, а в конце нажал "сохранить в fdf" и импортил в вар)
- это я понял, я к тому, что этот импортированный фрейм работать не будет: там на скрине при нажатии кнопок(любых) игра вылетает нафиг. В common.j ничего отвечающего за обработку проивольных кнопок не видно(только диалоги), вот я и решил, что обрабатывает это все движок и его придется хакать, чтобы нестандартные фреймы заработали. Только боюсь он прямо в оконной функции обрабатывает, что не дает никаких шансов((
Старый 31.07.2009, 09:49
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
GhfDllT, это просто оформление. При желании можно перетащить все элементы, как душе угодно, но новые обрабатываться не будут, для них надо писать свои "обработчики".
Старый 31.07.2009, 10:07
NETRAT

offline
Опыт: 83,712
Активность:
FDF = Frame Definition File
насколько я помню, качественно изменить интерфейс невозможно так как соответствие между тем что написано в fdf и прошито в движке весьма однозначное, то есть текстуры может изменить и можно а вот положение их - наврядли
Старый 31.07.2009, 11:32
GhfDllT

offline
Опыт: 3,980
Активность:
Цитата:
то есть текстуры может изменить и можно а вот положение их - наврядли
- в смысле положение? Текстурную карту? На это я и не надеялся. А вот насчет обработчиков: никто не знает как их вставить? Ну чисто гипотетически .. ((Hellfim, NETRAT, если вы с эмит работали, не не дадите ссылку на инфу по fdf? Просто прикольно побаловаться)
P.S. То есть получается fdf в модмейкинге годны только изменение надписей, положения и текстур. Плачевно...

GhfDllT добавил:
Я тут одну вещь обнаружил - нам в элементах управления что-то вроде цикла/списка замкнутого. Есть один элемент, у него стоит атрибут TabFocusDefault и такой элемент единственный в фрейме, слудующим атрибутом идет TabFocusNext "бла-бла на др компонент", в том бла-бла компоненте ссылка на следующий и так до последнего. А в последнем ссыка на первый. Если дописать свой подфрейм с одной кнопкой, то все работает и вар внимания не обращает. А вот если кнопок более одной - вылетает при нажатии любой кнопки кроме нестандартных. Если вписываешь свои кнопки в "цикл", то вылетает и при их нажатии. Вы с этим сталкивались?
Старый 31.07.2009, 14:16
NETRAT

offline
Опыт: 83,712
Активность:
нету никакой документации, метод тыка
при чем тут текстурная карта, есть модель интерфейса, текстурная карта натягивается на нее, она предельно проста - области, изменить положение частей интерфейса невозможно не исправляя game.dll
то есть ничего хорошего afaik из fdf не получится
Старый 31.07.2009, 17:42
GhfDllT

offline
Опыт: 3,980
Активность:
Цитата:
изменить положение частей интерфейса невозможно не исправляя game.dll
-я думаю ты сам конечно знаешь что имел в виду, но я не понял. Скрин прилагается: все кнопки рабочие, а оставшаяся область это собственно модель, лежащая в архиве вара(не вижу препятствий переделать) И зачем спращивается game.dll трогать... Я уже понял, что панели выделяются по шаблону четкие неизменяемые гарницы(SetAllPoints за это вроде отвечает), но там есть смещение, засчет которого можно элемент по всему монитору тягать:
SetPoint TOPRIGHT,"SinglePlayerMenu",TOPRIGHT, -0.4, -0.15, /*насколько я понял, здесь точка TOPRIGHT дочернего компонента устанавливается в точку TOPRIGHT родительского "SinglePlayerMenu" со смещением -0.4, -0.15. Ну а так как заработало, то значит понял я правильно*/
Миниатюры
Кликните на картинку для увеличения
Название:  FrameOffset.jpg
Просмотров: 294
Размер:  87.6 Кбайт  
Старый 31.07.2009, 23:53
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Hellfim:
При желании можно перетащить все элементы, как душе угодно, но новые обрабатываться не будут, для них надо писать свои "обработчики".
И еще мне кажется (но я могу ошибаться), что положение устанавливается относительно экрана, а не родительского фрейма. Т.е. TOPRIGHT - верхний правый угол и от него, на -0.4 по оси X и на -0.15 по оси Y (я думаю понятно, что центром в данном случае выступает верхний правый угол).
Hellfim добавил:
Для написание обработчиков тебе нужно всего-то ничего, добавить в game.dll нужные функции (серьезно). Проблема в том, как ты будешь открывать то или иное меню, ведь названия функций и все, что хоть как-то может помочь, находится в байткоде. Думаю я понятно изложил.
Hellfim добавил:
Насчет новые обрабатываться не будут, то скорее всего к ним можно присобачить стандартные "обработчики".
Старый 01.08.2009, 00:17
GhfDllT

offline
Опыт: 3,980
Активность:
Цитата:
Думаю я понятно изложил.
- да в принципе ясно, попробую в следующей жизни если лень не будет..
Цитата:
И еще мне кажется (но я могу ошибаться), что положение устанавливается относительно экрана, а не родительского фрейма
- все-таки от родительского - прикидывал подбором.
Я в принципе привел строку с помощью которой получи то, что на скрине:изменил только -0.015 на -0.4 - все остальные кнопки и надпись(может и EditBox, не помню) наследуют от "втопленности" кнопки кампании, которую я собственно и менял.
Еще - если во фрейме уберешь у корневого SetAllPoints, то кнопки вообще исчезнут. То есть эта функция(или флаг?) отвечает за создание этих самых точек(TOPRIGHT и тд), а это значит что вне фрейма(в окне) они не определены, хотя я завтра еще покопаюсь)))

GhfDllT добавил:
Однако же "полезна " для модмейкинга сия тема, ппц, сам поражаюсь...
Старый 01.08.2009, 00:35
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 02:37.