Вобщем, я пару лет назад купил очень пиратский диск с игрой (дети Нила). В игре был один очень глупый, но очень серьёзный баг - вместо дома резчика по камню строится дом обычного каменщика, из-за чего невозможно построить кучу сооружений. Я в программировании- чайник, но сейчас думаю, что вполне мог бы починить этот баг сам, поскольку проблема, как я понимаю, только в том, что в каком-то файле вместо одного имени по ошибке написали другое. (я уже таким манером в одной игре кое-что поменял, просто путём подмены одного, вырезания другого, короче, чистой логикой).
Но там были файлы lua, они блокнотом открывались. А тут проблема в том, что для этого надо как минимум пооткрывать файлы .дат (блокнот выдаёт абракадабру), а, может быть, и экзешник.
Чем это всё можно прочитать и отредактировать? Добавлено: ЗЫ. А, может быть, и длл придётся открыть тоже.
Уточню, файлы, кторые мне надо - это не архивы, в которые зашита музыка, картинки, и т.д. Это - маленькие текстовые файлы от 1 кб до пару сот кб. Но при открытии блокнотом я читаю сплошную абракадабру, в которой периодически попадаются читаемые строки латиницей. Нужна программа, чтоб прочитать всё (и отредактировать).
middleman, 4.09.2007 - 9:11
Цитата | Quote
сплошную абракадабру, в которой периодически попадаются читаемые строки латиницей
Это не текстовые фаилы. Это результат работы компилятора - машинный код. Исполняемый код ты не прочитаешь. Некоторые старые компиляторы оставляли текстовые строки отображаемые на экране в неизменном виде. Если ты даже поменяешь одну из этих строк измениться лишь отображаемое на экране слово. на игровой процесс это никаким боком не повлияет, т.к. последний задается исполняемым кодом, а не отображаемыми строками. В общем-то у тебя три варианта. Первый и самый простой это поискать багфикс, который исправит эту ошибку. Второй посложнее... Тебе нужно выяснить на каком языке была написана игра (возможно вплоть до билда компилятора) и найти или написать (что врядли) под него декомпилятор, который переведет машинный код обратно в команды языка, потом проправить программу и тем-же самым компилятором скомпилить обратно в машинные коды. Ну и третий, самый невероятный... это разобраться в ассемблере и поправить исполняемый код напрямую. Если открыть фаил под WinHex ты увидишь шестнадцатиричные коды. Если открыть его под каким-то дизассемблером, то увидишь эквивалентные этим кодам команды ассемблера. Каждый байт или несколько байт информации в этом фаиле будут представлять ту или иную команду машине. Вот их то тебе и надо будет править. Только эти команды реально влияют на игровой процесс.
G.K., 4.09.2007 - 23:30
Спасибо. А почему тогда у меня прекрасно открывались блокнотом файлы, скажем, lua? В них же тоже код, который на игру влияет огого как... Очень простой, причём.
Багфикс, к сожалению, не выйдет, потому что официальные патчи на эту версию даже ставиться не хотят - диск покупал, привезенный прямо из карибского моря И уже не помню, что за фирма произвела этот диск, поскольку потом обменял его на другую игру
В общем, расшифровать файл "дат", даже если он весит 1 кб, нельзя никак?
ЗЫ. А как выясняется, каким языком и компилятором игру делали? У разрабов игры спросить - "как мне вашу игру пиратскую разворотить поудобнее, не подскажете, где соответствующий софт скачать?" Добавлено:
Цитата | Quote
Это не текстовые фаилы. Это результат работы компилятора - машинный код. Исполняемый код ты не прочитаешь. Некоторые старые компиляторы оставляли текстовые строки отображаемые на экране в неизменном виде.
Нет, это нигде не оображается. Вот пример:
Ш яяяя яяяяяяяяяяяяяяяя * • N N и НМЊ?НММ= Ђ Ђ Ђ Ђ C * graphics\interface\buttons\but_placeholder ыяяя а * graphics\interface\buttons\but_placeholder ыяяя $ @њ Ђ8 ? Ђ> { { N * graphics\interface\buttons\but_placeholder N Ђ? ђ * graphics\interface\buttons\but_placeholder – N N и НМЊ?НММ= Ђ Ђ Ђ Ђ * graphics\interface\buttons\but_placeholder ыяяя яяяя яяяяяяяяяяяяяяяя * у N N и НМЊ?НММ= Ђ Ђ Ђ Ђ * graphics\interface\buttons\but_placeholder ыяяя ѕ N N и НМЊ?НММ= k k k k 6 * graphics\interface\buttons\but_placeholder яяяя яяяяяяяяяяяяяяяя * яяяя яяяяяяяяяяяяяяяя * Ђ8 ' @њ @? ? 1 1 - * graphics\interface\buttons\but_placeholder шяяя Ђ? Д N N и НМЊ?НММ= Ђ Ђ Ђ Ђ * graphics\interface\buttons\but_placeholder ыяяя ¬ `к ' и НМЊ? ? * * 1 * graphics\interface\buttons\but_placeholder х Ђ8 Ђ8 N ? Ђ> ~ 1 , , a * graphics\interface\buttons\but_placeholder – % Ђ8 ' @њ @? ? k k ; ; ы * graphics\interface\buttons\but_placeholder ыяяя Ы N N и НМЊ?НММ= Ђ Ђ Ђ Ђ * graphics\interface\buttons\but_placeholder ыяяя “ * graphics\interface\buttons\but_placeholder # ьяяя яяяя яяяяяяяяяяяяяяяя * Ф \ * graphics\interface\buttons\but_placeholder яяяя яяяяяяяяяяяяяяяя * Ц @њ q ' ?ГхЁ> * graphics\interface\buttons\but_placeholder л Ђ8 @њ N @? ? * graphics\interface\buttons\but_placeholder * graphics\interface\buttons\but_placeholder ыяяя з Ђ8 N N @? ? * graphics\interface\buttons\but_placeholder #
Ну, и т.д.
Evgeny101, 5.09.2007 - 0:11
Цитата | Quote(middleman @ 4.09.2007 - 10:11)
Ну и третий, самый невероятный... это разобраться в ассемблере и поправить исполняемый код напрямую.
А по мойму это самый реальный вариант.Но только дизассамблер и редактор здесь врядли поможет.Берёшь отладчик в руки и вперёд.Токо я не представляю как ты будешь игру отлаживать. А если честно забей на это дело.Что бы фиксить такие баги нужен исходный код игры(сорцы)
middleman, 5.09.2007 - 10:15
Цитата | Quote
А почему тогда у меня прекрасно открывались блокнотом файлы, скажем, lua? В них же тоже код, который на игру влияет огого как... Очень простой, причём.
Возможно lua в этой игрушке представляет собой какое-то подобие стандартного INI. т.е. списка настроек игры. вполне естественно, что их изменение может влиять на игровой процесс в какой-то мере, но подобные фаилы конфигурации врядли смогут влиять на то какое здание по какой команде строится. Тот кусок кода, что ты привел похож на список путей к элементам интерфейса, а значит это не исполняемый код, который нужно менять, а просто набор даных, используемых движком для поиска картинок, изменением которых в игре совершенно ниче не изменишь. максимум вызовешь ошибку или зависание если движок по исправленому пути не найдет соответствующей картинки.
G.K., 5.09.2007 - 11:09
Ладно, народ, спасибо, я в общем понял, что тут без камасутры не разберёшься... И визит к проктологу после отладки гарантирован... :/
Будет время - может, попробую чего-то поменять.
Цитата | Quote
А по мойму это самый реальный вариант.Но только дизассамблер и редактор здесь врядли поможет.Берёшь отладчик в руки и вперёд.Токо я не представляю как ты будешь игру отлаживать.
А что такое отладчик, чем он отличается от дизассемблера и какие есть отладчики, доступные в сети для скачивания?
ЗЫ. Кстати, дизассемблер скачал. Файлы дат он вообще не открывает, говорит,что это типа то ли не вин32 файл, то ли ещё что-то, и открывает только хекс - коды. Открыл им длл - выдало хекс коды+много строчек чего-то непонятного, что, очевидно, является ассемблером. Исправить что-то там, к сожалению, маловероятно, поскольку я абсолютно не представляю, какой регистр, или как там оно называется, соответствует какому объекту в игре, и вообще, что это был за длл...
Цитата | Quote
Возможно lua в этой игрушке представляет собой какое-то подобие стандартного INI. т.е. списка настроек игры. вполне естественно, что их изменение может влиять на игровой процесс в какой-то мере, но подобные фаилы конфигурации врядли смогут влиять на то какое здание по какой команде строится.
Это не ини было, там явный язык программирования какой-то был, по сложности, на мой чайниковый взгляд, что-то вроде рнр, и других языков веб-программирования.
В целом на игровой процесс оно влияло - поскольку там напрямую были команды - при таком-то действии вызвать такую-то модель, такую-то анимацию.
Как я понимаю, там вполне можно было и сами объекты местами поменять. Видать, язык какой-то высокоуровневый очень.
-=$eReG@=-, 6.09.2007 - 17:31
lua - один из языков программирования. Использовался, например, в S.T.A.L.K.E.R.е(в распакованной версии игры - файлы с расширением .script). Кстати, достаточно простой и удобный.
Цитата | Quote
Возможно lua в этой игрушке представляет собой какое-то подобие стандартного INI. т.е. списка настроек игры
скорее всего, но кроме настроек могут быть простенькие функции. Проверь всё, что идёт после слов "function" и особенно - "class(es)". Class в программировании означает "объект" подробнее:
вместо дома резчика по камню строится дом обычного каменщика
скорее всего, что дома - описаны как объекты. Но даже если ты их найдёшь, это вряд ли что-то даст. Проблема может быть в движке игры. Вобщем, если не выйдет, у тебя три варианта: 1)забей 2)лицензия(хорошая пиратка) + патч 3)assembler(самый бредовый, потому как игры состоят, как правило, из тысяч строчек кода). зы: если получится или возникнут вопросы - спрашивай. Удачи!