Jump to content
Korean Random
ribbed

Mod packages / Пакеты модов

Recommended Posts

7 часов назад, Polyacov_Yury сказал:

Спешу с новостями

Это я торможу с публикацией. :)

 

7 часов назад, Polyacov_Yury сказал:

В версии 0.9.20.1 пакет net.openwg.vfsgettext больше не будет нужен. Более изящное исполнение включено в стандартный клиент игры. По крайней мере - на тесте это так.

Да, это сознательное и запланированое изменение в 9.20.1.

Помимо фикса загрузки gettext-файлов было исправлено ещё примерно два бага.

 

Ждите обновления документации в скором времени.

Share this post


Link to post

Short link
Share on other sites
14 часа назад, Polyacov_Yury сказал:

Собственно, о чем я. Рассортировать пакеты в папке /mods/версия/ я предлагаю. К примеру, в отдельную папочку скидать такие вещи, как mods_gui, vxSettingsApi, modsListApi и подобные, в отдельную - моды от ПроТанки, в отдельную - от @Pavel3333... Просто чтобы все не лежало в одной аморфной куче. Ладно, я своими только модами пользовался, все тихо-мирно в папочке PYmods лежит и не мешает лишний раз. Но как только начал чужие модики накатывать - в папку с пакетами стало заглядывать боязно.

Это не решит проблему (которой нет, лол). Для этого нужен отдельный менеджер пакеджей, чтоб тыкать интерфейсом красиво можно было.

Edited by IzeBerg

Share this post


Link to post

Short link
Share on other sites

В 9.20.1 починили ряд багов:

  • Неполная регистронезависимость имён в VFS
  • Некорректная загрузка локаций из пакетов
  • Невозможность загрузки Gettext-файлов из VFS

Обновленная версия доки (v0.5) приаттачена к первому посту. Большое спасибо @Mixaill за работу над докой.

 

Английскую версию сейчас допереводим, приаттачу, как только будет готова.

Share this post


Link to post

Short link
Share on other sites
24 минуты назад, ribbed сказал:

В 9.20.1 починили ряд багов:

  • Неполная регистронезависимость имён в VFS

Ох ты ж ёжик.. Это, получается, мне придется аж в нескольких местах .lower()'ы у имен файлов из кода поубирать. С лету могу сказать, что затронутся BanksLoader и Ремодомод. Или, может, оставить их... По правилу "работает - не трожь" :)

 

P.S. Поправили пачку пробелов и переносов строк в доке, да. При этом "инсталлятор" все равно с одной Л написан :)

Share this post


Link to post

Short link
Share on other sites
32 минуты назад, ribbed сказал:

Неполная регистронезависимость имён в VFS

 

Тут нужно пояснить, что именно исправили.

 

Исправили только итерацию по списку файлов в /res/scripts/client/gui/mods/__init__.py

 

То есть модификация не будут два раза инициализироваться, если

  • она есть как в пакете, так и res_mods
  • имя файла содержит как минимум один символ в верхнем регистре

Однако, до сих пор необходимо:

  •  проводить дедупликацию данных от функции keys()

 

В остальных случаях править регистр предположительно не нужно, это исправлено в пункте

38 минут назад, ribbed сказал:

Некорректная загрузка локаций из пакетов

 

Share this post


Link to post

Short link
Share on other sites
В 12.10.2017 в 14:52, Mixaill сказал:

 

Тут нужно пояснить, что именно исправили.

 

Исправили только итерацию по списку файлов в /res/scripts/client/gui/mods/__init__.py

 

То есть модификация не будут два раза инициализироваться, если

  • она есть как в пакете, так и res_mods
  • имя файла содержит как минимум один символ в верхнем регистре

Однако, до сих пор необходимо:

  •  проводить дедупликацию данных от функции keys()

 

В остальных случаях править регистр предположительно не нужно, это исправлено в пункте

 

Только с четвертого запуска клиента, после прочтения пары скриптов и нескольких логов таки понял, о чем Вы. Этот фикс - да, я видел. От дважды-импорта модов.

Я просто думал, что наконец-то починили регистр у файлов в пакетах... Ну да ладно.

Share this post


Link to post

Short link
Share on other sites

Стесняюсь спросить, по приоритету загрузки что идет первое mods или старая res_mods. ? Не знаю как сейчас но раньше это мешало когда одни и те же файлы мода есть в пакетах и просто в res_mods лежали, если этого еще не сделали то надо бы сделать чтобы сначала прогружало пакеты а затем res_mods и только те скрипты которых нет в пакетах.

  • Upvote 1
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites
1 минуту назад, Armagomen_dev сказал:

что идет первое mods или старая res_mods.

в res_mods. как по мне, это удобно, когда есть старый вотмод и измененный .pyc, который отлаживаешь и помещаешь в вотмод новой версии.

Share this post


Link to post

Short link
Share on other sites
9 минут назад, Pavel3333 сказал:

в res_mods. как по мне, это удобно, когда есть старый вотмод и измененный .pyc, который отлаживаешь и помещаешь в вотмод новой версии.

Паша, я сейчас не про отладку говорю а про использование, да и автоматическое создание пакета делается в один клик, это не проблема. Проблема вылазит в конфликт когда один и тот же мод грузится из разных папок, но при этом тот который в рес модс лежит старой версии и в нем нет параметров которые есть в новой но при этом мод обращается к ним, в итоге получаем ошибку.
Отладка никак не причина того чтобы не делать это.

Edited by Armagomen_dev

Share this post


Link to post

Short link
Share on other sites
17 часов назад, Armagomen_dev сказал:

Проблема вылазит в конфликт когда один и тот же мод грузится из разных папок, но при этом тот который в рес модс лежит старой версии и в нем нет параметров которые есть в новой но при этом мод обращается к ним, в итоге получаем ошибку.

Проблема возникла уже в том моменте, что каким-то образом была создана ситуация, что модификация у конечного пользователя есть как в виде .wotmod, так и в варианте для /res_mods/ .

Share this post


Link to post

Short link
Share on other sites
25 минут назад, Mixaill сказал:

Проблема возникла уже в том моменте, что каким-то образом была создана ситуация, что модификация у конечного пользователя есть как в виде .wotmod, так и в варианте для /res_mods/ .

 

Это вполне рабочая ситуация для юзверов. Вот из-за таких и многих других ситуаций я и запилил WMCleaner.

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites
On 12.10.2017 at 2:13 PM, ribbed said:

Некорректная загрузка локаций из пакетов

Не совсем понятно, о чем именно речь идет.

On 14.10.2017 at 1:26 AM, Armagomen_dev said:

Стесняюсь спросить, по приоритету загрузки что идет первое mods или старая res_mods. ?

Приоритет загрузки, ты не поверишь, прописан в paths.xml в корне игры.

On 14.10.2017 at 1:40 AM, Pavel3333 said:

лично у меня из-за этого никогда проблем не возникало, но ты прав.

@Armagomen_dev, проблема не в порядке загрузки, здесь, ИМХО, все сделано правильно, а в организации работы над модами. Лично я такими вещами уже давно не занимаюсь, поскольку у меня все уже в пакетах, которые собираются скриптами сборки в один двойной клик вместе с питоном, флешом и т.д., комбинация команд Ctrl+C/<переключить папку в проводнике>/Click+Delete/Ctrl+V для обновления пакетов в клиенте меня особо пока не напрягает. Для тех, у кого моды достаточно тяжелые и готовый *.wotmod весит несколько десятков мегабайт или более, и переписывать/обновлять его при каждой правке не вариант, могу посоветовать использовать Python не только для написания самих модов, но и для автоматизации установки обновленных файлов из рабочего каталога разработки в клиент с оценкой даты/времени/контрольной суммы (если необходимо) и перезаписью файлов в res_mods по необходимости + скрипт зачистки res_mods, чтобы когда все нужные файлы уже упакованы в *.wotmod и проводится финальное тестирование, файлы разработки не мешали.

On 14.10.2017 at 7:18 PM, Mixaill said:

Проблема возникла уже в том моменте, что каким-то образом была создана ситуация, что модификация у конечного пользователя есть как в виде .wotmod, так и в варианте для /res_mods/ .

Данная "проблема" скорее всего это просто "обратная сторона медали". Чуть ниже расписал более подробно.

 

Для пользователя res_mods как дает возможность редактировать файлы из пакета без редактирования пакета непосредственно (это положительная сторона вопроса), так и проблему в виде не совсем логичного переопределения файлов из пакета старыми версиями файлов. Но для второй ситуации следом идет вполне логичный вопрос - "Товарищ! Ты зачем копируешь файлы из res_mods старого патча в новый? Если ты не понимаешь, какой файл и за что отвечает?". Или к разработчикам мода, которые после миграции на пакеты в текущем патче не прописали, что нужно зачистить из res_mods все файлы, из тех, что присутствуют в пакете, или просто не прописавшим список файлов, которые необходимо удалить. Как по мне, проблемы абсолютно-не-думающего-своей-головой-пользователя - это точно не проблемы разработчика модификации.
Что касаемо решения такой проблемы со стороны разработчиков, если кому-то реально больше нечем заняться, на уровне пакета можно добавить код проверки на реальное расположение файла в VFS. ЕМНИП, у ResMgr есть функция разрешения пути VFS в реальный путь, и для res_mods он вернет путь, по которому явно будет присутствовать файл, а вот по пути виртуальному (файл в пакете) найти его средствами "RealFS" уже не получится. В общем, что-то типа

import os.path
import ResMgr
path = '<VFS_Filename>' # 'script/client/gui/mods/__init__.pyc'
isOverrided = os.path.isfile(ResMgr.resolveToAbsolutePath(path))

Ну особо дотошные товарищи могут сделать os.path.relpath и прописать проверку в стиле os.path.commonprefix c 'res_mods/' на равенство этому самому 'res_mods/' (слеш нужен, из-за особенностей работы commonprefix'а). Но это если прям ну совсем нечего делать, или речь идет о написании совместимого кода с программами, вносящими свои пути в paths.xml в корне игры.
Однако, проблема такого кода в том, что скрипт, в котором он прописан, можно переопределить. И данный механизм (переопределение файла через res_mods) обычно используется для отладки, либо изменения файлов в пакете без редактирования самого пакета (иногда конфига не хватает и грамотный народ начинает патчить файлы).

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
2 часа назад, GPCracker сказал:

Не совсем понятно, о чем именно речь идет.

Раньше если перепаковывал ангар в .wotmod, то результат был НЕОЧЕНЬ.

media-20171015.thumb.jpg.08f5584b08d9866bd208d780a14d20c0.jpg

 

 

 

Share this post


Link to post

Short link
Share on other sites
14 minutes ago, Mixaill said:

Раньше если перепаковывал ангар в .wotmod, то результат был НЕОЧЕНЬ.

Значит под локациями подразумеваются игровые локации, а не локации в плане файловой системы... Ассоциативное восприятие. Теперь понятно, спасибо.

Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites
16 часов назад, GPCracker сказал:

Приоритет загрузки, ты не поверишь, прописан в paths.xml в корне игры.

Ну в принципе, я не сомневался что у res_mods приоритет будет больше чем у пакетов. В этом и есть вся суть проблемы конечных юзеров когда у него одинаковый мод разных версий и там и там лежат. Да еще и некоторые умники думают что они умнее разработчика и распаковывают пакет после чего ложат файлы в res_mods потом забывают что они это сделали, обновляют пакет а старые то файлы никуда не делись которые они извлекли, тут то и начинаются танцы с бубном.

<root>
  <Paths>
    <Path>./res_mods/0.9.20.0</Path>
    <Path mode="recursive" mask="*.wotmod" root="res">./mods/0.9.20.0</Path>

 

Share this post


Link to post

Short link
Share on other sites
1 minute ago, Armagomen_dev said:

В этом и есть вся суть проблемы конечных юзеров когда у него одинаковый мод разных версий и там и там лежат. Да еще и некоторые умники думают что они умнее разработчика и распаковывают пакет после чего ложат файлы в res_mods потом забывают что они это сделали, обновляют пакет а старые то файлы никуда не делись которые они извлекли, тут то и начинаются танцы с бубном.

Вот это точно проблемы этих самых "умников". Если кто-то не умеет читать инструкции, это точно не проблемы того, кто эти инструкции пишет.

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

The document is under CC BY-SA 4.0 license. Does that mean that the code examples at chapter 8 are also under that license?

According to Creative Commons's compatible license page that license is compatible with itself, Free Art license and GPLv3. Can I use some other open source license instead, like MIT license or LGPL 2.1 and still use the code in my mod?

Share this post


Link to post

Short link
Share on other sites
22 минуты назад, jhakonen сказал:

The document is under CC BY-SA 4.0 license. Does that mean that the code examples at chapter 8 are also under that license?

According to Creative Commons's compatible license page that license is compatible with itself, Free Art license and GPLv3. Can I use some other open source license instead, like MIT license or LGPL 2.1 and still use the code in my mod?

Im use WTFPL open license and its ok :)

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...