Drakemor_888, я играл около 3 часов и не словил ни единого краша. Потребление памяти игрой составляло 1.2 ГБ, из которых чуть менее половины занимал сам игровой движок.
В прошлой части тоже были игроки, которые жаловались на краши из-за нехватки памяти.
Так как некоторым помогает переключение на OpenGL отрисовщик, могу предположить, что виноваты во всём драйвера для видеокарт, которые не умеют экономить память в условиях её дефицита (2 ГБ).
При создании предмета, игра добавляет его в список CWorldFrameWar3::m_enumeratedItems, но при уничтожении тот не удаляется из него, да и вообще этот список не используется.
Эта утечка не так страшна, как в случае с неудаляемыми подобраными книгами, так как предмет "мёртв".
При желании, эту утечку можно исправить, затерев код добавления предмета в список из этой функции:
Пользуюсь браузером LibreWolf (основан на Firefox). Если включено дополнение uBlock Origin, то нажатие на кнопку перенаправляет на главную, а без него всё в порядке.
Если сможешь воспроизвести краш на утекшей 2.0.1 версии без обфускации, то сможешь посмотреть название функций, в которых произошел краш.
Подключи отладчик к игре и воспользуйся отладочной информацией.
makkad, если мешают измененные позиции кнопок, то можно вернуть их обратно при помощи "супер" режима. Хоткеи зависят от положения кнопок и эти самые положения настраиваемы.
makkad, сам я редко играю в варкрафт, так что и мотивации полировать хоткей до идеального состояния нет. Но так как я выложил исходники, у страждущих всё же есть шанс исправить положение.
Добавить клавишу на переключение раскладки на стандартную/кастомную прямо во время игры;
Могу даже подсказать что делать: добавить переменную enabled и, если её значение false, отменить действия в функции on_command_bar_hotkey вернув false, чтобы событие попало к игре. Дальше можно добавить хоткей для переключения состояния по аналогии с другими из config.json.
Это позволит отключать хоткей во время игры и использовать стандартные средства.
EugeAl, не понимаю, при чем здесь мод на снятие лимита?
А сделать можно что угодно, если готов потратить на это достаточно сил.
Вероятно, игра загружает эти файлы до запуска карты, так что импорт не работает.
Нужно перезагрузить базу данных после открытия карты.
Можешь воспользоваться инструментами для реверсинга (IDA, Hydra) для изучения устройства этой области игры и модифицировать её соответствующим образом.
SсRealm, если я правильно помню, то JNGP использует исполняемый файл редактора (worldedit.exe) от версии игры 1.21, а в требованиях этого мода указано 1.26 или 1.27, так что вполне ожидаемо, что он там не работает.
EugeAl, игра сообщает адрес инструкции, которая крашнулась. Если ты не знаешь назначение кода, который там находится, то и понять причину краша не сможешь.
Вот пример разбора отчета об ошибке, вызваной передачей нативке Player параметра -1.
EugeAl, когда игра использовала уже уничтоженый объект нулевой строки, то пыталась вызвать у него виртуальный метод. Указатель на таблицу методов находится в начале структуры объектов. Так как для объекта уже был вызван деструктор, то таблица методов ссылалась на таблицу самого базового класса (в данном случае TRefCnt), у которого было лишь два метода, а нужно было вызвать метод класса наследника (CStringRep), у которого нужный метод шел третим.
Индекс 2 (отсчёт идёт с нуля) выходит за границы таблицы методов TRefCnt и указывает на случайную память за ним, а в данном случае ею оказалось число 0x35800000, или 1.0f.
Дальше управление передается по этому адресу, но обычно там нет инструкций для исполнения и игра крашится.
Игра неправильно пишет сообщение об ошибке, когда происходит ошибка исполнения, а не чтения/записи. В таком случае она пишет "written", но не стоит обманываться. Адрес инструкции, которая "читала" и памяти, в которую "писали", указывается один и тот же.
Инструкция по адресу 0x35800000 пыталась перзаписать память по адресу 0x35800000 — на самом деле означает, что было передано управление по адресу 0x35800000, на целевой адрес не содержит исполняемой памяти.
Была попытка получить поле "version" для нестандартной способности 'ACcv', родитель которой имел ИД 0, из-за чего и произошел краш.
Вот только, это стандартная способность "Девятый вал", незнаю, почему её вдруг начали считать нестандартной и полезли искать её несуществующую основу.
В карте есть одна нестандартная способность на её основе с ИД 'A093'.
Возможно, программа сгенерировала некорректный "war3map.w3a" файл.
А проблема только в иконке? или что-то не работает?
Кнопка нажимается, цель выбирается, так что всё работает.
Проблема в том, что в текстовых файлах отсутствует информация о пути к иконке, описание и координаты кнопки.
EugeAl, для хранения текста с требованиями используется короткое описание, которое обычно вмещает до 256 байт, но даже это пространство не используется полностью, так как игра обрезает строку до 128 байт.
Пускай мод и расширил лимит — это не помогло, ведь игра даже старый не задевала.
EugeAl, насколько я помню, варкрафт проверяет начало SLK файла на соответствие строке ID;PWXL;N;E и, если она отличается, то бракует входной файл.
В ней содержится информация о программе, которая сохранила файл и какие-то дополнительные флаги. Если работа велась в другой программе или не той версии, то игра может отказаться работать с таблицей.
EugeAl, какой бы длины не была строка, которую игра помещает в кнопку — она поместится.
Вопрос лишь в том, не обрежет ли её кто-нибудь на ранних стадиях. Если до кнопки дойдет только обрывок текста, то этот мод не поможет.
Tredor46, это баг варкрафта, а не конкретной карты. Если есть триггеры, реагирующие на приказ, то создается объект с данными о событии, но затем не уничтожается.
» WarCraft 3 / Неограниченое описание
Ред. IceFog
» WarCraft 3 / Последний приют 2
Так как некоторым помогает переключение на OpenGL отрисовщик, могу предположить, что виноваты во всём драйвера для видеокарт, которые не умеют экономить память в условиях её дефицита (2 ГБ).
Ред. IceFog
» WarCraft 3 / Некорректная компиляции карты через консольный jasshelper на линуксе
Ред. IceFog
» WarCraft 3 / Функция RemoveItem() не удаляет предмет
Ред. IceFog
» Администрация XGM / Прокрутить к ресурсу кидает на главную
Ред. IceFog
» WarCraft 3 / Неограниченое описание
Ред. IceFog
» WarCraft 3 / Краши игры спустя примерно 5 минут Reforged
Подключи отладчик к игре и воспользуйся отладочной информацией.
» WarCraft 3 / Неограниченое описание
» WarCraft 3 / Супер хоткей
» WarCraft 3 / Супер хоткей
Это позволит отключать хоткей во время игры и использовать стандартные средства.
» WarCraft 3 / Супер хоткей
» WarCraft 3 / Неограниченый размер карт без багов
А сделать можно что угодно, если готов потратить на это достаточно сил.
Вероятно, игра загружает эти файлы до запуска карты, так что импорт не работает.
Нужно перезагрузить базу данных после открытия карты.
» WarCraft 3 / Журналирование вызовов JASS
» WarCraft 3 / World Editor FileImport FIX
» WarCraft 3 / Краш 0x35800000 при закрытии игры
» WarCraft 3 / Краш 0x35800000 при закрытии игры
Ред. IceFog
» WarCraft 3 / Краш 0x35800000 при закрытии игры
Дальше управление передается по этому адресу, но обычно там нет инструкций для исполнения и игра крашится.
Ред. IceFog
» WarCraft 3 / SLK оптимизация при помощи w3x2lni
Стектрейс следующий:
В карте есть одна нестандартная способность на её основе с ИД 'A093'.
» WarCraft 3 / SLK оптимизация при помощи w3x2lni
Проблема в том, что в текстовых файлах отсутствует информация о пути к иконке, описание и координаты кнопки.
Ред. IceFog
» WarCraft 3 / SLK оптимизация при помощи w3x2lni
Поиск в редакторе не находит её.
Ред. IceFog
» WarCraft 3 / Неограниченое описание
Пускай мод и расширил лимит — это не помогло, ведь игра даже старый не задевала.
Ред. IceFog
» WarCraft 3 / Добавление кастомных способностей в war3patch.mpq
» WarCraft 3 / Неограниченое описание
Ред. IceFog
» WarCraft 3 / Неограниченое описание
Вопрос лишь в том, не обрежет ли её кто-нибудь на ранних стадиях. Если до кнопки дойдет только обрывок текста, то этот мод не поможет.
» WarCraft 3 / Какая версия карты земли бога не вылетает?