GPCracker 2,088 #420649 Posted February 10, 2018 (edited) 14 hours ago, Polyacov_Yury said: Почему-то при наличии чего бы то ни было в поле extra у ZipInfo какого-либо файла ломает этот самый файл (ResMgr просто игнорирует байт, в котором написана длина этого самого extra, и читает контент файла сразу после его имени, срезая вместо этого его данные в конце на то же число байт). Потому что у картошко-кодеров, судя по всему, руки растут не совсем откуда нужно. Если уж было сказано, что формат пакетов zip, тогда уж реализуйте менеджер ресурсов в соответствии с протоколом, либо публикуйте актуальную документацию по формату. Сидеть и раскуривать, почему с одним упаковщиком работает, а с другим нет, уже за*****ло, честное слово. Edited February 10, 2018 by GPCracker Quote Share this post Link to post Short link Share on other sites
Konstantin_Almighty 8 #420651 Posted February 10, 2018 9 минут назад, GPCracker сказал: Потому что у картошко-кодеров, судя по всему, руки растут не совсем откуда нужно. Если уж было сказано, что формат пакетов zip, тогда уж реализуйте менеджер ресурсов в соответствии с протоколом, либо публикуйте актуальную документацию по формату. Сидеть и раскуривать, почему с одним упаковщиком работает, а с другим нет, уже за*****ло, честное слово. Да кто вам сказал, что они у них присутствуют вообще (руки)..... что вы, я вас умоляю, они их делают ОППОЙ и при этом ей же и думают Quote Share this post Link to post Short link Share on other sites
Polyacov_Yury 1,667 #420800 Posted February 11, 2018 Кстати, раз уж тут пошла пьянка про редактирование gui.mods.__init__ - почему бы не запихнуть функцию findValidMods под @adisp.async()? А то винда иногда аж ругается, мол, у тебя подвисло :) Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,203 #420805 Posted February 11, 2018 Только что, Polyacov_Yury сказал: Кстати, раз уж тут пошла пьянка про редактирование gui.mods.__init__ - почему бы не запихнуть функцию findValidMods под @adisp.async()? А то винда иногда аж ругается, мол, у тебя подвисло :) И как тогда линейная последовательность загрузки будет выполняться? Quote Share this post Link to post Short link Share on other sites
Polyacov_Yury 1,667 #420806 Posted February 11, 2018 4 минуты назад, StranikS_Scan сказал: И как тогда линейная последовательность загрузки будет выполняться? Как бы линейность под этим декоратором не нарушается ни разу. Просто, пока мод чего-то там делает, главная треда продолжает общаться с системой. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,203 #420812 Posted February 11, 2018 (edited) Только что, Polyacov_Yury сказал: Как бы линейность под этим декоратором не нарушается ни разу. Просто, пока мод чего-то там делает, главная треда продолжает общаться с системой. Чиво? При линейной загрузке всё что происходит в твоем моде по вызову import "твой_мод" должно и будет выполняться в главном потоке. После чего главный поток перейдет к следующему импорту. Если ты хочешь, чтобы при импорте твоего мода главным потоком, что-то в твоем моде начало жить своей жизнью, то сам прописывай потоки. Главная треда запустит твои потоки и пойдет дальше по своим делам моды импортировать. Edited February 11, 2018 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
Polyacov_Yury 1,667 #420833 Posted February 11, 2018 1 час назад, StranikS_Scan сказал: Чиво? При линейной загрузке всё что происходит в твоем моде по вызову import "твой_мод" должно и будет выполняться в главном потоке. После чего главный поток перейдет к следующему импорту. Если ты хочешь, чтобы при импорте твоего мода главным потоком, что-то в твоем моде начало жить своей жизнью, то сам прописывай потоки. Главная треда запустит твои потоки и пойдет дальше по своим делам моды импортировать. Немножко путаешь главный поток всего клиента в целом и главный поток питона этого самого клиента. Посмотри, как у меня skinLoader работает - потоку сишного кода все время отдается контроль и тут же возвращается обратно. Он, получается, весь выполняется в главном потоке, но не прерывает его работу. Так же работают и всякие OutfitApplier'ы и прочие клиент-серверные штуки. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,203 #420841 Posted February 11, 2018 (edited) Только что, Polyacov_Yury сказал: Немножко путаешь главный поток всего клиента в целом и главный поток питона этого самого клиента. Посмотри, как у меня skinLoader работает - потоку сишного кода все время отдается контроль и тут же возвращается обратно. Он, получается, весь выполняется в главном потоке, но не прерывает его работу. Так же работают и всякие OutfitApplier'ы и прочие клиент-серверные штуки. В делфи такое ProcessMessages назывался, когда главный поток принудительно отвлекается на выполнение накопившихся сообщений. Эта штука хуже потоков, так как если питоновский поток переключается каждые N-инструкций, а ты его при этом грузишь потной работой, то мона время выполнения задачи удленить в сотни раз, из-за этих переключений. В питоне правда все может быть не так плохо, точнее хотел сказать что в питоне что многопоточность что ProcessMessages могут одинаково плохо работать из-за отсутствия реальной многопоточности. Edited February 11, 2018 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
Armagomen_UA 158 #421129 Posted February 14, 2018 Кароче ну как всегда. В кратце: мод грузится 2 раза. В meta.xml версии прописаны разные. Отличие в пакетах: Имя питон файла и папки с модом.http://joxi.ru/V2V5PPdF0PONjm На этом всё. И тут вопрос, на кой тогда нужен meta.xml если там явно прописана версия которую нужно использовать но при этом старый пакет не отключается ? Quote Share this post Link to post Short link Share on other sites
Polyacov_Yury 1,667 #421131 Posted February 14, 2018 9 минут назад, Armagomen_dev сказал: Отличие в пакетах: Имя питон файла и папки с модом. 9 минут назад, Armagomen_dev сказал: на кой тогда нужен meta.xml meta.xml разрешает конфликты между вотмодами. Если ты переименовал скрипт - то конфликта никакого не будет, и обе версии будут импортированы. RTFM. Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #421144 Posted February 14, 2018 (edited) 34 minutes ago, Armagomen_dev said: В meta.xml версии прописаны разные. Так в доке явно написано, что Quote При наличии узла <id> в файле meta.xml, имя файла пакета не влияет на порядок загрузки. Пакеты, у которых <id> совпадает, считаются разными версиями или частями одной и той же модификации, и конфликты между ними также не учитываются. Данные пакеты загружаются в порядке увеличения версии, которая хранится в узле <version>. Иными словами, считается, что конфликты между различными версиями одного и того же мода автор уже разрешил самостоятельно; при наличии файлового конфликта приоритет имеет файл из пакета, версия которого больше. Так что если у тебя в пакетах скрипт имеет разные имена, загружены будут оба скрипта, если пути к файлам скриптов совпадают - только скрипт из более нового пакета. Данный подход позволяет разбивать модификацию на несколько пакетов, если суммарный объем файлов превышает предельно допустимый для стандартного zip-архива, а также выпускать микропатчи для модификаций, без необходимости полностью перекачивать все ресурсы. Далеко не все пользователи получают удовольствие от необходимости полностью перекачивать пакет тех же шкурок, если там было изменено всего несколько файлов, в таких ситуациях гораздо эффективнее выпустить фикс-пакет, версия которого будет больше версии основного, содержащий только измененные файлы, и менеджер ресурсов просто наложит его поверх основного и переопределит файлы, в которые были внесены изменения. Edited February 14, 2018 by GPCracker Quote Share this post Link to post Short link Share on other sites
Armagomen_UA 158 #421175 Posted February 15, 2018 11 часов назад, Polyacov_Yury сказал: meta.xml разрешает конфликты между вотмодами. 11 часов назад, GPCracker сказал: Данный подход позволяет разбивать модификацию на несколько пакетов, если суммарный объем файлов превышает предельно допустимый для стандартного zip-архива, а также выпускать микропатчи для модификаций, без необходимости полностью перекачивать все ресурсы. Короче я понял, он в роди бы как устраняет конфликты по задумке, но в реале не очень. Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #427898 Posted April 14, 2018 Все пакеты, находящиеся в каталоге <каталог_WoT>/mods/<версия_WoT>/, сортируются по значениям узлов <id> и <version> в файле meta.xml и загружаются по порядку. В случае отсутствия файла meta.xml внутри пакета, в качестве идентификатора пакета будет использовано имя файла. При наличии узла <id> в файле meta.xml, имя файла пакета не влияет на порядок загрузки. Пакеты, у которых <id> совпадает, считаются разными версиями или частями одной и той же модификации, и конфликты между ними также не учитываются. Данные пакеты загружаются в порядке увеличения версии, которая хранится в узле <version>. Версии пакетов сравниваются посимвольно согласно таблице ASCII. Поведение аналогично функции strcmp(). В каталоге три пакета: GPCracker.XModLib_v0.1.13.wotmod (<id>GPCracker.XModLib</id><version>0.01.13-000-59eddcfc</version>) GPCracker.XModLib_v0.1.17.wotmod (<id>GPCracker.XModLib</id><version>0.01.17-000-5a852716</version>) GPCracker.XModLib_v0.1.17-dirty.wotmod (<id>GPCracker.XModLib</id><version>0.01.17-000-5ad18616</version>) Согласно документации, пакеты должны быть отсортированы и загружены в приведенном выше порядке. Однако в логах порядок загрузки получается следующий: 2018-04-14 12:54:31.694: INFO: [PY_DEBUG] Mod package 'd:/wingames/world of tanks/mods/1.0.0.1/gpcracker.xmodlib_v0.1.13.wotmod' loaded 2018-04-14 12:54:31.694: INFO: [PY_DEBUG] Mod package 'd:/wingames/world of tanks/mods/1.0.0.1/gpcracker.xmodlib_v0.1.17-dirty.wotmod' loaded 2018-04-14 12:54:31.694: INFO: [PY_DEBUG] Mod package 'd:/wingames/world of tanks/mods/1.0.0.1/gpcracker.xmodlib_v0.1.17.wotmod' loaded Судя по тому, что вылета с конфликтом не происходит, meta.xml скорее всего таки подтягивается, но сортировка как-то странно себя ведет. @ribbed @Finister @Darth_Abaddon Quote Share this post Link to post Short link Share on other sites
Polyacov_Yury 1,667 #427903 Posted April 14, 2018 А теперь вспоминаем, по какому алгоритму сортируется version, и прогоняем через него ручками те версии, которые написаны у тебя в meta. Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #427909 Posted April 14, 2018 2 minutes ago, Polyacov_Yury said: А теперь вспоминаем, по какому алгоритму сортируется version, и прогоняем через него ручками те версии, которые написаны у тебя в meta. Согласно таблице ASCII, если судить по документации, в том-то как-бы и дело. >>> sorted(['0.01.17-000-5a852716', '0.01.17-000-5ad18616', '0.01.13-000-59eddcfc']) ['0.01.13-000-59eddcfc', '0.01.17-000-5a852716', '0.01.17-000-5ad18616'] А если сравнивать вручную, то символ 3 меньше символа 7, поэтому 0.01.13-000-59eddcfc будет первым, что, собственно, и происходит. А вот если сравнивать дальше, то начинается неведомая хрень. Символ 8 меньше символа d, но несмотря на это 0.01.17-000-5ad18616 почему-то грузится раньше. Информация специально для Юры. Последний набор символов - это закодированный в hex timestamp времени сборки. И насколько я понимаю, реализация сравнения строк на Python описана здесь, и она не особо отличается от алгоритма работы strcmp. Quote Share this post Link to post Short link Share on other sites
Mixaill 1,737 #427939 Posted April 14, 2018 6 часов назад, GPCracker сказал: Символ 8 меньше символа d, но несмотря на это 0.01.17-000-5ad18616 почему-то грузится раньше. попробуй посмотреть не питон.логу а потому, что именно вытягивается с помощью ResMgr Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #427940 Posted April 14, 2018 Just now, Mixaill said: что именно вытягивается с помощью ResMgr Я бы вообще вряд ли обратил на это внимание, если бы у меня не вылетело внезапное исключение, источником которого мог быть только устаревший код. А поскольку в пакете с пометкой dirty как раз были необходимые исправления, это и навело на мысль, что с порядком загрузки что-то не то. Quote Share this post Link to post Short link Share on other sites
Draugd 0 #437531 Posted August 4, 2018 (edited) Народ подскажите как запаковать мод в пакедж .wotmod уже весь мозг себе сломал, и тупо перетаскивал без сжатия файлы и несколькими способами паковал без сжатия и т.д. не пашет мод, мало того в бой не пускает висит на загрузке боя...уже и монитор протирал и по клавиатуре бил, ничего не помогает!плиз подскажите что не так делаю на примере мода: del Edited August 12, 2018 by Draugd Quote Share this post Link to post Short link Share on other sites
krok65 79 #437532 Posted August 4, 2018 19 минут назад, Draugd сказал: Народ подскажите как запаковать мод в пакедж .wotmod уже весь мозг себе сломал, и тупо перетаскивал без сжатия файлы и несколькими способами паковал без сжатия и т.д. не пашет мод, мало того в бой не пускает висит на загрузке боя...уже и монитор протирал и по клавиатуре бил, ничего не помогает!плиз подскажите что не так делаю на примере мода: Цифровая панель счета (Makct).rar Так для пакетов путь другой же,соответственно скрипт нужно под него переделывать.Просто так закинув в res не будет работать. Quote Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,158 #437533 Posted August 4, 2018 17 минут назад, Draugd сказал: как запаковать мод в пакедж .wotmod http://wiki.wargaming.net/ru/Пакеты_модов Quote Share this post Link to post Short link Share on other sites