Jump to content
Korean Random

st11ks

User
  • Content Count

    20
  • Joined

  • Last visited

Everything posted by st11ks

  1. По такому принципу построен мой мод (тыц), но он для кланов. Можешь взять его за основу и выпилить ненужный функционал, оставив только то что тебе надо.
  2. Ребят, требуется помощь в небольшой корректировке swf. Есть FAQ.swf, нужно поменять заголовок окна на другое статическое значение. Место в котором идет присвоение заголовка окна нашел, но изменение почему-то не отрабатывает в клиенте.
  3. В принципе похожий функционал я у себя реализовал в моде для кланов. Если интересно wotvs.com
  4. Спасибо, видел. Декомпилировать получается, а вот собрать обратно что-то никак. Поэтому разместил как заказ.
  5. Необходимо пересобрать один из swf файлов клиента с небольшими изменениями (заменить переменное значение на константу)
  6. В этом патче многие моды не будут работать, в частности те, которые используют вызов окон в ангаре через fireEvent. WG переделал вызовы
  7. А пока WG пишет свою статью может все-таки кто-нить поделится самым простым примером создания Simple Window?
  8. несколько виртуальных машин и вперед
  9. There are many info about modification on this forum. Install Google Chrome and translate whole forum online
  10. Отвечу на первый твой вопрос. Если ты начал изучать питон, то наверное уже знаешь что такое модули и пакеты модулей, как происходит импорт модулей и пакетов. Так вот при запуске движок импортирует модули из папки \res\scripts\client, при импорте происходит создание классов, объектов и пр, каждый импортируемый модуль из этой папки в свою очередь импортирует вложенные модули и пакеты модулей и т.д. Но как оказывается перед тем как импортировать модули из родной папки \res\scripts\client, движок просматривает на предмет импорта еще и папку модов для текущего патча, о чем радостно сообщает в логфайле: Checking ./res_mods/0.8.11: mods found После этого он сначала загружает модули из папки \res_mods\0.8.11\scripts\client, и только потом переходит к своей родной папке \res\scripts\client А ты наверное уже знаешь, что в питоне при импорте двух модулей с одинаковым названием (даже если они лажат в разных местах) загружается первый, а загрузки второго не происходит (ну разве что явно не указать reload). Таким образом, если у тебя есть: \res_mods\0.8.11\scripts\client\CameraNode.pyc и \res\scripts\client\CameraNode.pyc то загружен будет первый, т.е. твой. Ради интереса создай файл login.py, с содержимым print('Hello WorldofTanks!'), скомпилируй и положи в \res_mods\0.8.11\scripts\client\ Запускай клиента и смотри что вывалится в python.log А вообще большинство модов, которые народ пишет, используют для загрузки модифицированный \res\scripts\client\CameraNode.pyc. Дописывает функцию обхода каталога модов и импорта всего что встретится в каталоге модов.
  11. Слушай, а вроде же S0me0ne свои скрипты защищает от декомпиляции. Вернее сильно усложняет процесс обычной декомпиляции. Как uinfo декомпилировал?
  12. code = 'x\xda.... упакованный исходник exec code.decode('zlib') - выполнение кода упакованного исходника нужен текст упакованного кода? Добавь: print code.decode('zlib') получишь: def code(__=code): (_______)=(globals)();del((_______)['code']) if(((_______).get('__doc__'))is((None))): (__)=(map)((ord),(__)[(339):]);(______)=[0]*(((((len)((__))+(1))*(7))/(8)));((___),(____),(_____))=((0),(0),(0)) for((__))in((__)): if((__)<(128)):break if((____)==(0)):((___),(____))=((__),(1)) else: (______)[(_____)]=((((___)<<(____))|(((__)&(127))>>((7)-(____))))&(255));(_____)+=(1);((___),(____))=((__),(((____)+(1))%(8))) if((__)<(128)): if((____)!=(0)): (__)=((((___)<<(____))|((__)>>((7)-(____))))&(255)) (______)[(_____):]=[((__))] elif((____)!=(0)):del((______)[(_____):]) exec((''.join((map)((chr),(______))).decode('zlib')))in((_______)) if(((_______).get('__doc__'))is((None))):(_______)['__doc__']='' code()
  13. Супер!!! То шо доктор прописал. Разобраться с синтаксисом и прочими особенностями питона не сложно, а вот копаться в хитросплетениях классов, используемых в движке Wot без этой доки - сущий ад :)
  14. Кстати, скрипты импортируются по алфавиту, т.е. если переименуешь свой скрипт в zzz.pyc то гарантированно будешь первым обрабатывать _populate. Для примера написал свой скрипт, который перехватывает onMessageReceived(self, message, priority, notify, auxData, preventPopup) Сделал так чтобы скрипт загружался до твоего, твой перехват отработал, мой нет. Потом сделал так чтобы скрипт загружался после твоего, мой перехват onMessageReceived отработал, твой нет. Потом в свою функцию добавил в конце вызов return tmp_onMessageReceived(self, message, priority, notify, auxData, preventPopup), отработал и мой перехват и твой python.log
  15. Жалко, что его скрипт нельзя декомпилировать.... А в твоем есть такое: def new_populate(self, target = 'SummaryMessage'): if SessionStatistic.NeedProceed: SessionStatistic.proceedBattles() old_populate(self) self.as_setInitDataS({'scrollStepFactor': self.SCROLL_STEP_FACTOR}) messagesList = self._model.getMessagesList() formedList = [] т.е. ты возвращаешь управление еще до того как сам обработал это событие, может есть смысл вызвывать исходную функцию populate по окончании своей обработки?
  16. правильно ли я понимаю, что все дело в перехвате функции "NotificationPopUpViewer._NotificationPopUpViewer__onMessageReceived" ? Кстати, как же клиент определяет какой из скриптов первым должен обработать сообщение?
  17. jeroohn, и все-таки, совместим ли ваш мод с модом "Клановые инструменты"?
  18. Уважаемый jeroohn, у твоего мода Exel была какая-то несовместимость с модом клановой статистики тык В последней версии Exel это уже исправлено или нет. И если не секрет, в чем была проблема?
  19. неужели нет ниодного благородного мододела, способного поделиться своим опытом?
  20. Будте снисходительны к начинающему мододелу. Есть большой опыт разработки на других языках, но с питоном только начинаю свое знакомство. Декомпилированные исходники готовых модов - это конечно хорошо, но для человека начинающего в них очень тяжело разобраться. Поэтому был бы примного благодарен за примеры простейших скриптов именно для Wot. Например, скрипт на добавление в системные сообщения (нотификации) текста "Hello World!" или скрипт на перевод всех символов в игровом чате в кириллицу, если он набран на латинице. Вообщем чем проще тем лучше :)
×
×
  • Create New...