GlobalEd - универсальный редактор GlobalMemoryFile

Надоело мне ждать, когда nfsu360 доделает VltEd для прострита, поэтому решил сделать свой редактор. Разработку начал ещё в ноябре, но в декабре как-то забросил проект, хотя уже был рабочий прототип. Несколько дней назад решил таки доделать программу.

Итак, что программа умеет сейчас:

-Открывать базу данных NFS Carbon и ProStreet (в файле GlobalMemoryFile.bin)
-Сохранять внесённые изменения
-Считать хэши прямо в программе
-Генерировать “патчи” для установщика

В настоящий момент поддерживаются следующие типы данных: Float, UInt64, UInt32, UInt16, UInt8, Int64, Int32, Int16, Int8, Bool, Vector2, Vector3, Vector4, RefSpec, AxlePair, CarBodyMotion. В дальнейшем будут внедряться и остальные типы.

В планах также поддержка других игр: Undercover и World (зачем - я не знаю, правда), а также редактирования базы фронтенда.
Кроме того, в разработке универсальный установщик модов, который будет уметь копировать нужные файлы, патчить GlobalMemoryFile и восстанавливать исходные данные (в т.ч. в глобале).

Такие дела :-): В ближайшее время постараюсь допилить программу до релизного состояния и выложить в общий доступ.

это здорово что физику можно редактировать!!но для прострита так же и нету нормального тулза)), и то что на днях показал горе поляк360 не будет готово еще года два :-): , но работа твоя стоящая хотя бы для карбона или в ковре поправить физику с управлением), ждем финального релиза))

RENESiS, насчет установщика модов: у меня есть два проекта установщиков, для NFS Most Wanted и NFS ProStreet. Вот информация по ним, и собственно проекты:

[details=NFS MW Mod Installer]Последняя версия: 2.3.0.0

Возможности программы:

  1. Автоматическая установка любой модификации для игры
  2. Автоматическое определение папки с установленной игрой
  3. Возможность разбить модификацию на несколько архивов
  4. Возможность использовать архивы разных форматов
  5. Автоматический откат произведенных изменений при ошибке или при нажатии кнопки “Отмена”.
  6. Возможность деинсталлировать любую модификацию из “Панели управления” (“Установка/удаление программ”) из меню “Пуск” (папка “MW Mods”) или из папки с игрой (папка “Uninstall”).
  7. Возможность собрать установщик только на английском, только на русском или на обеих языках сразу.
  8. Встроенный в установщик файл Readme (описание модификации), избавляет от одного или более различных файлов Readme.txt. А формат RTF дает возможность красиво и оригинально оформить файл описания в Microsoft Word или другой программе, поддерживающей работу с данным форматом.
  9. Возможность поменять стиль интерфейса на один из нескольких доступных, либо создать свой собственный.
  10. Индивидуальная настройка деинсталлятора для каждой модификации. То есть для каждой конкретной модификации вручную прописываются файлы, которые будут удалены при деинсталляции модификации.

Проект: https://yadi.sk/d/ZpiUr9Nbf2fwg[/details]

[details=NFS ProStreet Mod Installer]NFS:PS Mod Installer - установщик модификаций для игры Need for Speed ProStreet.
Основан на коде NFS:MW Mod Installer и доработан специально для корректной установки модификаций для NFS ProStreet.

Возможности программы на данный момент:

  1. Автоматическое создание резервной копии заменяемых файлов перед установкой и восстановление оригинальных файлов из резервной копии после удаления модификации
  2. Установка нескольких вариантов одной модификации
  3. Английский или Русский язык установщика (как самой программы так и Readme-файлов)
  4. Установка нескольких модификаций одновременно
  5. Автоматическое определение папки с установленной игрой (при условии наличия определенного ключа реестра)
  6. Корректная деинсталляция модификации
  7. Возможность создать установщик со стандартным или измененным интерфейсом

Что планируется добавить:
[] Автоматическое изменение положения колес в игре для конкретного автомобиля
[
] Возможность использовать различные архивные форматы для data*.bin файлов
[] Автоматическое добавление разделов и ключей реестра для игры
[
] Возможность выбрать разные варианты в двух и более модификациях

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

Проект: yadi.sk/d/mnArRT5ff678w[/details]
Дополнительные файлы для этих проектов (программы и т.д.) доступны тут:

ссылка

https://yadi.sk/d/53DbF-Qff2g5w

Мм мм… Редактор физики Картона? Вот это ньюс! Скоро закончу разбивать на части модель Escort Cosworth RS. Наверно законверчу в картон. Бусидёры будут катать на моей тачке.

Если эта прога может повлиять на физику и прочее от Андерковера, то жду :smiley:

А что с ним не так, кроме того, что зачем-то лоды автоматом линкуются на LOD_A? Люди вроде конвертят, всё работает, включая покраску и винилы. Не было только инструмента для редактирования позиций колёс и остального, теперь будет.

Inno setup - штука хорошая, но в этом случае мне не хочется её использовать: например, чтобы патчить файлы придётся делать отдельный экзешник, который будет запускаться в инно после копирования файлов. Тем более, мой установщик уже наполовину готов. Но спасибо за предложение!

Если кто-то скинет GlobalMemoryFile.bin, attributes.bin, fe_attrib.bin и gameplay.bin от ковра, буду очень благодарен, а то игры нет, а качать не хочется)

RENESiS, вот необходимые файлы. От версий 1.0.1.17 и 1.0.1.18.
NFSUC_VLT_1.0.1.17.7z (1,6 Мб)
NFSUC_VLT_1.0.1.18.7z (1,7 Мб)
[hr]
Насчет установщика: почему именно Inno Setup - потому как такой установщик можно сделать модульным, подстраивая его под конкретную модификацию.
К тому же, вы говорите:

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

[details=кое что интересное] function Patch (FileName: AnsiString; ScriptName: AnsiString) external 'Patch@files:libpatch.dll stdcall delayload';
где FileName - имя файла, который надо пропатчить, а ScriptName - имя файла, содержащего данные для патча. Можно сделать не имя файла, а сами данные в шестнадцатеричном виде (но тогда надо использовать вроде бы не AnsiString, а PAnsiChar).
И вызов в нужном месте:

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssPostInstall then
  begin
    Patch(ExpandConstant('GlobalMemoryFile.bin'), ExpandConstant('patch.dat');
  end;
end;

Вроде не совсем правильно написал, но примерно так.[/details]

Сколько умных слов прозвучало тут, и прикол в том, что больше половины не понял :ps_ih:

Как прогресс? :slight_smile:

Пока ничего особо не изменилось со времени первого поста. Ну, доделал инсталлер и генерацию патчей (первый мод с новым установщиком). В целом дело идёт к релизу, но сейчас не хватает времени (пару дней назад госы сдал, теперь надо диплом доделывать окончательно)

Удачи с доделыванием диплома :co_ol:. Как доделаешь, будем приветствовать нашего дипломированного РЕНЕСиСа :co_ol:

Ну как прогресс? Для ворлда теперь обязательно нужна поддержка :smiley: (т.к оффлайн-версия, все дела)

Даа, для дубовой физики ворлда это было бы весьма полезно, та и с учетом офлайна, надеюсь, откроются довольно широкие двери для мододелов :slight_smile:

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

Eclipse 72rus, поддерживаю. А модтулс сделать будет сложновато, ибо ЕАшники намутили что-то с алгоритмами сжатия своих файлов.

Добавил таки поддержку World. Игра изменения воспринимает нормально, даже в онлайне. Удалось активировать нитробуст у 240zg (сразу скажу, что нитробуст возможно поставить не на все авто, по крайней мере на данном этапе исследования)

:sh_ok: :ya_hoo_oo:

ПрорывЪ! :bra_vo: :ya_hoo_oo: :co_ol:

RENESiS, интересно…

Немного новостей.
В данный момент полностью переписывается алгоритм чтения файлов. В итоге будет поддержка GlobalMemoryFile.bin, attributes.bin, FE_ATTRIB.bin, gameplay.bin/gameplay.lzc и вероятно commerce.bin
Кроме того, готовится новая фича - возможность подключиться к процессу игры и редактировать влт-базу в памяти процесса не закрывая игру. Может быть удобно для редактирования позиций колёс/чего-то ещё без необходимости перезапускать игру для проверки