Перейти к содержимому
Korean Random

Polyacov_Yury

Пользователь
  • Публикации

    1 609
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    32

Последний раз Polyacov_Yury выиграл 22 апреля

Публикации Polyacov_Yury были самыми популярными!

Репутация

1 281 ⭐⭐⭐⭐⭐

1 подписчик

О Polyacov_Yury

  • Звание
    Танкоэлектрик
  • День рождения 28.02.1998

Основная информация

  • Пол
    Мужчина
  • Город
    Краснодар/Петергоф

Контакты

  • Ник
    Polyacov_Yury
  • Сервер WoT
    RU / CIS
    EU
  • Skype
    brain_drone

Посетители профиля

14 006 просмотров профиля
  1. Polyacov_Yury

    Анонсы релизов игры: патч 1.2

    А как насчёт 1.2.0.1 #1034? Или там скрипты не трогали?
  2. Код абсолютно идентичен. Я просто вынес его в отдельный файл. Суть в том, что у Шкуродёра другая папка конфигов. Если конкретнее - другой файл кеша скинов и другой файл настроек. Они лежат в mods/configs/PYmods/Skinner. Попробуй конфиги свои скопировать из папки Ремодомода в папку Шкуродёра. Это у тебя кеш настроек грохнулся почему-то. Я тут ни при чём. Интересно. У меня сброшенный Трикси реплей тоже рушится. Я НЕ понимаю, почему версия от 7 числа работает, а от 15 - уже нет. Единственное, что я там сделал - это исправил работу окна Внешнего вида (я криво совал emblemSlot'ы в дескриптор модуля танка при применении на него ремоделинга), добавил изменение моделей для всех modelsSets'ов - что должно было изменить рендеринг только машин с активной трёхмерной кастомизацией - и добавил текстуры в папке _skins в список того, что мод считывает во время проверки текстур. Я попробую откатить код применятора статических шкурок на состояние 7 октября и стартануть реплей. Если это поможет - так тому и быть. Да, сработало. Теперь главный вопрос сегодняшнего вечера. modelsSets - это тупо dict. Тупо словарь. В котором для всех машин, кроме Caernarvon AX, КВ-2, BDR G1B и Т-34Э один ключ - 'default'. ModelStatesPaths - это namedtuple. Состоит из трёх путей - к обычной модели, модели подбитого танка и модели с сорванной башней. vDesc - это дескриптор модели. Достаточно знать, что у него 4 атрибута (на самом деле больше) - chassis, hull, gun и turret. TankPartNames.ALL - это кортеж, в котором, собственно, и лежат строки, по которым можно получить нужные нам атрибуты из vDesc. (BigWorld.curCV = './res_mods/1.2.0.1') Почему вот так работает: for partName in TankPartNames.ALL: for descr in (vDesc,) if not isinstance(vDesc, CompositeVehicleDescriptor) else ( vDesc._CompositeVehicleDescriptor__vehicleDescr, vDesc._CompositeVehicleDescriptor__siegeDescr): part = getattr(descr, partName) path = part.modelsSets['default'].undamaged.replace('vehicles/', 'vehicles/skins/models/%s/vehicles/' % sname) if os.path.isfile(BigWorld.curCV + '/' + path): models = part.modelsSets['default'] part.modelsSets['default'] = ModelStatesPaths(path, models.destroyed, models.exploded) else: print g_config.ID + ': skin model not found:', path part.models = part.modelsSets['default'] а вот так крашится без логов? for partName in TankPartNames.ALL: for descr in (vDesc,) if not isinstance(vDesc, CompositeVehicleDescriptor) else ( vDesc._CompositeVehicleDescriptor__vehicleDescr, vDesc._CompositeVehicleDescriptor__siegeDescr): part = getattr(descr, partName) for setName in part.modelsSets: models = part.modelsSets[setName] path = models.undamaged.replace('vehicles/', 'vehicles/skins/models/%s/vehicles/' % sname) if os.path.isfile(BigWorld.curCV + '/' + path): part.modelsSets[setName] = ModelStatesPaths(path, models.destroyed, models.exploded) else: print g_config.ID + ': skin model not found:', path part.models = part.modelsSets['default'] Хотя, я, похоже, понял, почему. Модифицировать словарь во время итерации по нему - это вин. Но почему вместо нормального понятного RuntimeError оно крашится на уровне движка с access violation'ом?! Причём копирование списка ключей не помогло, что характерно. Больше скажу. Даже вот так крашится: for partName in TankPartNames.ALL: for descr in (vDesc,) if not isinstance(vDesc, CompositeVehicleDescriptor) else ( vDesc._CompositeVehicleDescriptor__vehicleDescr, vDesc._CompositeVehicleDescriptor__siegeDescr): part = getattr(descr, partName) new_modelsSets = {} for setName, models in part.modelsSets.items(): path = models.undamaged.replace('vehicles/', 'vehicles/skins/models/%s/vehicles/' % sname) if os.path.isfile(BigWorld.curCV + '/' + path): new_modelsSets[setName] = ModelStatesPaths(path, models.destroyed, models.exploded) else: new_modelsSets[setName] = models print g_config.ID + ': skin model not found:', path part.modelsSets = new_modelsSets part.models = part.modelsSets['default'] А, ну понятно. Access violation происходит не из-за того, что я dict редактирую, а где-то дальше в картошкином коде. Что-то им не по нраву в том, как я модели редактирую... Похоже, остаёмся мы зимовать без шкурок и ремодов на 3D-кастомизированных моделях. @O6opMoT, если хочешь отредактировать обмазанную кастомизацией тридцатьчетвёрку - придётся тебе текстуры из папки _skins для неё в res_mods кидать. Распаковку моделей из папки _skins я пока оставлю - for testing purposes - но применяться они не будут. Залил обнову.
  3. У них надо стиль особый активировать, чтобы модель вылезла. Иначе никак. Залил обновлённый Шкуродёр без крашей и с декалями. Ссылка та же.
  4. Две версии, говоришь.. Вот этот вариант точно нафиг. Мне и так Ремодомод переделывать, КамоСелектор доделывать, ещё и сессия скоро.. ВэТэ - значит, ВэТэ.
  5. Ты не поверишь. Я добавил одну строчку в Ремодомод (ремоды тоже падали) и одну в Шкуродёр. Обновляю атрибут, который уже нигде в питон-коде не используется. А именно - getattr(vDesc, partName).models (где partName - это, к примеру, turret). Краши прекратились. Пока сижу - добавлю-ка заодно распаковку .vt, посмотрим, что из этого выйдет. UPD. Итак. Без .vt - эмблемы, надписи и прочее не отображаются, размер папки 292 МБ (на диске - 323 МБ), время распаковки - 5:51. С .vt - пришлось помучаться (ResMgr - говньо), декали работают, размер папки 621 МБ (на диске - 658 МБ), время распаковки - 8:50. Что скажете, товарищи делегаты? Оставляем или ну нафиг?
  6. Касаемо Т-34Э - я добавил распаковку моделей для стилей. Я же говорю о Т34. Который американский. На котором НЕТ стилей с моделями. И который перестал крашить игру, как только я выключил Шкуродёр.
  7. Проблема была ровно та же, просто не проявлялась так часто. И в коде не было фактических изменений. Можешь сам почитать.
  8. Надо будет попробовать. Но сильных надежд не держу. Попробую потом ещё прикрутить-таки распаковку vt-файлов. Потому как падает стабильно с установленной на Т34 статической шкуркой.
  9. Забыл, да. Каюсь. Не подскажешь код для детекта того, что игрок в артприцеле сейчас? :D И я всё же фидбэка по новому Ремодомоду ждал, а не хотелок по Шкуродёру :( Везёт тебе. Захожу в ангар - краш. Захожу в бой - краш. Выхожу из боя - краш. Краш - краш.
  10. Ну что, пацаны, аниме опять краш?) This dump file has an exception of interest stored in it. The stored exception information can be accessed via .ecxr. (2350.1b5c): Access violation - code c0000005 (first/second chance not available) eax=00000000 ebx=00000000 ecx=583c2510 edx=00000000 esi=00000003 edi=00000003 eip=77e8a7ec esp=1013e310 ebp=1013e4a0 iopl=0 nv up ei pl nz ac po nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000212 ntdll!NtWaitForMultipleObjects+0xc: 77e8a7ec c21400 ret 14h 0:006> .exepath+ D:\Games\World_of_Tanks Executable image search path is: D:\Games\World_of_Tanks Expanded Executable image search path is: d:\games\world_of_tanks ************* Path validation summary ************** Response Time (ms) Location OK D:\Games\World_of_Tanks 0:006> .sympath+ srv*https://msdl.microsoft.com/download/symbols Symbol search path is: srv*;srv*https://msdl.microsoft.com/download/symbols Expanded Symbol search path is: cache*;SRV*https://msdl.microsoft.com/download/symbols ************* Path validation summary ************** Response Time (ms) Location Deferred srv* Deferred srv*https://msdl.microsoft.com/download/symbols 0:006> .ecxr *** ERROR: Symbol file could not be found. Defaulted to export symbols for worldoftanks.exe - eax=00000003 ebx=1013fd44 ecx=583c2510 edx=00000000 esi=33f6a7e4 edi=583c2510 eip=00bd1498 esp=1013fc8c ebp=1013fcc0 iopl=0 nv up ei pl nz na pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010206 worldoftanks!Scaleform::Render::Matrix2x4<float>::GetMaxScale+0x36168: 00bd1498 397008 cmp dword ptr [eax+8],esi ds:002b:0000000b=???????? 0:006> k *** Stack trace for last set context - .thread/.cxr resets it # ChildEBP RetAddr WARNING: Stack unwind information not available. Following frames may be wrong. 00 1013fcc0 009e756a worldoftanks!Scaleform::Render::Matrix2x4<float>::GetMaxScale+0x36168 01 1013fd30 0181e6e6 worldoftanks!Scaleform::Render::Matrix2x4<float>::TransformByInverse+0x881a 02 1013fd58 0141ee5a worldoftanks!MallocExtension::GetEstimatedAllocatedSize+0x3c86 03 1013fe88 0141ae7e worldoftanks!AK::WriteBytesMem::SetCount+0x3704da 04 1013fea8 00f322d1 worldoftanks!AK::WriteBytesMem::SetCount+0x36c4fe 05 1013ff1c 00769b0a worldoftanks!AK::WriteBytesMem::Bytes+0x14e161 06 1013ff3c 00635d2a worldoftanks!MallocExtension::VerifyNewMemory+0xe414a 07 1013ff44 7721e87f worldoftanks!Scaleform::Render::Matrix4x4<float>::SetIdentity+0xf50a 08 1013ff80 76898484 ucrtbase!thread_start<unsigned int (__stdcall*)(void *)>+0x3f 09 1013ff94 77e8302c kernel32!BaseThreadInitThunk+0x24 0a 1013ffdc 77e82ffa ntdll!__RtlUserThreadStart+0x2f 0b 1013ffec 00000000 ntdll!_RtlUserThreadStart+0x1b Не берусь пытаться утверждать на тему что здесь произошло. Так. За сегодня я смог зайти в бой и выйти из него без крашей два раза. Клиент был запущен минимум раз 20. Также, благодаря этому я, по-русски говоря, всрал 3 личных резерва. Один на опыт на час, второй на свободку на час, третий на кредиты на час. 200, 200 и 50% соответственно. Я просто не смог выйти в бой и что-то там сделать. Игра крашилась либо при входе в ангар, либо при загрузке BattlePage. This dump file has an exception of interest stored in it. The stored exception information can be accessed via .ecxr. (9bc.1338): Access violation - code c0000005 (first/second chance not available) eax=00000000 ebx=00000000 ecx=4f222060 edx=00000000 esi=00000003 edi=00000003 eip=77e8a7ec esp=0c00e310 ebp=0c00e4a0 iopl=0 nv up ei pl nz ac po nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000212 ntdll!NtWaitForMultipleObjects+0xc: 77e8a7ec c21400 ret 14h 0:006> .exepath+ D:\Games\World_of_Tanks Executable image search path is: D:\Games\World_of_Tanks Expanded Executable image search path is: d:\games\world_of_tanks ************* Path validation summary ************** Response Time (ms) Location OK D:\Games\World_of_Tanks 0:006> .sympath+ srv*https://msdl.microsoft.com/download/symbols Symbol search path is: srv*;srv*https://msdl.microsoft.com/download/symbols Expanded Symbol search path is: cache*;SRV*https://msdl.microsoft.com/download/symbols ************* Path validation summary ************** Response Time (ms) Location Deferred srv* Deferred srv*https://msdl.microsoft.com/download/symbols 0:006> .ecxr *** ERROR: Symbol file could not be found. Defaulted to export symbols for WorldOfTanks.exe - eax=00000003 ebx=0c00fd44 ecx=4f222060 edx=00000000 esi=637b3b64 edi=4f222060 eip=00bd1498 esp=0c00fc8c ebp=0c00fcc0 iopl=0 nv up ei pl nz na po nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010202 WorldOfTanks!Scaleform::Render::Matrix2x4<float>::GetMaxScale+0x36168: 00bd1498 397008 cmp dword ptr [eax+8],esi ds:002b:0000000b=???????? 0:006> k *** Stack trace for last set context - .thread/.cxr resets it # ChildEBP RetAddr WARNING: Stack unwind information not available. Following frames may be wrong. 00 0c00fcc0 009e756a WorldOfTanks!Scaleform::Render::Matrix2x4<float>::GetMaxScale+0x36168 01 0c00fd30 0181e6e6 WorldOfTanks!Scaleform::Render::Matrix2x4<float>::TransformByInverse+0x881a 02 0c00fd58 0141ee5a WorldOfTanks!MallocExtension::GetEstimatedAllocatedSize+0x3c86 03 0c00fe88 0141ae7e WorldOfTanks!AK::WriteBytesMem::SetCount+0x3704da 04 0c00fea8 00f322d1 WorldOfTanks!AK::WriteBytesMem::SetCount+0x36c4fe 05 0c00ff1c 00769b0a WorldOfTanks!AK::WriteBytesMem::Bytes+0x14e161 06 0c00ff3c 00635d2a WorldOfTanks!MallocExtension::VerifyNewMemory+0xe414a 07 0c00ff44 7721e87f WorldOfTanks!Scaleform::Render::Matrix4x4<float>::SetIdentity+0xf50a 08 0c00ff80 76898484 ucrtbase!thread_start<unsigned int (__stdcall*)(void *)>+0x3f 09 0c00ff94 77e8302c kernel32!BaseThreadInitThunk+0x24 0a 0c00ffdc 77e82ffa ntdll!__RtlUserThreadStart+0x2f 0b 0c00ffec 00000000 ntdll!_RtlUserThreadStart+0x1b Также я погуглил, что такое с0000005. Это самый обыкновенный NPE. В Танках. NPE. Однако, здравствуйте. Снёс Шкуродёр, попробую поездить без него. Но у меня уже есть @Xotabych, который, по его словам, откатал 30 боёв без единого глюка. UPD. Без Шкуродёра всё работает И-ДЕ-АЛЬ-НО. Делайте выводы.
  11. Так. А насчёт настроечной менюшки что скажете? :) В Ремодомоде грядут изменения, поэтому там сильно не трогал ничего, а вот про Шкуродёр неплохо бы и услышать парочку мнений. Касаемо изменений по Ремодомоду. Мне ремоделлеры нажаловались, что слишкам сложна там всё. Поэтому: Для начала, у ремодов снова будет только один белый список. Для всех команд. При входе в настроечную менюшку ты будешь попадать в окошко, в котором будет выпадающий список, в котором доступны только ремоды, установленные на текущую машину. Если таких нет - менюшка будет просто пустая и никyда нельзя будет нажать. Три галки. Установить на игрока, установить на союзника, установить на противника. Если на какую-то категорию для этого танка уже установлен другой ремод - галка становится неактивной и при наведении на неё показывается надпись "Для этой категории уже установлена модель такая-то", чтобы при желании эту модель можно было выбрать в выпадающем списке и снять мешающую галочку. Кнопка "Сохранить". Потому что куда ж без неё. При закрытии прикрутить "У вас есть несохранённые изменения", да. И единственная во всей менюшке кнопка, которая всегда активна: "Дополнительно". Там будет два пункта: Белые списки и Создать ремод. Скажу сначала про создание ремодов. Там будет один белый список (как я уже сказал), и можно будет задать стандартное положение Трёх Галочек. Например, вдруг ты хочешь, чтобы твой ремод по дефолту у юзеров только на модель игрока ставился - можно будет сделать. Первый собой будет практически повторять текущую Настройку ремодов, с той разницей, что белый список у всех моделей один. И там можно будет поменять стандартное состояние галочек, которое автоматически будет расставляться для ремода при его установке на новую машину (то есть - при добавлении нового танка в его белый список). И да, это всё будет означать, что горячая клавиша Ctrl+F3 и код для её обработки становится не нужен - если хочешь поставить другой ремод на машину - топай в менюшку. Осталось придумать, как быть с всё равно уже давно не работающими коллиженами (удалять жалко) и с предпросмотром по командам (который по Ctrl+F2). Что скажете? (Лично мне кажется, что проще сейчас, но это во мне в основном говорит ленивая задница, которой в код лезть лень)
  12. Итак. Разделил Ремодомод и Шкуродёр. Первый можно скачать в шапке, второй - тут. Обновление шапки - КТТС.
  13. Попробовал. Не знаю, за что он отвечает, но эмблемы с ним не появляются. ПыСы. Его надо в корень документа, рядом с <primitivesName> добавлять?
  14. Ну что, товарищи. YAY, как говорится :D Редко у нас утро начинается с хороших новостей, не правда ли?)
  15. Никак. Времени не было.
×