Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно. Необходимо обновить браузер или попробовать использовать другой.
АвтоматизацияЗамена части HEX в одном файле на полное содержимое из другого
ясно что нужно любой. на выбор.
для этого и выведена вторая колонка. куда устанавливать указатель в файле для перезаписи участка. я подобный код (идею) уже писал как то
AutoIt: 3.3.12.0 Категория: База данных Описание: Создание базы документов. Документы в базе не кодированы и не сжаты Функции предназначены для создания базы документов и работы с ними: запись, редактирование, удаление. Не путать с архиватором. Примеры Создание базы: Работа с базой...
autoit-script.ru
сейчас нужно проверка работоспособности на примерных файлах. далее уже будет через кнопки в окне.
лучше проверять готовый файл в программе, которая их использует. там будет видно, корректно или нет
вообще это файл с характеристиками авто для игры Мафиа. у меня на форуме пользователи создают машины и соответствующие характеристики. но вот удобного способа использовать эти характеристики нет.
я пытаюсь придумать простой способ в 2 клика. спасибо что помогаете!
тестовый вариант. только поиск не работает пока
для запуска файл ReWrBin.au3
версия autoit 3.3.12.0 или бета
тест перезаписанного файла лучше делать в игре. обязательно протестить перезапись разделов в блоках с одним разделом и несколькими.
Pазве редактор что вы упомянули не умеет загружать .rcar файлы?
Вариант с использованием _WinAPI_ReadFile/_WinAPI_WriteFile
Для отображения доп. имен создайте рядом со скриптом Settings.ini с содержанием такого типа
Это выглядит и работает отлично! проверил и в игре - всё без каких-либо проблем.
единственный момент - я хочу сократить количество кликов до возможного минимума. существует масса программ, которые позволяют даже создавать свои модели машин в базе, заводить разные типы и т.д. - это сложно, долго и для моих целей не очень нужно. нужно очень просто, чтобы включать этот скрипт в архив с машинкой - пользователь запустил, выбрал что хочет заменить и получил замену и наслаждение
на самом деле вы навели меня на идею.
у меня есть сайт, на котором я собираю модификации машин для мафии. сейчас каждый архив с машинкой представляет из себя набор стандартных папок (maps, models, tables, anims). чтобы установить машинку в игру пользователю нужно не просто распаковать всё содержимое в папку с игрой. нужно ещё переименовать файл модели в имя файла той машины, которую хочется заменить, но затем есть же ещё характеристики из файла RCAR - вот тут уже сложности, потому что нужно открывать программы.. долго и муторно.
плюс, есть ещё 1 файл, который нужно так же читать/перезаписывать. это carindex.def. там нужны только пункты: настоящее имя машинки показываемое в игре, имя 3d модели тени, имя 3д модели сгоревшего остова. вот структура этого файла:
Код:
--------------------------------------------------------------------------------------
variable bytes description
--------------------------------------------------------------------------------------
header 164 заголовок, который нужно пропустить
blockName 32 имя блока, постоянная длина, такое же как и в vehicles.bin
carDamage 32 имя 3д модели сгоревшего остова
carShadow 32 имя 3д модели тени
carName 32 настоящее имя модели показываемое в игре
someInfo 36 другие данные, их нужно пропустить
--------------------------------------------------------------------------------------
так вот, что я придумал:
1. есть архив с машинкой, пользователь его скачивает с моего сайта, открывает архив и видит:
2. в редми я напишу, что всё содержимое архива нужно распаковать в папку с игрой и запустить ReWrBin.exe
3. после запуска ReWrBin.exe пользователь видит такое окошко (просто в фотошопе нарисовал):
4. в этом окне список Choose new car формируется автоматически, скриптом — скрипт смотрит в папку рядом с собой и ищет файлы с префиксом _cm. В данном примере скрипт находит только 1 файл - _cm_1930_Ford_Model_A_Pickup.ini. возможно если файл только один стоит этот список блокировать, чтобы нельзя было развернуть
5. New can included это выжимка из INI файла. А вот как выглядит этот INI файл:
name - это имя авто (это имя нужно записать в carindex.def, об этом далее)
anims - это привязанные к машинке анимации, их нужно будет проигнорировать, они уже и так лежат там где нужно - в папке anims
maps - это привязанные к машинке текстуры в формате PNG или JPG, их нужно будет конвертировать специальной консольной программой в BMP, но они тоже лежат там где нужно - в папке maps
colors - самое сложное - файл с моделью машинки. сейчас по этому пути лежит файл ForModAPic00.4ds (машинка игрока), а так же в этой же папке может лежать файл ForModAPic10.4ds (машинка в трафике). да, в игре используется 2 разных модельки для игрока и для трафика - когда игрок садится в машину она из ForModAPic10.4ds становится ForModAPic00.4ds мгновенно. скрипт должен проверять есть ли в паке соответствующая машинка для трафика с суфиксом 10 (в данном случае ForModAPic10.4ds) если этого файла нет, то при нажатии на кнопку Replace скрипт должен копировать ForModAPic00.4ds в два файла и давать им имена файла соответствующего выбранной оригинальной машинке. Цифра 4 в скобках значит, что для этой машины существуют 4 цвета: ForModAPic00.4ds, ForModAPic01.4ds, ForModAPic02.4ds, ForModAPic03.4ds — эти файлы лежат прямо там в папке с первой моделькой
damage - файл со сгоревшим остовом машинки, именем этого файла нужно будет заменить оригинальное имя в файле carindex.def
shadow - файл с моделью тени для машинки, именем этого файла нужно будет заменить оригинальное имя в файле carindex.def
specs - имя файла с характеристиками машинки. эти данные нужно записать из этого файла донора в vehicles.bin. это часть уже полностью работает и заменяет то что нужно
sounds - звуки привязанные к машинке, по идее нужно тоже их копировать и переименовывать по образу моделей машины, возможно если всё получится я смогу сам добавить это в код по образу
6. Choose car to replace - это список моделей в игре (89 штук)
7. Итак пользователь выбрал Новую машину, выбрал игровую, которую он будет заменять и жмёт на кнопку Replace. По моей идее происходит следующее:
скрипт получает переменную по имени машинки из vehicles.bin, в данном случае это fordttud
далее скрипт, зная название машинки оригинальной модели из игры соответствующей переменной fordttud (это fordttud00.4ds) копирует файл из [colors] и переименовывает его в fordttud00.4ds
скрипт проверяет, есть ли рядом с файлом \models\ForModAPic00.4ds файл \models\ForModAPic10.4ds:
если такой файл есть, то нужно его скопировать и переименовать в fordttud10.4ds
если такого файла нет, то нужно скопировать ForModAPic00.4ds и переименовать его в fordttud10.4ds
скрипт смотрит на число в скобках:
если там 2, то скрипт проделывает пункты 2 и 3 с файлом \models\ForModAPic01.4ds
если там 3 то скрипт выполняет пункты 2 и 3 уже с файлами \models\ForModAPic01.4ds и \models\ForModAPic02.4ds
итд
скрипт, используя переменную fordttud ищет это слово в carindex.def. блок (blockName) с именем fordttud самый первый в этом файле
далее скрипт доходит до переменной carDamage, читает её, получает имя fordTrun.I3D и заменяет fordTrun.I3D на ForModAPicDam.i3d (из [Damage]) в пределах отведённых ему 32 байт
далее скрипт доходит до переменной carShadow, читает её, получает имя fordTrunS.i3d и заменяет fordTrunS.i3d на ForModAPicSha.i3d (из [Shadow]) в пределах отведённых ему 32 байт
далее скрипт доходит до переменной carName, читает её, получает имя Bolt Ace Tudor и заменяет Bolt Ace Tudor на 1930 Ford Model A Pickup (из [Name]) в пределах отведённых ему 32 байт
скрипт заменяет спецификации в vehicles.bin на те что в файле ForModAPic.rcar из блока [Specs] в INI файле
8. кнопка дефолт очищает vehicles.bin и carindex.def от вмешательств
это всё. я прикрепил все файлы сюда к сообщению
p.s.: я прошу прощения, что столько понаписал. я изначально думал сделать несколько BAT-скриптов, но подумал, что можно же попробовать использовать автоит и не городить кучи батч-скриптов мучая пользователей