Jump to content
Korean Random
ribbed

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

Recommended Posts

и paths.xml доступен, можно хоть 10 своих папок добавить

какой же ты оптимист !! да и не только ты... но это плюс

посвящу сегодня ночь (на работе) , ознакомлению возможных схем типа  "рейдерский захват"   :))

а чтобы у народа, не было не нужных мыслей, вот вам плюшка (пока),  элементарно  (психология однако)

Edited by tricsi

Share this post


Link to post

Short link
Share on other sites

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

Так в том-то и прикол, что пакеты, согласно доке, сортируются по значению id, если оно одинаковое - то как понять, в каком порядке (между собой) будут загружены пакеты? Ведь в данный момент все по сути упирается в реализацию сортировки?

Данный момент имеет довольно-таки важное значение, поскольку пакетом с тем же id может идти обновление/микропатч для какого-то тяжелого мода (например, пакета шкурок), где в целях экономии места присутствуют только измененные этим патчем файлы. И в таком случае именно от порядка загрузки зависит конечный результат.

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

Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

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

VFS формируется еще задолго до выполнения какого либо python кода.

 

На данный момент конфликты разрешать проще всего с помощью meta.xml.

У нас есть N пакетов с одинаковым id и разными version, конфликтные ресурсы забираются у тех у кого версия побольше.

 

* при одинаковом ID пакеты монтируются в возрастании относительно VERSION, а проверка конфликтов опускается

* как себя поведёт этот алгоритм если в версии кроме цифр и точек будут еще буквы я не знаю

* блин, там тупой strcmp =( 

Edited by POLIROID

Share this post


Link to post

Short link
Share on other sites

народ есть конфликт, net.openwg.vfsgettext_1.0.0.wotmod не работает   с  i18n_Loader.wotmod  автор Polyacov_Yury, то есть \res\text\lc_messages в запакованном виде wotmod

  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

народ есть конфликт

У Юры устаревший фикс, я не знаю какого ******** он его не удалил при релизе пакетов. Я ему уже написал в соответствующую тему.

VFS формируется еще задолго до выполнения какого либо python кода.

Печалька однако. Как-бы понятно, что оно грузится в самом начале, я просто описал идею. В лоб реализовать не получится, понятное дело, м.б. есть какие-то красивые способы, например как-то обозначить алгоритм приведения авторской версии к сравниваемому типу (к тому же int, например) внутри пакета. Или еще как-то реализовать возможность обозначить, как сравнивать версии для однотипных пакетов. Потому как написать универсальный алгоритм сравнения, применимый для всех схем нумерации версий, вряд ли получится, а принимать какую-то одну - это серьезное ограничение для мододелов, если учитывать что даже в "точечном" варианте версия может иметь вид v0.2.7-8-gdee9a3b (git describe), или подобный в других сиcтемах контроля версий. Не говоря уже про схемы с датой в качестве версии и т.д.

На данный момент конфликты разрешать проще всего с помощью meta.xml.

Ну как-бы тут да, вполне логично, для этого этот файлик в общем-то и нужен.

У нас есть N пакетов с одинаковым id и разными version, конфликтные ресурсы забираются у тех у кого версия побольше.

Проблема в том, как сравнивать версии. Универсального компаратора написать не получится. Сравнивать строки некорректно, ибо 0.10.0 явно не меньше 0.9.0, а строки сравниваются посимвольно. Т.е. 1 < 9. Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

обновление/микропатч для какого-то тяжелого мода (например, пакета шкурок)

микропатч  смысла нет, городить огород ? , только обновление, полная замена, усложнять не имеет смысла :) 

Share this post


Link to post

Short link
Share on other sites

Прикрепил обновленную доку v0.3, обновлены пункты 2, 5, 6.3.

  • Upvote 4
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

А мне одно непонятно: во имя чего весь этот геморрой?


Все анонимные жополизы отметились? Наминусовали-то. А ответить не могут. Импотенты.


Рабы системы.

  • Downvote 9

Share this post


Link to post

Short link
Share on other sites
On 03.05.2017 at 7:57 PM, ribbed said:

Прикрепил обновленную доку v0.3, обновлены пункты 2, 5, 6.3.

Дочитал до 6.3, ржу не могу просто.

Quote

Версии пакетов сравниваются посимвольно согласно таблице ASCII. Поведение совпадает с функцией strcmp():

On 03.05.2017 at 6:11 PM, GPCracker said:

Сравнивать строки некорректно, ибо 0.10.0 явно не меньше 0.9.0, а строки сравниваются посимвольно. Т.е. 1 < 9.

<face-palm>

Тут либо кучу лидирующих нулей писать... либо хэш какой-то упорядоченный.

Edited by GPCracker
Зачистка старых аттачей
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
@Tomas, мне кажется или @Mr 13 не прочь прописать кому-то если и не бан, то РО точно?

Share this post


Link to post

Short link
Share on other sites

Используйте ведущие нули :)

 

Молодцы менеджеры из ВГ - делают разработку модов всё доступнее и доступнее танковым обывателям, я валяюсь  :heh:

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

@Tomas, мне кажется или @Mr 13 не прочь прописать кому-то если и не бан, то РО точно?

 

Как он решит, так тому и быть. Я своё слово сказал, ответа не увидел.

  • Downvote 4

Share this post


Link to post

Short link
Share on other sites

Тут либо кучу лидирующих нулей писать... либо хэш какой-то упорядоченный.

Вставлю сюда пару джуниорских копеек, не пинайте сильно. Если сравнивать строки версий в питоне - лучше просто разделить строку на несколько int'ов с помощью 

list(map(int, version.split('.')))

А потом уже поочередно сравнивать int'ы из полученного списка с int'ами из сравниваемого списка. 

 

Если я правильно понял, о чем вы.

Edited by Pavel3333

Share this post


Link to post

Short link
Share on other sites

Алгоритм сравнения версий есть уже в клиенте. Готовый. Вызывается при попытке логина на сервер и сравнивает версию в Account.def с версией, которую сервер пришлет. Вполне можно взять общую идею оттуда и перенести в код сравнения версий на этапе создания vfs.

 

Что касается "какого многазвездочек Юра не забрал себе новый код в моды" - во-первых, я немного занят учебой (*когда осознал, что сессия через месяц*), и особо не следил за происходящим. Скайп на куски не рвуть - и ладно) А во-вторых, тот же самый GPCracker, который задал сей вопрос, немногим ранее обфыркал написанный в vfs.gettext код, и я все жду от него исправленную "нормальную" версию :D

Edited by Polyacov_Yury

Share this post


Link to post

Short link
Share on other sites

Молодцы менеджеры из ВГ - делают разработку модов всё доступнее и доступнее танковым обывателям, я валяюсь  :heh:

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

так как не обладаю достаточными знаниями и навыками в этом направлении, придётся уйти на покой  ))

Share this post


Link to post

Short link
Share on other sites

Если я правильно понял, о чем вы.

Не совсем. Речь идет об учете версии пакета при упорядочивании пакетов.

Там нельзя запустить питон.

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

А во-вторых, тот же самый GPCracker, который задал сей вопрос, немногим ранее обфыркал написанный в vfs.gettext код, и я все жду от него исправленную "нормальную" версию :D

Гы, так не обязательно втягивать код, можно просто на время притянуть пакет, пока код не появится. Хотя интуиция мне подсказывает что данный патч скоро выйдет на основу и пакет будет не нужен. Правда насколько скоро - пока не ясно. В доках он тоже обозначен временным решением, если что. Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

 

 

данный патч скоро выйдет на основу
 Ха-ха, лол.
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Прикрепил обновленную доку v0.4, обновлены пункты 6.1, 6.3, удален 9.4. Еще раз большое спасибо @Mixaill за работу над документом.

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites
Проблема в том, как сравнивать версии. Универсального компаратора написать не получится. Сравнивать строки некорректно, ибо 0.10.0 явно не меньше 0.9.0, а строки сравниваются посимвольно. Т.е. 1 < 9.

 

Я конечно не гуру, но как насчёт пошагового сравнения разделов номера патча то есть разделитель точка ведь. Пример 0.9.17.1  0.9.18.0 - видно что сначала сравнить 1 и 0 после сравнивать 17 и 18 после сравнить 9 и 9 после сравнить 0 и 0 иметь временную переменную которая будет получать значение 0 или 1 после сравнения, в данном случае на сравнение 17 и 18 она получит 1 что соответствует что номер патча2 больше чем номер патча 1 и после при сравнение 9 и 9 не поменяется =)

 

Ну и тогда в выше указанном примере 10 больше 9 будет получатся =)

 

Второй вариант преобразовывать номер патча в цифровой эквивалент 0.10.0 превратиться в 0100 а 0.9..0 превратиться в 090 видно что 100 больше 90 =)

 

 вопрос- в net.openwg.vfsgettext_1.0.0.wotmod  есть код который Позволяет ставить локализационные моды в res_mods \ mods без копирования файлов из res/text.  :dots:

и как локализационные моды перенести в в папку mods ?

по инструкций я не чего не понял, и не чего не работает побывал тут

не уверен или это нужно, - я сейчас делаю так =) русский клиент, ( можно любой другой и на форуме попросить папку text из русского закинутьв  рес модс) - после беру файлик ХМЛ который прописывает доп сервера в лобби выбора серверов и могу заходить таким образом на любой сервер =) ХМЛ файл взял из темы на танковом форуме "помагатор" мод называется =)

А раньше помнится тоже мучался с локалз и через батники запускал разные сервера =)

Собственно сам ХМЛ приложил можете скачать глянуть =) это именно то что стандартно в клиенте должно быть =) просто и понятно =)

scripts_config.xml

Edited by KOT_LUIS
  • Upvote 2
  • Downvote 1

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...