package characterCreateMenu.contents
{
import characterCreateMenu.data.CharacterData;
import characterCreateMenu.event.CreateMenuEvModel;
import fl.transitions.easing.Strong;
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
import ncsoft.l2.core.L2UIComponent;
import ncsoft.l2.events.L2UIEvent;
import ncsoft.l2.events.L2UIToolTipEvent;
import ncsoft.l2.native.L2UISystem;
import scaleform.clik.controls.RadioButton;
import scaleform.clik.motion.Tween;
import scaleform.gfx.InteractiveObjectEx;
public class CreateMenuTopCenter extends L2UIComponent
{
internal static var _instance:CreateMenuTopCenter;
public var race_0:RadioButton;
public var race_1:RadioButton;
public var race_2:RadioButton;
public var race_3:RadioButton;
public var race_4:RadioButton;
public var race_5:RadioButton;
public var race_6:RadioButton;
public var race_7:RadioButton;
public var race_8:RadioButton;
public var msgBox:Sprite;
internal var txtBox:TextField;
public var tween:Tween;
public function CreateMenuTopCenter()
{
super();
_instance = this;
this.tween = new Tween(2000,this.msgBox);
this.tween.paused = true;
this.msgBox.alpha = 0;
}
public static function get Instance() : CreateMenuTopCenter
{
return _instance;
}
override protected function configUI() : void
{
var _loc2_:RadioButton = null;
super.configUI();
var _loc1_:int = 0;
while(_loc1_ < CharacterData.MAX_RACE)
{
_loc2_ = getChildByName("race_" + _loc1_) as RadioButton;
dispatchEvent(new L2UIToolTipEvent(L2UIToolTipEvent.REGISTER_ELEMENT,_loc2_));
_loc1_++;
}
this.race_0.group.addEventListener(Event.CHANGE,this.HandleChange);
this.addEvent();
this.txtBox = this.msgBox.getChildByName("systemMsg") as TextField;
this.SetTooltips();
InteractiveObjectEx.setHitTestDisable(this.msgBox,true);
InteractiveObjectEx.setHitTestDisable(this.txtBox,true);
}
protected function addEvent() : void
{
CreateMenuEvModel.evData.addEventListener("STEP_CHANGED_1",this.handleSetStep1);
CreateMenuEvModel.evData.addEventListener("EV_OnShow",this.handleOnShow);
}
private function handleSetStep1(param1:L2UIEvent) : void
{
var _loc2_:Number = Number(param1._parameter.obj.race);
(getChildByName("race_" + this.GetRaceIndexByRacdID(_loc2_)) as RadioButton).selected = true;
}
private function GetRaceIndexByRacdID(param1:Number) : int
{
switch(param1)
{
case 30:
return 7;
case 31:
return 8;
default:
return param1;
}
}
public function handleOnShow(param1:L2UIEvent) : void
{
this.tween.paused = true;
this.msgBox.alpha = 0;
this.checkform();
}
private function checkform() : void
{
var _loc4_:RadioButton = null;
var _loc5_:int = 0;
var _loc8_:RadioButton = null;
var _loc1_:int = 90;
var _loc2_:Boolean = L2UISystem.isClassicServer();
var _loc3_:Array = new Array();
this.race_6.visible = !_loc2_;
this.race_7.visible = L2UISystem.isAdenServer();
this.race_8.visible = L2UISystem.isAdenServer();
if(L2UISystem.isAdenServer())
{
_loc3_.push(8);
}
_loc3_.push(0);
_loc3_.push(1);
_loc3_.push(2);
_loc3_.push(3);
_loc3_.push(4);
if(_loc2_)
{
if(L2UISystem.isAdenServer())
{
_loc3_.push(7);
}
_loc3_.push(5);
}
else if(!_loc2_)
{
_loc3_.push(5);
_loc3_.push(6);
}
var _loc6_:int = _loc3_.length * _loc1_;
var _loc7_:int = _loc6_ / 2 - _loc1_;
_loc4_ = getChildByName("race_" + _loc3_.pop()) as RadioButton;
_loc4_.x = _loc7_;
while(_loc3_.length > 0)
{
_loc8_ = getChildByName("race_" + _loc3_.pop()) as RadioButton;
_loc8_.visible = true;
_loc8_.x = _loc4_.x - _loc1_;
_loc4_ = _loc8_;
}
}
internal function SetTooltips() : void
{
var _loc2_:String = null;
var _loc3_:RadioButton = null;
var _loc1_:Number = 0;
while(_loc1_ < CharacterData.MAX_RACE)
{
_loc2_ = L2UISystem.getSystemString(CharacterData.raceNameStr[_loc1_]);
_loc3_ = getChildByName("race_" + _loc1_) as RadioButton;
_loc3_.label = _loc2_;
_loc1_++;
}
}
internal function HandleChange(param1:Event) : void
{
CreateMenuCenterRight.Instance.handleChange(param1);
}
public function ShowMsg(param1:String) : void
{
this.tween.paused = true;
this.tween.duration = 1000;
this.tween.delay = 0;
this.msgBox.alpha = 0;
this.tween.quickSet({"props":{"alpha":1}});
this.tween.ease = Strong.easeOut;
this.txtBox.htmlText = param1;
this.tween.onComplete = this.MsgBoxStartCompleted;
this.tween.paused = false;
}
public function HideMsg() : void
{
this.tween.paused = true;
this.tween.duration = 2000;
this.tween.delay = 3000;
this.tween.quickSet({"props":{"alpha":0}});
this.tween.ease = Strong.easeIn;
this.tween.onComplete = null;
this.tween.paused = false;
}
internal function MsgBoxStartCompleted() : void
{
this.HideMsg();
}
}
}
Да там всего в нескольких скриптах изменения вносились, я в них и меняю, но все равно почему-то ловлю критСтранно тогда почему крит, тем-более через hex только менялось.
Кстати возможно есть в флешке еще проверка на кол-во.
Не могу за пк, так бы посмотрел
А там нет какой-то связи с interface.u, пальцем в небо от ИЛ бойца: допустим как там рендомайзер вьібора расьі работает, не со скриптов? Если так, то, не найдя нужную расу, конечно, кританет. Или крит еще до етапа вьібора чарселекта вьіписьівается?Да там всего в нескольких скриптах изменения вносились, я в них и меняю, но все равно почему-то ловлю крит
Не, критует именно после кнопки создания чара в лоби. Типо в момент загрузки чар крейт.А там нет какой-то связи с interface.u, пальцем в небо от ИЛ бойца: допустим как там рендомайзер вьібора расьі работает, не со скриптов? Если так, то, не найдя нужную расу, конечно, кританет. Или крит еще до етапа вьібора чарселекта вьіписьівается?
Рандомайзер у меня от классика, в котором всего 6 рас, от людей до камаэлей. Как видишь, дк, ассассины, и новая гномка не попадаются в рандоме.Psycho, тогда другой пальцем в небо: а что если рандомайзер расьі проходится циклом по расам от 0 до макс инт, и там условно не в одном месте затереть надо, а в нескольких? - тоже херня?
Ну я через них и делаю жеВ ресурсе с утилитой l2tool есть ссылка на тему где можно работать с gfx и там есть некий gfx exporter из swf в gfx.
Может нужно как то по особому сохранить, опять же пк нет сейчас так бы посмотрел.
Гениально. А я по твоему где это делаю?Вырезай из флеша
Сорян не дочитал ) а по факту голову не грей. Найди сервер где это вырезано и возьми там. Эти файлы никто не криптует почти.Гениально. А я по твоему где это делаю?
Ты где-то видел сервера 474 или 502, где на мейне они вырезаны?)Сорян не дочитал ) а по факту голову не грей. Найди сервер где это вырезано и возьми там. Эти файлы никто не криптует почти.
Кстати мысль вдруг каким то образом есть проверка не только в мейне и это вызывает краши, хорошо бы глянуть сам nwindow.Ты где-то видел сервера 474 или 502, где на мейне они вырезаны?)
Если есть такие, дай линк в личку. Мне в ознакомительных целях, хочу понять как это вырезать правильно.
В данный момент я делаю на 474.Кстати мысль вдруг каким то образом есть проверка не только в мейне и это вызывает краши, хорошо бы глянуть сам nwindow.
Возможно все работает с остальным на 502, но с последним краш как раз связан в том бинарнике.
Кто знает какие костыли там сделали в новом клиенте
this.race_6.visible = !_loc2_;
Нужно сумонить кто немного разобрался в этом, мне тоже интересно стало как так крашит если в hex даже менялосьВ данный момент я делаю на 474.
Мне по сути вот здесь надо просто 6лять FALSE прописать, но как только я пытаюсь это сделать, ловлю крит, вообще ниxyя не понимаю.
Код:this.race_6.visible = !_loc2_;
О чем крит-то? Как правишь флеш? байткод корректный?В данный момент я делаю на 474.
Мне по сути вот здесь надо просто 6лять FALSE прописать, но как только я пытаюсь это сделать, ловлю крит, вообще ниxyя не понимаю.
Код:this.race_6.visible = !_loc2_;
Как то так выходит, хотя странно почемуО чем крит-то? Как правишь флеш? байткод корректный?
Открой готово вырезанный для 140. сравни байткод или вообще диф до и после в 140
Ну, попробовал через hex, все равно ловлю крит.Нужно сравнить первые несколько байт до изменений через hex в самом начале файла и после, возможно по этому и критует.
Надо перенести первые несколько байт после изменений в новой флешке.
*** Скрытый текст не может быть процитирован. ***
Error:
Protocol: S_NEW_CHARACTER_SUCCESS(807, 3) <= C_NOT_USE_14(3, 4) <= S_EX_BR_VERSION(6, 259) <= S_CHARACTER_SELECTION_INFO(19, 259) <= S_LOGIN_RESULT(11, 259) <= C_ALLIANCE_INFO(5, 260) <= C_ALLIANCE_INFO(45, 260) <= S_VERSION_CHECK(28, 261) <= C_LOGOUT(275, 262)
History: Advance <-...
О чем крит-то? Как правишь флеш? байткод корректный?
Открой готово вырезанный для 140. сравни байткод или вообще диф до и после 140
Error:
Protocol: S_NEW_CHARACTER_SUCCESS(807, 3) <= C_NOT_USE_14(3, 4) <= S_EX_BR_VERSION(6, 54) <= S_CHARACTER_SELECTION_INFO(19, 54) <= S_LOGIN_RESULT(11, 54) <= C_ALLIANCE_INFO(5, 55) <= C_ALLIANCE_INFO(45, 55) <= S_VERSION_CHECK(28, 56) <= C_LOGOUT(275, 57)
History: Advance <- GFxFlashObj::AdvanceAndRender <+ Flash Name: ContainerHUD Tick Count: 55 <- GFxUIManager::RenderFlash <- GFxFlashWnd::OnPaint <- NCVirtualWndMain::DrawChildWindow <- NCVirtualWndMain::DrawChildWindow <- WM_PAINT <- NCVirtualWndMain::DispatchWndMsg <- NConsoleWnd::ConsolePostRender <- UGameEngine::PostDraw <- ConsolePostRender <- Draw <- UGameEngine::Draw <+ GRenDev:fd6f0000 RI:fd6f47b4 <- UWindowsViewport::Repaint <- UWindowsClient::Tick <- ClientTick <- UGameEngine::Tick <- UpdateWorld <- CMainLoop::UpdateTheWorld <- MainLoop
Exception:
Code [EXCEPTION_READ_VIOLATION DataAddress:0x00000016]
Address [0x6E79EA28]
SegCs [0x0023]
NWindow.DLL [0x6E450000] Offset [0x0034EA28]
Error:
Protocol: S_NEW_CHARACTER_SUCCESS(807, 3) <= C_NOT_USE_14(3, 4) <= S_EX_BR_VERSION(6, 68) <= S_CHARACTER_SELECTION_INFO(19, 68) <= S_LOGIN_RESULT(11, 68) <= C_ALLIANCE_INFO(5, 69) <= C_ALLIANCE_INFO(45, 69) <= S_VERSION_CHECK(28, 70) <= C_LOGOUT(275, 71)
History: Advance <- GFxFlashObj::AdvanceAndRender <+ Flash Name: ContainerHUD Tick Count: 69 <- GFxUIManager::RenderFlash <- GFxFlashWnd::OnPaint <- NCVirtualWndMain::DrawChildWindow <- NCVirtualWndMain::DrawChildWindow <- WM_PAINT <- NCVirtualWndMain::DispatchWndMsg <- NConsoleWnd::ConsolePostRender <- UGameEngine::PostDraw <- ConsolePostRender <- Draw <- UGameEngine::Draw <+ GRenDev:fd6f0000 RI:fd6f47b4 <- UWindowsViewport::Repaint <- UWindowsClient::Tick <- ClientTick <- UGameEngine::Tick <- UpdateWorld <- CMainLoop::UpdateTheWorld <- MainLoop
Exception:
Code [EXCEPTION_READ_VIOLATION DataAddress:0x000002E8]
Address [0x6EC34A20]
SegCs [0x0023]
NWindow.DLL [0x6E9F0000] Offset [0x00244A20]
Error:
Protocol: S_NEW_CHARACTER_SUCCESS(807, 3) <= C_EX_DUMMY(3, 4) <= S_EX_BR_VERSION(6, 54) <= S_CHARACTER_SELECTION_INFO(19, 55) <= S_LOGIN_RESULT(11, 55) <= C_ALLIANCE_INFO(5, 56) <= C_ALLIANCE_INFO(45, 56) <= S_VERSION_CHECK(28, 57) <= C_LOGOUT(275, 88)
History: Advance <- GFxFlashObj::AdvanceAndRender <+ Flash Name: ContainerHUD Tick Count: 56 <- GFxUIManager::RenderFlash <- GFxFlashWnd::OnPaint <- NCVirtualWndMain::DrawChildWindow <- NCVirtualWndMain::DrawChildWindow <- WM_PAINT <- NCVirtualWndMain::DispatchWndMsg <- NConsoleWnd::ConsolePostRender <- UGameEngine::PostDraw <- ConsolePostRender <- Draw <- UGameEngine::Draw <+ GRenDev:fd6f0000 RI:fd6f47b4 <- UWindowsViewport::Repaint <- UWindowsClient::Tick <- ClientTick <- UGameEngine::Tick <- UpdateWorld <- CMainLoop::UpdateTheWorld <- MainLoop
Exception:
Code [EXCEPTION_READ_VIOLATION DataAddress:0xE06ECD61]
Address [0xE06ECD61]
SegCs [0x0023]
L2.exe [0x10900000] Offset [0xCFDECD61]
Диф это я про то, что можно взять 140 gfx до вырезания эртей и после(экспортировать из jpex как байт код). И через какую-нибудь diff Тулу, например в том же vscode сравнить и смотреть как было сделано. Если ты правишь в jpex не через байткод, скорее всего перекомпиливает обратно херово. Плюс смотреть пакетку вдруг там гоняют что-то специфичноеКод:Error: Protocol: S_NEW_CHARACTER_SUCCESS(807, 3) <= C_NOT_USE_14(3, 4) <= S_EX_BR_VERSION(6, 54) <= S_CHARACTER_SELECTION_INFO(19, 54) <= S_LOGIN_RESULT(11, 54) <= C_ALLIANCE_INFO(5, 55) <= C_ALLIANCE_INFO(45, 55) <= S_VERSION_CHECK(28, 56) <= C_LOGOUT(275, 57) History: Advance <- GFxFlashObj::AdvanceAndRender <+ Flash Name: ContainerHUD Tick Count: 55 <- GFxUIManager::RenderFlash <- GFxFlashWnd::OnPaint <- NCVirtualWndMain::DrawChildWindow <- NCVirtualWndMain::DrawChildWindow <- WM_PAINT <- NCVirtualWndMain::DispatchWndMsg <- NConsoleWnd::ConsolePostRender <- UGameEngine::PostDraw <- ConsolePostRender <- Draw <- UGameEngine::Draw <+ GRenDev:fd6f0000 RI:fd6f47b4 <- UWindowsViewport::Repaint <- UWindowsClient::Tick <- ClientTick <- UGameEngine::Tick <- UpdateWorld <- CMainLoop::UpdateTheWorld <- MainLoop Exception: Code [EXCEPTION_READ_VIOLATION DataAddress:0x00000016] Address [0x6E79EA28] SegCs [0x0023] NWindow.DLL [0x6E450000] Offset [0x0034EA28]
Код:Error: Protocol: S_NEW_CHARACTER_SUCCESS(807, 3) <= C_NOT_USE_14(3, 4) <= S_EX_BR_VERSION(6, 68) <= S_CHARACTER_SELECTION_INFO(19, 68) <= S_LOGIN_RESULT(11, 68) <= C_ALLIANCE_INFO(5, 69) <= C_ALLIANCE_INFO(45, 69) <= S_VERSION_CHECK(28, 70) <= C_LOGOUT(275, 71) History: Advance <- GFxFlashObj::AdvanceAndRender <+ Flash Name: ContainerHUD Tick Count: 69 <- GFxUIManager::RenderFlash <- GFxFlashWnd::OnPaint <- NCVirtualWndMain::DrawChildWindow <- NCVirtualWndMain::DrawChildWindow <- WM_PAINT <- NCVirtualWndMain::DispatchWndMsg <- NConsoleWnd::ConsolePostRender <- UGameEngine::PostDraw <- ConsolePostRender <- Draw <- UGameEngine::Draw <+ GRenDev:fd6f0000 RI:fd6f47b4 <- UWindowsViewport::Repaint <- UWindowsClient::Tick <- ClientTick <- UGameEngine::Tick <- UpdateWorld <- CMainLoop::UpdateTheWorld <- MainLoop Exception: Code [EXCEPTION_READ_VIOLATION DataAddress:0x000002E8] Address [0x6EC34A20] SegCs [0x0023] NWindow.DLL [0x6E9F0000] Offset [0x00244A20]
Код:Error: Protocol: S_NEW_CHARACTER_SUCCESS(807, 3) <= C_EX_DUMMY(3, 4) <= S_EX_BR_VERSION(6, 54) <= S_CHARACTER_SELECTION_INFO(19, 55) <= S_LOGIN_RESULT(11, 55) <= C_ALLIANCE_INFO(5, 56) <= C_ALLIANCE_INFO(45, 56) <= S_VERSION_CHECK(28, 57) <= C_LOGOUT(275, 88) History: Advance <- GFxFlashObj::AdvanceAndRender <+ Flash Name: ContainerHUD Tick Count: 56 <- GFxUIManager::RenderFlash <- GFxFlashWnd::OnPaint <- NCVirtualWndMain::DrawChildWindow <- NCVirtualWndMain::DrawChildWindow <- WM_PAINT <- NCVirtualWndMain::DispatchWndMsg <- NConsoleWnd::ConsolePostRender <- UGameEngine::PostDraw <- ConsolePostRender <- Draw <- UGameEngine::Draw <+ GRenDev:fd6f0000 RI:fd6f47b4 <- UWindowsViewport::Repaint <- UWindowsClient::Tick <- ClientTick <- UGameEngine::Tick <- UpdateWorld <- CMainLoop::UpdateTheWorld <- MainLoop Exception: Code [EXCEPTION_READ_VIOLATION DataAddress:0xE06ECD61] Address [0xE06ECD61] SegCs [0x0023] L2.exe [0x10900000] Offset [0xCFDECD61]
Твой l2tool, jpexs, HxD
Хз как там правильно сравнивать, но вот:
Ну так я сравнивал, и смотрел что именно менялось. Пытаюсь провернуть тоже самое, и получаю крит.Диф это я про то, что можно взять 140 gfx до вырезания эртей и после(экспортировать из jpex как байт код). И через какую-нибудь diff Тулу, например в том же vscode сравнить и смотреть как было сделано. Если ты правишь в jpex не через байткод, скорее всего перекомпиливает обратно херово. Плюс смотреть пакетку вдруг там гоняют что-то специфичное
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?