| 
		
	
	
	
		
	Сообщений: 5,862 
	Тем: 105 
	Зарегистрирован: Sep 2010
	
 Репутация: 
13,014 
	
	
		Emperor Написал:Emperor, Да что ты заладил со своими шрифтами и *.ugx? Я про какие-то прикольные вещи с *.xdat\*.u. Тут все зависит от желания и возможностей    
	
	
	
		
	Сообщений: 111 
	Тем: 8 
	Зарегистрирован: Aug 2014
	
 Репутация: 
181 
	
	
		подскажите, я не вкурю как называется это окно ![[Изображение: interface_video_options.gif]](http://www.lineage2brasil.com.br/imagens/guias/interface/interface_video_options.gif) 
В Interface.u есть OptionWnd, а в xdat - нету.. непонятки
	
Минусуя карму, пишите коммент
 
	
	
	
		
	Сообщений: 185 
	Тем: 4 
	Зарегистрирован: Sep 2012
	
 Репутация: 
1,372 
	
	
		Ванга-режим ВКЛ - у тебя клиент ГоД и выше. 
И окно у тебя выглядит вооот так:
 
Я прав?)
	 
	
	
	
		
	Сообщений: 1,610 
	Тем: 44 
	Зарегистрирован: Jan 2016
	
 Репутация: 
1,353 
	
	
		Persy, И что ещё они запихнули в *.ugx?
	 
	
	
	
		
	Сообщений: 185 
	Тем: 4 
	Зарегистрирован: Sep 2012
	
 Репутация: 
1,372 
	
	
		Emperor, многое. Дизайн и отладка на Scaleform в разы проще)
	 
	
	
	
		
	Сообщений: 4 
	Тем: 0 
	Зарегистрирован: May 2016
	
 Репутация: 
0 
	
	
		acmi Написал:Давно уже хотел запилить редактор, но все руки не доходили разобрать структуру interface.xdat.
 И вот, более-менее готова первая версия с поддержкой пока одного клиента - High Five.
 При запуске обновляет схему через интернет.
 Я не реверсил клиент, структуру подбирал на глаз, советую при использовании делать бекапы.
 Если кто-то хочет помочь с разбором неизвестных полей - пишите.
 
 Cкачать:
 java8u40
 
 Собрать:
 GitHub
 
 
 
 
			Возможности на примере 
1. Shortcuts
Создадим хоткей на WeatherWnd. Вещь функционально бесполезная, но для баловства сойдет.
 
Добавляем новый элемент в группу GamingStateShortcut
 ![[Изображение: pF7ql.png]](http://image.zone-game.info/images/2014/08/26/pF7ql.png)  
Назначаем клавиши и указываем действие
 ![[Изображение: wfZhe.png]](http://image.zone-game.info/images/2014/08/26/wfZhe.png)  
Профит
 ![[Изображение: uBvV6.jpg]](http://image.zone-game.info/images/2014/08/26/uBvV6.jpg) 2. Windows 
Основной блок информации о гуи.
 
Окно WeatherWnd на корейском языке, с дефолтным шрифтом текст не отображается.
 
С помощью гугл транслейта можно привести к более понятному виду
 ![[Изображение: jBHa.png]](http://image.zone-game.info/images/2014/08/26/jBHa.png)  ![[Изображение: bgop9.jpg]](http://image.zone-game.info/images/2014/08/26/bgop9.jpg) 3. Fonts 
Информация о подгружаемых шрифтах.
 
location: windows - ищет в системе, при пустом  грузит из систем.
 ![[Изображение: bEJUY.png]](http://image.zone-game.info/images/2014/08/26/bEJUY.png)  ![[Изображение: he4iI.jpg]](http://image.zone-game.info/images/2014/08/26/he4iI.jpg)  
			Скрипты Для автоматизации в приложении есть скриптовая консоль. Язык как и у схемы - Groovy. 
Примеры:
 
			Шорткат на WeatherWnd PHP код: <?php //see http://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyEvent.html
 def keycode1 = VK_A
 def keycode2 = VK_ALT
 def wndName = "WeatherWnd"
 def action = "ShowWindow Name=${wndName}"
 
 println "Add ${wndName} shortcut keys=${[keycode1, keycode2]}"
 
 xdat.shortcuts["GamingStateShortcut"].actions.add(
 new Shortcut.Action(
 keycode_1:keycode1,
 keycode_2:keycode2,
 action: action,
 unk8: 1
 )
 )
 
 println "done!"
 
			Выпилить камаэлей из окна создания персонажа PHP код: <?php println "Remove Kamael race from char create window"
 
 def raceList = xdat.windows["CharacterCreateSetupWnd"].children["cbRace"].values
 if (raceList.size() == 6){
 raceList.remove(5)
 println "done!"
 }
 
 
			Изменить расположение кнопок в окне логина(горизонтально по центру) PHP код: <?php def buttonWidth = 98
 def buttonHeight = 27
 def padding = 7
 def spacing = 1
 
 def window = xdat.windows["LoginMenuWnd"]
 window.anchor_parent = Alignment.BOTTOM_CENTER
 window.anchor_this = Alignment.BOTTOM_CENTER
 window.anchor_x = 0
 window.size_absolute_width = 2*padding+window.children.size()*(buttonWidth+spacing)
 window.size_absolute_height = 2*padding+buttonHeight
 window.children.eachWithIndex{button, ind->
 button.size_absolute_width = buttonWidth
 button.size_absolute_height = buttonHeight
 button.anchor_x = padding+ind*(buttonWidth+spacing)
 button.anchor_y = padding
 }
 println "done!"
 
 
			Убрать все кроме html с community board PHP код: <?php def board = xdat.windows["BoardWnd"]
 def html = board.children["HtmlViewer"]
 
 board.children.removeIf({obj->
 obj != html
 })
 
 println "Old:\tx=${html.anchor_x}\ty=${html.anchor_y}\tw=${html.size_absolute_width}\th=${html.size_absolute_height}"
 
 def dy = html.anchor_x - html.anchor_y
 html.anchor_y += dy
 html.size_absolute_height -= dy
 
 println "New:\tx=${html.anchor_x}\ty=${html.anchor_y}\tw=${html.size_absolute_width}\th=${html.size_absolute_height}"
 
 
			Вывести дерево ui PHP код: <?php void print(ui, n){
 print "\t"*n
 println ui
 if (ui instanceof Iterable)
 ui.each{child->
 print(child, n+1)
 }
 }
 
 xdat.windows.each{window->
 print(window, 0)
 }
 
 
			Cтарый инвентарь для Final-High Five. ТекстураPHP код: <?php def inventory = xdat.windows["InventoryWnd"]
 inventory.size_absolute_width = 410
 [
 "BtnRotateRight",
 "BtnRotateLeft",
 "ObjectViewport",
 "ObjectViewportDispatchMsg",
 "EquipBg",
 "TalismanAllow",
 ].each { rem ->
 inventory.children.removeIf({ el ->
 el.name == rem
 })
 }
 [
 EquipSlotBg        : [anchor_x: 4.0, anchor_y: 32.0, size_absolute_width: 124, size_absolute_height: 356, unk100: 'OldInventory.IconSlot'],
 EquipItem_Underwear: [anchor_x: 10.0, anchor_y: 76.0],
 EquipItem_Head     : [anchor_x: 49.0, anchor_y: 38.0],
 EquipItem_Hair     : [anchor_x: 10.0, anchor_y: 38.0],
 EquipItem_Hair2    : [anchor_x: 88.0, anchor_y: 38.0],
 EquipItem_Chest    : [anchor_x: 49.0, anchor_y: 76.0],
 EquipItem_Cloak    : [anchor_x: 88.0, anchor_y: 76.0],
 CloakSlot_Disable  : [anchor_x: 88.0, anchor_y: 76.0],
 EquipItem_Gloves   : [anchor_x: 10.0, anchor_y: 114.0],
 EquipItem_Legs     : [anchor_x: 49.0, anchor_y: 114.0],
 EquipItem_Feet     : [anchor_x: 88.0, anchor_y: 114.0],
 EquipItem_RHand    : [anchor_x: 10.0, anchor_y: 163.0],
 EquipItem_Waist    : [anchor_x: 49.0, anchor_y: 163.0],
 EquipItem_LHand    : [anchor_x: 88.0, anchor_y: 163.0],
 EquipItem_REar     : [anchor_x: 88.0, anchor_y: 212.0],
 EquipItem_Neck     : [anchor_x: 49.0, anchor_y: 212.0],
 EquipItem_LEar     : [anchor_x: 10.0, anchor_y: 212.0],
 EquipItem_LFinger  : [anchor_x: 88.0, anchor_y: 250.0],
 EquipItem_LBracelet: [anchor_x: 49.0, anchor_y: 250.0],
 EquipItem_RFinger  : [anchor_x: 10.0, anchor_y: 250.0],
 EquipItem_RBracelet: [anchor_x: 10.0, anchor_y: 302.0],
 EquipItem_Talisman1: [anchor_x: 64.0, anchor_y: 300.0],
 EquipItem_Talisman2: [anchor_x: 84.0, anchor_y: 300.0],
 EquipItem_Talisman3: [anchor_x: 104.0, anchor_y: 300.0],
 EquipItem_Talisman4: [anchor_x: 64.0, anchor_y: 320.0],
 EquipItem_Talisman5: [anchor_x: 84.0, anchor_y: 320.0],
 EquipItem_Talisman6: [anchor_x: 104.0, anchor_y: 320.0],
 Talisman1_Disable  : [anchor_x: 65.0, anchor_y: 301.0],
 Talisman2_Disable  : [anchor_x: 85.0, anchor_y: 301.0],
 Talisman3_Disable  : [anchor_x: 105.0, anchor_y: 301.0],
 Talisman4_Disable  : [anchor_x: 65.0, anchor_y: 321.0],
 Talisman5_Disable  : [anchor_x: 85.0, anchor_y: 321.0],
 Talisman6_Disable  : [anchor_x: 105.0, anchor_y: 321.0],
 HennaItem          : [anchor_x: 25.0, anchor_y: 355.0, size_absolute_width: 84, size_absolute_height: 26, cols: 3, rows: 1, spacing_horizontal: 4, spacing_vertical: 0, cellWidth: 24, cellHeight: 24],
 InventoryItembkg   : [anchor_x: 136.0, size_absolute_width: 252],
 InventoryItem      : [anchor_x: 137.0, size_absolute_width: 267, cols: 7],
 QuestItem          : [anchor_x: 137.0, size_absolute_width: 267, cols: 7],
 InventoryTab       : [anchor_x: 139.0]
 ].each { k, ps ->
 def element = inventory.children[k]
 ps.each { p, v ->
 element."$p" = v
 }
 }
 inventory.children.each { el ->
 if (el.name == "tabbkg") {
 el.anchor_x -= 73
 el.size_absolute_width += 36
 }
 }
 inventory.children["CrystallizeButton"].anchor_x -= 72
 [
 "TrashButton",
 "adenabk",
 "AdenaText",
 "AdenaIcon",
 "WeightIcon",
 "InvenWeight"
 ].each { name ->
 def element = inventory.children[name]
 element.anchor_x -= 37
 }
 
 
 
 HOW I CAN REMOVE SCROLL BAR FROM FREYA CLIENT PLS!!
 
	
	
	
		
	Сообщений: 1,610 
	Тем: 44 
	Зарегистрирован: Jan 2016
	
 Репутация: 
1,353 
	
	
		nikosdevil20;412524 Написал:HOW I CAN REMOVE SCROLL BAR FROM FREYA CLIENT PLS!! Where?
	 
	
	
	
		
	Сообщений: 4 
	Тем: 0 
	Зарегистрирован: May 2016
	
 Репутация: 
0 
	
	
		Emperor Написал:Where? 
from npc html http://i.imgur.com/gcfhrsp.jpg 
	
	
	
		
	Сообщений: 1,610 
	Тем: 44 
	Зарегистрирован: Jan 2016
	
 Репутация: 
1,353 
	
	
		nikosdevil20,  
Maybe this?
 ![[Изображение: screenshot_1594.jpg]](http://s5.postimg.org/ddm9358bb/screenshot_1594.jpg)  
	
	
	
		
	Сообщений: 4 
	Тем: 0 
	Зарегистрирован: May 2016
	
 Репутация: 
0 
	
	
		Emperor Написал:nikosdevil20, Maybe this?
 
 ![[Изображение: screenshot_1594.jpg]](http://s5.postimg.org/ddm9358bb/screenshot_1594.jpg) 
this is from freya client or h5? because i have not this in my interface.xdat
http://i.imgur.com/zzknd6Y.jpg |