Сообщений: 150
Тем: 18
Зарегистрирован: Jan 2013
Собственно, 4 вопроса
1) Где лежит мини-лого в GoD awakening (та, что рядом с кнопками) ? В l2font-e заменил, в localization вообще ноль реакции на ссылку.
2) Что случилось со скриптами ? Раньше декод-хекс-енкод работал, сейчас - нет. FC говорит, что различия всего в паре строк файла (дефолтного и перепакованного), что это за фигня ?
3) Кто-нибудь занимался де-сериализацией interface.xdat ?
4) Ищу инфу по формату ugx (любую) - спецификацию от унреала (если это не л2 отсебятина) / экспортер (вдруг есть) и т д
Ну и напоследок, если кто копался в ///uidebug ///ui - поделитесь инфой о результатах )
Сообщений: 406
Тем: 10
Зарегистрирован: Jun 2008
Репутация:
2,862
oSg Написал:Собственно, 4 вопроса
1) Где лежит мини-лого в GoD awakening (та, что рядом с кнопками) ? В l2font-e заменил, в localization вообще ноль реакции на ссылку.
2) Что случилось со скриптами ? Раньше декод-хекс-енкод работал, сейчас - нет. FC говорит, что различия всего в паре строк файла (дефолтного и перепакованного), что это за фигня ?
3) Кто-нибудь занимался де-сериализацией interface.xdat ?
4) Ищу инфу по формату ugx (любую) - спецификацию от унреала (если это не л2 отсебятина) / экспортер (вдруг есть) и т д
Ну и напоследок, если кто копался в ///uidebug ///ui - поделитесь инфой о результатах )
от скриптов мало толку теперь. Их переписали на ActionScript
Наверно для многих открою тайну )
Пример:
[ PHP код: <?php
//package data
// class L2UIAnchorPointType
package ncsoft.l2.data
{
public class L2UIAnchorPointType extends Object
{
public function L2UIAnchorPointType()
{
super();
return;
}
public static const ANCHORPOINT_None:int=0;
public static const ANCHORPOINT_TopLeft:int=1;
public static const ANCHORPOINT_TopCenter:int=2;
public static const ANCHORPOINT_TopRight:int=3;
public static const ANCHORPOINT_CenterLeft:int=4;
public static const ANCHORPOINT_CenterCenter:int=5;
public static const ANCHORPOINT_CenterRight:int=6;
public static const ANCHORPOINT_BottomLeft:int=7;
public static const ANCHORPOINT_BottomCenter:int=8;
public static const ANCHORPOINT_BottomRight:int=9;
}
}
// class L2UIModel
package ncsoft.l2.data
{
import flash.external.*;
import ncsoft.l2.core.*;
import ncsoft.l2.events.*;
import ncsoft.l2.interfaces.*;
public class L2UIModel extends ncsoft.l2.core.L2UIBase implements ncsoft.l2.interfaces.IL2UIBase
{
public function L2UIModel()
{
super();
return;
}
public override function addEvent():void
{
ncsoft.l2.events.L2UIEventString.CALLBACK_WINDOW_CLOSE = "onReceivedCloseUI";
ncsoft.l2.events.L2UIEventString.CALLBACK_RESOLUTION = "setCurrentResolution";
flash.external.ExternalInterface.addCallback(ncsoft.l2.events.L2UIEventString.CALLBACK_EVENT, this.callbackEvent);
flash.external.ExternalInterface.addCallback(ncsoft.l2.events.L2UIEventString.CALLBACK_MOVE, this.callbackMove);
flash.external.ExternalInterface.addCallback(ncsoft.l2.events.L2UIEventString.CALLBACK_FOCUS, this.callbackFocus);
flash.external.ExternalInterface.addCallback(ncsoft.l2.events.L2UIEventString.CALLBACK_DATA, this.callbackData);
flash.external.ExternalInterface.addCallback(ncsoft.l2.events.L2UIEventString.CALLBACK_WINDOW_CLOSE, this.callbackWindowClose);
flash.external.ExternalInterface.addCallback(ncsoft.l2.events.L2UIEventString.CALLBACK_RESOLUTION, this.callbackResolution);
getDispacher().addEventListener(ncsoft.l2.events.L2UIEventString.CALL, this.call, false, 0, true);
return;
}
public override function removeEvent():void
{
getDispacher().removeEventListener(ncsoft.l2.events.L2UIEventString.CALL, this.call);
return;
}
public function callbackEvent(arg1:uint, arg2:Object=null):void
{
getDispacher().dispatchEvent(new ncsoft.l2.events.L2UIEvent(ncsoft.l2.events.L2UIEventString.CALLBACK_EVENT, {"type":arg1, "data":arg2}));
return;
}
public function callbackMove(arg1:Number, arg2:Number):void
{
getDispacher().dispatchEvent(new ncsoft.l2.events.L2UIEvent(ncsoft.l2.events.L2UIEventString.CALLBACK_MOVE, {"x":arg1, "y":arg2}));
return;
}
public function callbackFocus(arg1:Boolean, arg2:Boolean):void
{
getDispacher().dispatchEvent(new ncsoft.l2.events.L2UIEvent(ncsoft.l2.events.L2UIEventString.CALLBACK_FOCUS, {"focus":arg1, "transparency":arg2}));
return;
}
public function callbackData(arg1:Object=null):void
{
getDispacher().dispatchEvent(new ncsoft.l2.events.L2UIEvent(ncsoft.l2.events.L2UIEventString.CALLBACK_DATA, arg1));
return;
}
public function callbackWindowClose():void
{
getDispacher().dispatchEvent(new ncsoft.l2.events.L2UIEvent(ncsoft.l2.events.L2UIEventString.CALLBACK_WINDOW_CLOSE));
return;
}
public function callbackResolution(arg1:Number, arg2:Number):void
{
getDispacher().dispatchEvent(new ncsoft.l2.events.L2UIEvent(ncsoft.l2.events.L2UIEventString.CALLBACK_RESOLUTION, {"screenWidth":arg1, "screenHeight":arg2}));
return;
}
public function call(arg1:ncsoft.l2.events.L2UIEvent):void
{
flash.external.ExternalInterface.call(arg1._parameter.methodName, arg1._parameter.data);
return;
}
public function destroy():void
{
this.removeEvent();
return;
}
}
}
// class L2UISound
package ncsoft.l2.data
{
public class L2UISound extends Object
{
public function L2UISound()
{
super();
return;
}
public static const IFST_WINDOW_CLOSE:String="ItemSound.window_close";
public static const IFST_WINDOW_OPEN:String="ItemSound.window_open";
public static const CLICK_FAILED:String="ItemSound.click_failed";
public static const CLICK_01:String="InterfaceSound.click_01";
public static const CHAT_KEYWORD_ALERT:String="ItemSound3.Sys_Chat_Keyword";
}
}
// class L2UIToolTipData
package ncsoft.l2.data
{
public class L2UIToolTipData extends Object
{
public function L2UIToolTipData()
{
super();
if (_instance)
{
throw new Error("싱글톤이라 인스턴스를 생성 할 수 없습니다.");
}
return;
}
public function getXMLToolTipString(arg1:String, arg2:String, arg3:int=0, arg4:int=0, arg5:int=4, arg6:int=4, arg7:int=4, arg8:int=4, arg9:int=1, arg10:Boolean=true, arg11:Boolean=true):String
{
var loc1:*=null;
if (arg1 == "SimpleType")
{
loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = (loc1 = "") + ("Message=" + arg2)) + "|") + ("type=" + arg1)) + "|") + ("offSetX=" + arg3)) + "|") + ("offSetY=" + arg4)) + "|") + ("paddingTop=" + arg5)) + "|") + ("paddingBottom=" + arg6)) + "|") + ("paddingLeft=" + arg7)) + "|") + ("paddingRight=" + arg8)) + "|") + ("anchorPoint=" + arg9)) + "|") + ("bFixdPosition=" + arg10)) + "|") + ("bOnOff=" + arg11);
}
return loc1;
}
public static function getInstance():ncsoft.l2.data.L2UIToolTipData
{
return _instance;
}
{
_instance = new L2UIToolTipData();
}
public static const SIMPLE_TYPE:String="SimpleType";
public var type0:String="";
internal static var _instance:ncsoft.l2.data.L2UIToolTipData;
}
}
// class L2Window
package ncsoft.l2.data
{
public class L2Window extends Object
{
public function L2Window(arg1:String, arg2:String="", arg3:int=0, ... rest)
{
super();
this.flashID = arg1;
this.windowType = arg2;
this.titleStringNum = arg3;
this.registedState = rest;
return;
}
public var flashID:String;
public var windowType:String;
public var titleStringNum:int;
public var registedState:Array;
}
}
Человек просто обязан ошибаться, раз другие учатся на его ошибках .......
Сообщений: 150
Тем: 18
Зарегистрирован: Jan 2013
забавно, знать бы где еще их искать )
Сообщений: 227
Тем: 9
Зарегистрирован: Sep 2012
Репутация:
6,791
4)ugx - обычный unreal package.
Внутри находятся файлы класса GFxFlash.
Их формат:
- пустой блок Properties //скорее всего
- тип файла(gfx или tga)
- размер файла
- файл в бинарном виде
gfx по сути тот же swf, его легко можно декомпилировать.
Можно посмотреть, импортировав в UDK.
Пример BeautyShop:
Кому интересно, вот содержимое ugx файлов(gfx->swf, tga->png):
ui_kor_pts.zip (40.1 MB)
Сообщений: 1,759
Тем: 13
Зарегистрирован: May 2011
Репутация:
3,205
корейцы решили упростить фришардам редактирование UI?:redlol:
Сообщений: 2
Тем: 0
Зарегистрирован: Aug 2008
Репутация:
0
acmi, Привет, если не сложно можешь рассказать как распаковать из ugx файлы в формате tga, у меня получаются только GFxFlash и ничем не получатся их открыть.
Сообщений: 185
Тем: 4
Зарегистрирован: Sep 2012
Репутация:
1,372
Используйте l2tool от acmi последней версии. Он позволяет экспортировать и заменять(?) tga файлы.
Сообщений: 227
Тем: 9
Зарегистрирован: Sep 2012
Репутация:
6,791
enzo Написал:acmi, Привет, если не сложно можешь рассказать как распаковать из ugx файлы в формате tga, у меня получаются только GFxFlash и ничем не получатся их открыть.
acmi Написал:Их формат:
- пустой блок Properties
- тип файла(gfx или tga)
- размер файла
- файл в бинарном виде
Удаляйте то, что стоит до 4 пункта, и меняйте расширение на tga.
Сообщений: 2
Тем: 0
Зарегистрирован: Aug 2008
Репутация:
0
Спасибо большое за помощь и оперативность. Понял как вручную получить tga, но с l2tool acmi удобней. Отдельное спасибо за программу
|