Jump to content
Korean Random

SerVB

User
  • Content Count

    109
  • Joined

  • Last visited

Everything posted by SerVB

  1. Сколько токсичности и злости от Вас( Отвечу только по делу, на остальное не буду отвечать, так как не вижу смысла. Не хотите отвечать по делу, а хотите заводить срач – что ж, лучше вообще не пишите... Напомню, что я хочу узнать "по делу": Идея мода в том, чтобы модифицировать атлас на устройстве пользователя. Была предложена идея использовать для этого утилиту imagemagick, которая по-видимому является единственной популярной консольной программой, поддерживающую манипуляцию DDS картинками. Вы высказались, что exe утилиту использовать нельзя. И я хочу знать причину. Если я правильно понял, речь про XFW/XVM. Никого не хочу обидеть, но XVM – довольно неизвестное ПО. Есть ли еще примеры, кроме XVM? Желательно более известных программ. Также я попросил предложить варианты, как обойтись без exe. Вы не ответили. Надо ли это понимать так, что Вы не знаете других вариантов, а значит мод вообще не стоит делать?
  2. Я мододел? Вроде да. Я про него знал? Вроде нет. Так что это заблуждение, будьте терпимее, пожалуйста. Пользуясь случаем, спрошу, описаны ли где-нибудь такие полезные классы или принято получать такие знания в рандомных темах? Или вообще не надо учиться мододелию, потому что опытные мододелы не хотят, чтобы их теснили? Я же не говорю, что все программисты знают, что такое бинарник. Да, я имел в виду набор исполняемых файлов. Скачать можно вот здесь: https://imagemagick.org/script/download.php#windows. Сайт вроде бы не самопальный, а вполне официальный. Exe подписанные. Программа известная, если речь идет о рисовании картинок с помощью консольных команд. Думаю, что из-за известности с антивирусами проблем не будет. А Вы считаете иначе? Аргументируйте, пожалуйста, что значит "exe в модах быть не должно" – чье это требование – и предложите еще варианты.
  3. OMG. Ну хочется. Почему сразу надо так рубить? Если это закрытый код, можно было бы прямо сказать. За примеры спасибо в любом случае. Тем временем я почитал про imagemagick и понял, что оно само умеет рисовать. Это еще сильнее облегчает задачу: не надо тащить питоновские библиотеки с собой, только один бинарник остается. Выглядеть последовательность команд будет как-то так: convert sourceBattleAtlas.dds \ -alpha set -region 20x20+5+5 -alpha transparent -draw 'image srcOver 0,0 20,20 pathToTexture1.png' \ -alpha set -region 20x20+5+25 -alpha transparent -draw 'image srcOver 0,0 20,20 pathToTextrure2.png' \ battleAtlas.dds Для каждой подтекстуры ее область сначала заполняется прозрачным, потом туда рисуется кастомная подтекстура. Возможно, можно как-то более коротко эти команды записать... Получается, процентов 80 задачи уже понятно, как делать. Но еще остаются некоторые вопросы вот отсюда: Ха! Сам бинарник-то imagemagick в районе 100 МБ весит. Не очень приятно... Может быть, потом найдется подходящий инструмент попроще. Хотя можно даже не хранить этот бинарник внутри мода, а просто его скачать при первом запуске.
  4. Ну, в первоначальном варианте нужно будет вообще иметь по png картинке на каждую изменяемую иконку, но и "податласы" потом вполне можно будет поддержать. Пока что идея заключается в генерации атласа единоразово только в момент загрузки игры, но если клиент каждый раз при загрузке боя зачитывает файл атласа и это происходит после того, как из Питона стало видно тип боя, то это тоже вполне можно сделать. Но не в первых версиях мода.
  5. @StranikS_Scan , спасибо! Синглтон (или как это называется) AtlasManager выглядит действительно удобнее. Упоминание ResMgr бесценно! А можно ли где-нибудь о нем поподробнее почитать, например увидеть список доступных методов, описания? Примеры полезные, но хотелось бы и самому посмотреть.
  6. Класс, спасибо за уточнение, что экспериментировать надо с res_mods! Я перепроверил такие поведения: В res_mods при загрузке клиента пусто: загружаемся в ангар, кладем в res_mods свой атлас, идем в бой – загружается измененный атлас – успех. В res_mods при загрузке клиента лежит атлас: загружаемся в ангар, заменяем атлас на свой (операция успешно выполняется), идем в бой – загружается только что положеный атлас – опять успех. Получается, мод вполне сможет работать, манипулируя файлами в папке res_mods. Еще одна причина просить разрабов не убирать эту папку) Моду быть! Как я вижу первоначальную логику его работы: Он предоставляет переменную-список subtextures_to_change, куда другие моды при первом запуске добавляют словари вида {"atlasName": "название-путь целевого атласа", "subTextureName": "имя подтекстуры, которую надо заменить", "subTextureWotmodName": "название wotmod файла, где искать новую подтекстуру – то есть мод, который хочет внести изменения в атлас", "newTexturePath": "путь в wotmod к подтекстуре, которую надо поставить – png файл"}. Когда все моды загрузились, мод вытаскивает атласы из клиента, отрисовывает на них нужные изменения (я в своем моде сейчас это делаю с помощью библиотеки PIL, видимо придется поставлять эту или подобную библиотеку в составе мода, можно внутри его же wotmod), сохраняет DDS картинки в папке res_mods (DDS я в своем моде сейчас генерирую с помощью утилиты imagemagick, видимо придется поставлять эту или подобную утилиту в составе мода, можно внутри его же wotmod). Ура, клиент видит в res_mods файлы (сгенерированные и помещенные туда модом) и показывает модифицированные атласы. Видете ли возможные проблемы или звучит рабоче? Нужен ли мод, работающий по такой схеме, кому-то еще или только мне? Желает ли кто-то этим заняться опенсорсно на ГитХабе? Я бы присоединился. Либо если никто не начнет, я сам когда-нибудь начну потихоньку) Есть вопросы к более опытным мододелам, возможно, кто-то знает, расскажет и избавит от исследований клиента: Можно ли как-то подписаться на событие "все моды загрузились"? Если нет, можно ли на "ангар загружается"? Как принято узнавать текущую версию игры, чтобы находить правильные папки mods/версия и res_mods/версия? Что кроме battleAtlas стоит поддержать? Можно ли в рантайме узнать пути пакетов, или только хардкодить? Например, сейчас вижу, что battleAtlas лежит в res/packages/gui-part1.pkg, но помню, что когда-то был просто gui.pkg, то есть изменения могут быть, и хардкодить не хочется. Можно конечно сканировать все 150 pkg файлов на наличие нужных атласов, это недолго, но если можно прям из мода узнать путь к нужному атласу, то это еще лучше. Окей. Возможно, можно влезть в этот файл с помощью WinAPI. Но эти исследования можно оставить на крайний случай, раз мы пока увидели более легкий способ. Ну, если других вариантов нету, то можно было бы потерпеть перезапуск клиента. Но если можно без перезапуска, зачем терпеть?
  7. Не, тут вопрос скорее к @Kapany3uk: как получилось сменить атлас в ангаре? Даже если вручную какие-то действия были сделаны, все равно интересно
  8. @Kapany3uk, спасибо, отличная новость! Идея просто взять и заменить файл мода с атласом мне в голову не приходила. Я попробовал это сделать в проводнике, но файл заблокирован клиентом и перезаписать его нельзя. Возможно, этого не будет происходить, если модифицировать файл прям из клиента. Надо будет проверить. А Вы каким образом "меняли атлас"?
  9. @StranikS_Scan , а что означает "грузится"-то? Копируется в оперативку?
  10. Hmm, it's a long story. I will answer briefly. If you want to edit "wotmod" files, you should probably try something like https://koreanrandom.com/forum/topic/15280- . I haven't experience with it though. If you just want to clone source code, for example, from here https://github.com/SerVB/TheRecentStatOfYou , you need Python 2.7.7, Python 3, and any text editor. I've tried to say some words about building the mod here: https://github.com/SerVB/TheRecentStatOfYou#build-from-sources . If you find these instructions unclear, feel free to ask for clarifications.
  11. Перезапуск действительно очень не хотелось бы делать. Я бы даже сказал, что если делать, то без перезапуска) Вот это как раз и открытый вопрос. Надо поисследовать. Пока что я только смотрел на документ о пакетах модов, там есть вот это: К сожалению, документ довольно скупо рассказывает, что представляет из себя получаемая файловая система. "Пакеты сначала добавляются и обрабатываются конфликты, а только потом запускается код модов" – полезная информация, но на самом деле не очень понятно, что имеется в виду под "добавлением" всех пакетов. Какие варианты навскидку могут сработать, если оформлять мод как wotmod: Можно поставлять мод с фиктивными файлами атласов, например с пустыми. И при загрузке мода изменять свой wotmod файл, заменяя атласы на сгенерированные. Кажется рабочим, если клиент при "добавлении" пакета только запоминает ссылку на бинарные файлы, а подгружает файлы только по необходимости уже в процессе игры по запомненным ссылкам. Предыдущий вариант не сработает, если клиент заранее куда-нибудь копирует бинарное содержимое wotmod файлов и использует потом это скопированное содержимое. На самом деле, кажется, что такого не может быть, потому что клиент довольно большой и в оперативку не влезет, а на диск копировать было бы странно) Но клиент вполне может копировать какие-то определенные файлы – если атласы туда попадают, то печаль. Или например он может считать хэш от файлов, и если в процессе игры он поменялся, то игра вылетает – тоже кажется не очень реалистичным сценарием, потому что уж больно быстро загружается клиент, чтобы все хэши просчитать. Могут быть конечно и какие-то другие причины, почему первый вариант не сработает. В таком случае сходу варианты не придумываются; нужно будет смотреть на декомпилированный клиент (как всегда благодарствую) и пытаться понять, можно ли там как-то подвязаться к загрузке файлов и изменить уже загруженные файлы.
  12. Так вот именно, что мод при запуске танков: вытаскивает эту одну большую DDS из оригинальных файлов в клиенте, применяет изменения, которые просят сделать другие моды, и получает итоговую большую DDS, которую и отдает в качестве финальной клиенту. Эра хранения полных DDS в файлах модов должна пройти в таком случае. P. S.: можно запилить оптимизацию: запоминать последнюю сгенерированную DDS, и если команды на изменение поступили те же и исходник не изменился, то пропускать процесс генерации.
  13. Привет! Хотелось бы разрешать конфликты атласов не вручную, например, с помощью спец инструментов типа CCAtlas, а в рантайме с помощью спец мода. Как бы он мог работать: Мод бы мог вводить некий стандарт объявления замены картинок в других модах. Например, другие моды должны позвать этот мод, сказав нужное число раз "хочу вот эту картинку X в атласе Y заменить на свою картинку по пути Z". Когда все сторонние моды об этом сказали (видимо, нужно потребовать проделать эти действия в момент загрузки игры), разрешитель конфликтов вытаскивает исходники атласов из самой игры, делает в них запрошенные изменения, и отдает их игре. Это облегчит текущую работу по перепаковке атласов. А еще в модах не надо будет хранить полные атласы, а только изменения к атласам, что существенно уменьшит размер таких модов. Наконец, это рискует стать очередным стандартом :) Не было ли такой идеи? Есть ли реализация? Если реализации нет, видете ли подводные камни в реализации (например, пока что я не знаю, есть ли у модов возможность подменять файлы в момент загрузки игры, чтоб реализовать пункт 2)? Есть ли сомнения в удобстве использования?
  14. Можно. Нужно это с программной стороны в моде реализовать, еще один badge заиспользовать. Правда у меня в ближайшее время скорее всего не дойдут до этого руки( Создал задачку: https://github.com/SerVB/TheRecentStatOfYou/issues/25 Для изменения маркеров насколько я знаю надо править SWF, я это не умею и не планирую пока этому учиться. Но глядя на маркеры XVM, мне кажется, при должных навыках поправить SWF таким образом вполне возможно. Кроме SWF скорее всего и код на Питоне придется поменять для загрузки конфигов на маркеры, но с этим точно не должно быть проблем. Как всегда, буду рад, если кто-то предложит изменения в код репозитория. По умолчанию, знак вопроса помечает анонима, а прочерки – непрогруженную стату. На скрине как я понял конфиг не стандартный, прочерки убраны – значит если просто ник но без бейджика, то стата не прогрузилась. Вопросы сейчас действительно невозможно поменять с помощью конфига. Это я торопился поддержать анонимизатор, наговнокодил, и до сих пор не нашел время поправить) Так что вопросы сейчас можно поменять только в исходном коде вот здесь: https://github.com/SerVB/TheRecentStatOfYou/blob/d0a81b6d084f17e23b689a92970d91601f427905/src/scripts/client/gui/mods/mod_recent_stat_loader.py#L130-L136 . И соответственно придется пересобрать мод для себя. Спасибо, действительно приятно слышать отзыв.
  15. @gromofon2 , спасибо за лог. Это не конфиги, это загрузка файла https://static.modxvm.com/wn8-data-exp/json/wn8exp.json для расчета WN8 не сработала. У меня сейчас работает. Возможно, временная проблема была?..
  16. Извини, перевод очень непонятный. Пиши на своем языке, а мы сами переведем :) И скажи, на каком языке лучше тебе писать: по-русски или по-английски. Sorry, the translation is unclear at all. Could you just write messages here in your language? We will translate ourselves :) Also, please say which language should I use to reply to you: Russian or English.
  17. @Cony Описание на английском можно найти здесь: https://github.com/SerVB/TheRecentStatOfYou#English Там же есть ссылки на скачивание оригинального мода. А вот мод на скриншоте не мой, про его доступность нужно спрашивать @DraugDM
  18. @DrWeb7_1, спасибо, вижу по ссылке какие-то торрент файлы. Где искать такие ссылки, тоже понял, класс. Как дойдут руки, попробую позакачивать их и отпишусь о результатах.
  19. То есть там все-таки битторрент, но сами торрент-файлы достать никто не знает как?
  20. Я вижу, что по прямой ссылке у меня происходит скачивание не быстрее 5 МБ/с. Торрент может развить скорость, упирающуюся только в мой канал, при достаточной скорости доступных пиров. Учитывая довольно большое число пользователей WGC, я надеялся, что пиров будет достаточно. Получается, WG разработали какую-то свою peer-to-peer систему? Я вижу, что WGC умеет раздавать файлы: Спасибо. А возможно ли это узнавать без установленной игры, например, с помощью web-запроса "сервер ВГ, отдай, пожалуйста, последнюю версию"? Я понимаю, что API может быть недокументированное, но такое тоже пойдет.
  21. То что надо, спасибо! А есть ли возможность получать торрент файл, чтоб побыстрее скачивать эти архивы? И еще не совсем понятно, как получать последнюю версию игры (видимо, на данный момент это 1.9.0.20369). Есть ли способ? Это конечно жаль, но полные архивы тоже вполне могу скачивать – это точно лучше, чем полный клиент качать)
  22. Привет! В клиенте вижу папку res/packages. Возможно ли как-то получать файлы из нее, например, gui.pkg, scripts.pkg, без скачивания всех остальных данных клиента? Возможно, как-то можно модифицировать лаунчер или даже как-то вытащить прямые ссылки на отдельные файлы? Например, мой мод модифицирует battle atlas, хотелось бы не постоянно подкладывать файл dds из ресурсов игры, а использовать скрипт для загрузки package и вытаскивания этого файла оттуда.
  23. Знаю. Объяснишь тугодуму, к чему этот пример?
  24. Ну судя по Битве Блогеров 2020, входит в четверку самых популярных ютуберов. Пыль? А при чем здесь чей-то левый коуб? Это Муразор там показан? Я не в курсе его истории, разве он когда-нибудь входил в четверку по популярности? В чем состоит сравнение?
×
×
  • Create New...