ubacb Posted October 23, 2012 Share Posted October 23, 2012 Сообщения перенесены из этой темы, т.к. утеряли актуальность. Было бы очень кстати. Как раз пытался редактировать UserInfo.swf Link to comment Short link Share on other sites More sharing options...
VicKing Posted October 23, 2012 Share Posted October 23, 2012 Гугля говорит что есть фришный редактор ActionScript http://www.flashdevelop.org/ Link to comment Short link Share on other sites More sharing options...
13 Posted October 23, 2012 Share Posted October 23, 2012 Приветствую. Если найдётся хотя бы пара желающих кодеров, то я мог бы попробовать написать не очень большой гайд по зашиванию своего кода в swf как это делаем мы в XVM. Под кодером я понимаю человека, который не по наслышке знает что такое IDE, ООП, командная строка. Для обычных пользователей не подойдёт. Есть "Гайд по редактированию SWF файлов", но там только про изменение вшитых изображений. Кстати, не гуглил. Кто искал, такое в инете попадается? На офф форуме ВГ такого нет, наверняка, вообще. Если будет свободное время - пиши, конечно. Обязательно пригодится - инфы на этот счёт в сети почти нет. Link to comment Short link Share on other sites More sharing options...
█XlebniDizele4ku Posted October 26, 2012 Share Posted October 26, 2012 (edited) 0 Edited November 22, 2012 by █XlebniDizele4ku Link to comment Short link Share on other sites More sharing options...
KPOXA3ABP Posted November 16, 2012 Share Posted November 16, 2012 Изучив "Гайд по редактированию SWF файлов", понял, что мне его не достаточно. Буду весьма признателен гайду по инжекту своего кода в игровые swf. Link to comment Short link Share on other sites More sharing options...
█XlebniDizele4ku Posted November 16, 2012 Share Posted November 16, 2012 Ну вот пара людей и нашлась. Напишу, но не очень скоро. Ближайшие неделю-две нет времени заниматься. Link to comment Short link Share on other sites More sharing options...
KPOXA3ABP Posted November 16, 2012 Share Posted November 16, 2012 Ну вот пара людей и нашлась. Напишу, но не очень скоро. Ближайшие неделю-две нет времени заниматься. Ну тогда можете хотя бы обозначить инструментарий? Планирую на выходных озадачить себя серъёзным изучением. p.s. приятно встретить однофамильца ;) Link to comment Short link Share on other sites More sharing options...
█XlebniDizele4ku Posted November 16, 2012 Share Posted November 16, 2012 (edited) 0 Edited November 22, 2012 by █XlebniDizele4ku 5 @ Link to comment Short link Share on other sites More sharing options...
axazol Posted November 17, 2012 Share Posted November 17, 2012 Ппц.. вот только сегодня задался одним вопросом преведшим меня к модингу AS в WoT и тут нахожу это... =) Преамбула: Нужно получать статистику боя из игры. Игра в свою очередь пишет файлы Battle_results\***.dat файлы которые можно отпарсить и получить желаемое. Загвостка в том что игра пишет эти файлы только если досидеть до конца боя или нажать на кнопку "Подробнее" в логе в ангаре. Так вот, задумка у меня заставить игру писать эти файлы всегда (вышел раньше, дисконект и т.п.). Насколько я понимаю, как вариант можно написать/дописать event_handler для генерации этих файлов как только в лог попадает запись об завершении боя. Поправтье если я прусь не в том направлении... Или же проще будет дописать функцию лога на запись инфы в файл? Link to comment Short link Share on other sites More sharing options...
█XlebniDizele4ku Posted November 18, 2012 Share Posted November 18, 2012 Это, наверняка, даже не во флеше интерфейса, поскольку интерфейсу такая инфа по ходу боя не нужна, а в игровой логике на Питоне. 2 @ Link to comment Short link Share on other sites More sharing options...
axazol Posted November 18, 2012 Share Posted November 18, 2012 Это, наверняка, даже не во флеше интерфейса, поскольку интерфейсу такая инфа по ходу боя не нужна, а в игровой логике на Питоне. Исходя из того что я нарыл тут ты прав и неправ...В интерфейсном скрипте присутствует запись gfx.io.GameDelegate.call("battleResults.show", [this.__get__data().arenaUniqueID]); Т.е. получается надо вскрывать *.рус файлы и смотреть что там, но при этом надо будет подвесить обработчик который и будет запускать делегат. Да.. чем под виндой декомпилить *.рус файлы лучше? Link to comment Short link Share on other sites More sharing options...
Конь-Огонь Posted November 18, 2012 Share Posted November 18, 2012 декомпилить *.рус файлы лучше? Ну вот это например попробуй: sourceforge.net/projects/unpyc/ PS. Сорри за оффтоп) Давайте не будем отклоняться от заданной темы (по изменению и добавлению логики swf.) Link to comment Short link Share on other sites More sharing options...
axazol Posted November 18, 2012 Share Posted November 18, 2012 Ну вот это например попробуй: sourceforge.net/projects/unpyc/ PS. Сорри за оффтоп) Давайте не будем отклоняться от заданной темы (по изменению и добавлению логики swf.) Лично мне интересно сделать обработчик события в интерфейсе. Частично родной ссылается на функции зашитые в рус файлах. Так что одно из другого и всё что я нашёл или под линухи, что не вариант для меня и/или устаревшие. Link to comment Short link Share on other sites More sharing options...
axazol Posted November 18, 2012 Share Posted November 18, 2012 (edited) В общем есть ряд проблем: 1 - swfmill тот что я нашёл не работал без libiconv-2.dll, которую я тоже нашёл и т.п. 2 - после перегона swf в xml, правки и попытке перегона обратно ругается на некорректные символы lobby_messenger.xml:62815: parser error : invalid character in attribute value <String value="/> ^ lobby_messenger.xml:62815: parser error : attributes construct error <String value="/> ^ lobby_messenger.xml:62815: parser error : Couldn't find end of Start Tag String line 62815 <String value="/> ^ lobby_messenger.xml:62815: parser error : PCDATA invalid Char value 8 <String value="/> ^ lobby_messenger.xml:62816: parser error : invalid character in attribute value <String value="♀"/> ^ lobby_messenger.xml:62816: parser error : attributes construct error <String value="♀"/> ^ lobby_messenger.xml:62816: parser error : Couldn't find end of Start Tag String line 62816 <String value="♀"/> ^ lobby_messenger.xml:62816: parser error : PCDATA invalid Char value 12 <String value="♀"/> 3- в FlashDevelop не получается инжектнуть свой оверрайд. Оригинальные сорсы ругает на наличие строк в get функциях типа null; Если делать заглушку (Intrinsic) то при построении выдаёт список отсутствующих зависимостей и в итоге не инжектит. Edited November 18, 2012 by axazol Link to comment Short link Share on other sites More sharing options...
█XlebniDizele4ku Posted November 18, 2012 Share Posted November 18, 2012 > 1 - swfmill тот что я нашёл не работал без libiconv-2.dll, которую я тоже нашёл и т.п. Да, неприятно. > 2 - после перегона swf в xml, правки и попытке перегона обратно ругается на некорректные символы Да. У нас это решается стиранием таких символов. http://code.google.com/p/wot-xvm/source/browse/trunk/src/xvm/swf/PlayersPanel.xml.patch > 3- в FlashDevelop не получается инжектнуть свой оверрайд. Оригинальные сорсы ругает на наличие строк в get функциях типа null; > Если делать заглушку (Intrinsic) то при построении выдаёт список отсутствующих зависимостей и в итоге не инжектит. Не понял. Что такое оригинальный код? Похожей проблемы не встречал. Link to comment Short link Share on other sites More sharing options...
axazol Posted November 18, 2012 Share Posted November 18, 2012 (edited) > 1 - swfmill тот что я нашёл не работал без libiconv-2.dll, которую я тоже нашёл и т.п. Да, неприятно. > 2 - после перегона swf в xml, правки и попытке перегона обратно ругается на некорректные символы Да. У нас это решается стиранием таких символов. http://code.google.c...Panel.xml.patch > 3- в FlashDevelop не получается инжектнуть свой оверрайд. Оригинальные сорсы ругает на наличие строк в get функциях типа null; > Если делать заглушку (Intrinsic) то при построении выдаёт список отсутствующих зависимостей и в итоге не инжектит. Не понял. Что такое оригинальный код? Похожей проблемы не встречал. Я делал на примере FinalStatisticForm class wot.FinalStatistic.FinalStatisticForm extends net.wargaming.hangar.FinalStatistic.FinalStatisticForm так вот net.wargaming.hangar.FinalStatistic.FinalStatisticForm в проекте присутствует как заглушка intrinsic class net.wargaming.hangar.FinalStatistic.FinalStatisticForm extends gfx.core.UIComponent { function FinalStatisticForm(); function setCommonData(data); /* var _parent, __arenaUniqueId, tabs_mc, view_mc, vehicleSelector, __get__arenaUniqueId, __get__data; function FinalStatisticForm() { super(); _global.ASSetPropFlags(net.wargaming.hangar.FinalStatistic.FinalStatisticForm.prototype, ["requestCommonData", "selectVehicle"], 6, 1); } // End of the function function configUI() { super.configUI(); __arenaUniqueId = _parent._parent.arenaUniqueId; this.delayedRefresh(); } // End of the function function showWaiting(message, params) { if (_parent._parent.showWaiting) { _parent._parent.showWaiting(message, params); } // end if } // End of the function function hideWaiting() { if (_parent._parent.hideWaiting) { _parent._parent.hideWaiting(); } // end if } // End of the function function get arenaUniqueId() { return (__arenaUniqueId); } // End of the function function get data() { return (__data); } // End of the function function delayedRefresh() { if (requestCommonData == null) { __delayId = setTimeout(this, "delayedRefresh", 50); } else { if (__delayId > -1) { clearTimeout(__delayId); } // end if this.requestCommonData(__arenaUniqueId); } // end else if } // End of the function function setCommonData(data) { this.hideWaiting(); if (data) { __data = data; tabs_mc.dataProvider = [{label: "#menu:finalStatistic/tabs/commonStats", data: "CommonStats"}, {label: "#menu:finalStatistic/tabs/teamStats", data: "TeamStats"}, {label: "#menu:finalStatistic/tabs/detailsStats", data: "DetailsStats"}]; tabs_mc.drawLayout(); view_mc.changeView(); Selection.setFocus(tabs_mc); vehicleSelector.__set__data(data); } else { _parent.gotoAndStop("noData"); } // end else if } // End of the function static function addBlankLines(label, labelTF, targetTFs) { var _loc6 = labelTF.getTextFormat().getTextExtent(label, labelTF._width); var _loc5 = Math.floor(_loc6.textFieldHeight / (_loc6.ascent + _loc6.descent)); var _loc4 = 0; var _loc1 = 0; var _loc2; for (var _loc4 = 0; _loc4 < _loc5 - 1; ++_loc4) { for (var _loc1 = 0; _loc1 < targetTFs.length; ++_loc1) { _loc2 = targetTFs[_loc1]; _loc2.htmlText = _loc2.htmlText + "\n"; } // end of for } // end of for } // End of the function var STATS_LABELS_KEY = "#battle_results:team/stats/labels"; var requestCommonData = null; var selectVehicle = null; var __data = null; var __delayId = -1;*/ } Наследует по сути пустышку и сам содержит просто декларации. Edited November 18, 2012 by axazol Link to comment Short link Share on other sites More sharing options...
█XlebniDizele4ku Posted November 18, 2012 Share Posted November 18, 2012 (edited) Хм Могу предложить пойти протореной дорогой и сделать пошагово для любой уже реализованной фишки из набора XVM. Это позволит отработать действия. Может ошибка вскроется в неож-ом месте. Какой код подменяешь в xml? Вполне может быть что тот же как и в наших примерах, но в итоге не срабатывает. Опять же я такой косипор в minimap.swf встречаю. ...А. Блин, ты FinalStatisticForm и пробуешь. Глаза уже замылены ночью, пардон. Edited November 18, 2012 by █XlebniDizele4ku Link to comment Short link Share on other sites More sharing options...
Alastanka Posted November 19, 2012 Share Posted November 19, 2012 (edited) извеняюсь что не по теме просто уже сил нет искать розкавырял весь swf не могу понять где и что изменить http://www.koreanrandom.com/forum/topic/1918-%d0%b2%d0%be%d0%b7%d0%b2%d1%80%d0%b0%d1%82-%d0%b2-%d1%80%d0%be%d1%82%d1%8b-%d0%bf%d0%be%d0%b4%d1%81%d0%b2%d0%b5%d1%82%d0%ba%d1%83-%d0%b4%d1%80%d1%83%d0%b7%d0%b5%d0%b9-%d0%b7%d0%b5%d0%bb%d0%b5%d0%bd%d1%8b%d0%bc-%d1%86%d0%b2%d0%b5%d1%82%d0%be%d0%bc/ ткните носом где эта функция и я сам изменю Edited November 19, 2012 by Alastanka 1 @ Link to comment Short link Share on other sites More sharing options...
axazol Posted November 19, 2012 Share Posted November 19, 2012 (edited) Разобрался. По сути получается "родителя" можно попросту описывать аля: intrinsic class net.wargaming.messenger.controls.ServiceChannelButton { public function ServiceChannelButton (); public function receiveMessage (message, isPriority, notify, auxData); public function showPriorityMessage(message, auxData); } Просто декларируя перезаписываемые функции, что бы компилятор не сопротивлялся. Остался лишь вопрос дебага. =) Ну вот прям ну очень хочется посмотреть дамп переменной проходящей через функцию, хотя бы структуры. Edited November 19, 2012 by axazol Link to comment Short link Share on other sites More sharing options...
█XlebniDizele4ku Posted November 19, 2012 Share Posted November 19, 2012 Да-да. Просто обещалка. Но в чём ошибся так и непонятно. Для дебага мы пользуем наш xvm-proxy он же xvm-stat. В коде флеша в интересующем месте Logger.add("Bbb.abc = " + abc); и содержимое вываливает в терминал и в файл XVM.log в директории танков. Поиском можно у нас найти такие логгер.адд закоменченные. Сама реализация класса тоже открыта. Насколько знаю, там просто файл записывает на виртуальную фс посредством Dokan, а xvm-stat его просто подбирает, читает. Короче, если самому делать, то я предлагаю создавать файл где-то и в него писать. Если хочется готовое, то использовать наш xvm-stat и связанный с ним класс utils.Logger. Link to comment Short link Share on other sites More sharing options...
Recommended Posts