Th, 2024-03-28, 17:59
Diablo: The Hell
Приветствую Вас Новичок | RSS
Главная | Предложения по моду - Diablo: The Hell - forums | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: Mordor  
Diablo: The Hell - forums » Форум The Hell » Адская Кузница » Предложения по моду
Предложения по моду
illusion Date: We, 2008-02-06, 15:05 | Message # 1
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
--тема перенесена из Подземелий--

По мне диабло одна из самых прикольных игрушек!!! Я её прошел раз 50-100 наверно. Играл и HellFire тоже неплохо, но и там и там есть недостатки которые я пытался исправить прямо в exe`шниках. Одно время даже пытался сам написать такую игру:)

Как то я нащупал где находятся параметры генерации лабиринтов в exe`шнике, так что можно, если с ними разобраться, попытаться ввести дополнительно уровней с другими параметрами генерации (использовать разные параметры на одном уровне наверно не усдастся).

Ещё есть такое предложение попытаться увеличить размер карт уровней, и ввести дополнительные паттерны для генератора уровней.

Вообще ещё было бы неплохо сделать дерево уровней в возможностью перехода между ветвями.

Сегодня поставлю МОД и поиграю, может ещё что то предложу.

 
Mordor Date: We, 2008-02-06, 16:01 | Message # 2
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
предложения это очень хорошо. а если кто-то готов взяться за нелегкое но интересное дело ASM кодирования и разбора кода, то у меня есть целая кузница с пометками для обмена опытом.

карты генерируются с фиксированным размером 70х70 тайлов (помойму так)

 
illusion Date: We, 2008-02-06, 16:36 | Message # 3
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Помоему 64х64 но спорить не буду. Как сделан генератор уровней я примерно представляю:
есть кусочные паттерны типа отдельных комнат, коридоров, входов и выходов и т.д.
далее они накидываются на карту и обеспечивается соединение между ними.
эти паттерны уникальны для уровней 1-4,5-8,9-12 и 13-16, причём для уровней ада у разработчиков фантазии было уже мало.
Что я сам делал в своё время:
1. делал максимумы до 255, потому что меня бесили эти ограничения ( чесно заработанные levelup`ы некуда было девать)
2. написал редактор вещей, в результате выяснил примерный принцип генерации вещей
3. делал максимум денег в одной кучке до 50000 золотых
4. пытался сделать что бы были крутые и редкие вещи, т.к. когда у твоего героя был уровень 35-40 становилось скучно играть
5. пытался делать другую таблицу levelup`ов, т.к. опять же было скучновато с уровнем 35-40, приходилось раза 2-3 пройти всю игру для LevelUp

но работал я напрямую используя хакерский редактор HIEW

Мне интересно как ты правишь код? Я так понимаю ты его один раз дизассемблировал и потихоньку преобразуешь названия областей данных и кода к осмысленным названиям?

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

Добавлено (06.02.2008, 16:36)
---------------------------------------------
Вот тут кстати товарищь собрался клон писать http://www.gamedev.ru/gamedesign/forum/?id=76170
Я там в роли Netkeep.

Может поделишься дизасмом, может от меня польза будет:)

Edited by illusion - We, 2008-02-06, 16:32
 
Mordor Date: We, 2008-02-06, 17:14 | Message # 4
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
с редактором HIEW я не знаком. это что-то наподобие модмейкерской программы? если да, то я их не использую. они ошибки допускают.

код я поправляю несколькими способами. один из них: под рукой открыт сайт с командами ассемблера smile и открыты заметки мода TheDark. Ищу сопутствующий код в своем экзешнике и поправляю на то что надо.

Другой вариант: открываю Jarulf's Guide и ищу в своем экзешнике похожие формулы.

Во всех случаях экзешник открывается дисассемблером.

То что ты делал это очень простые изменения. За исключением проги для изменений предметов.

Самая трудная задача в моддинге - это, пожалуй, шлифовка баланса сложности игры.

Если будет надо, то могу привести пример как сделать какое-то простое изменение. С кодовыми заметками. Хотя таких примеров много в заметках по Дарку.

 
illusion Date: We, 2008-02-06, 17:33 | Message # 5
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
HIEW это дизассемблер на лету, позволяет сразу в екзешнике править асемблерный код, без дизассемблирования и потом компиляции.

Я так понимаю твоя работа по правке екзешника колличественно никогда не перерастёт в качество. Чё надо сделать на самом деле (если конечно ты сам уже не начал это делать) это один раз дизассемблировать, перенести всю имеющуюся информацию из `заметок` в комментарий к коду, и постепенно писать осмысленные имена функций и переменных в асм исходниках а потом начать постепенно переводить асм код на С/С++. Подобными вещами я занимался. Чем раньше начать востанавливать исходники тем лучше. А то так и будешь всю жизнь в этом долбаном асме ковыряться. Я конечно понимаю что это сложно, но править екзешник это всётаки тупиковый вариант. К тому же в один момент сложность твоей работы по екзешнику превысит сложность восстановления сишных исходников.

Вопрос: чем дизассемблированные исходники компилишь? Тем же w32dsm87 ??? или каким нормальным компилятором?

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

Edited by illusion - We, 2008-02-06, 17:37
 
Mordor Date: We, 2008-02-06, 18:15 | Message # 6
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
давай сцылку на это Hiew

вот про количество в качество я реально не понял..

Quote (illusion)
чем дизассемблированные исходники компилишь? Тем же w32dsm87 ??? или каким нормальным компилятором?

поясни, не догоняю ещё.

upd: вопрос в догонку! ты не знаешь как правильно сосчитать PE Header? никак не могу дополнительное место к концу экзешника присобачить. все тыркаю новый код по вычищенным местам от старого.

 
illusion Date: We, 2008-02-06, 19:12 | Message # 7
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Давай мыло, HIEW намылю.

От того что ты сделаешь много изменений (эт количество) у тебя не будет красивого проекта (эт качество) на С/C++.

С форматами екзешников я не в курсе, вот с COM файлами было всё просто.

Я так понял ты дизассемблированные исходники не компилишь...

Расскажи каков процесс внесения изменений у тебя.

 
Mordor Date: We, 2008-02-06, 19:33 | Message # 8
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
Quote (illusion)
Я так понял ты дизассемблированные исходники не компилишь...

принимая во внимание что я не имею понятия что означает этот процесс, то, наверное, нет:)

Quote (illusion)
Расскажи каков процесс внесения изменений у тебя.

найдя нужную мне часть кода в Win32dasm, я в блокноте делаю пометки что хочу изменить, а потом в HexWorkshop'е изменяю байты по намеченному плану. всегда делаю бэкап и как правило (за исключением очень простых изменений) веду историю изменений, записываю в кузницу что менялось на что. например, вот так выглядит внесение в список монстров, которые ворпятся, blood legion-монстров:

Blood legion now also received warping ability on stun:

Previous code (v1.57x RC3)
* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0043CF3F©
|
:0043CF7A 8B8664DD6900 mov eax, dword ptr [esi+0069DD64]
:0043CF80 8B00 mov eax, dword ptr [eax]
:0043CF82 83F827 cmp eax, 00000027
:0043CF85 7509 jne 0043CF90
:0043CF87 8BCB mov ecx, ebx
:0043CF89 E8721D0000 call 0043ED00
:0043CF8E EB22 jmp 0043CFB2

* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0043CF85©
|
:0043CF90 83BE20DD690004 cmp dword ptr [esi+0069DD20], 00000004
:0043CF97 90 nop
:0043CF98 90 nop
:0043CF99 90 nop
:0043CF9A 90 nop
:0043CF9B 90 nop
:0043CF9C 90 nop
:0043CF9D 7513 jne 0043CFB2
:0043CF9F C68690DC690001 mov byte ptr [esi+0069DC90], 01
:0043CFA6 89AE94DC6900 mov dword ptr [esi+0069DC94], ebp
:0043CFAC 89AE98DC6900 mov dword ptr [esi+0069DC98], ebp

* Referenced by a (U)nconditional or ©onditional Jump at Addresses:
|:0043CF8E(U), :0043CF9D©
|
:0043CFB2 83BE8CDC69000F cmp dword ptr [esi+0069DC8C], 0000000F

INTO >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> v1.57x RC4

* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0043CF3F©
|
:0043CF7A 8B8664DD6900 mov eax, dword ptr [esi+0069DD64]
:0043CF80 8B00 mov eax, dword ptr [eax]
:0043CF82 83F81C cmp eax, 0000001C < check blood legion
:0043CF85 7406 je 0043CF8D
:0043CF87 83F827 cmp eax, 00000027 < check warping demons
:0043CF8A 750A jne 0043CF96
:0043CF8C 90 nop

* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0043CF85©
|
:0043CF8D 8BCB mov ecx, ebx
:0043CF8F E86C1D0000 call 0043ED00
:0043CF94 EB1C jmp 0043CFB2

* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0043CF8A©
|
:0043CF96 83BE20DD690004 cmp dword ptr [esi+0069DD20], 00000004
:0043CF9D 7513 jne 0043CFB2
:0043CF9F C68690DC690001 mov byte ptr [esi+0069DC90], 01
:0043CFA6 89AE94DC6900 mov dword ptr [esi+0069DC94], ebp
:0043CFAC 89AE98DC6900 mov dword ptr [esi+0069DC98], ebp

* Referenced by a (U)nconditional or ©onditional Jump at Addresses:
|:0043CF94(U), :0043CF9D©
|
:0043CFB2 83BE8CDC69000F cmp dword ptr [esi+0069DC8C], 0000000F

 
illusion Date: We, 2008-02-06, 20:35 | Message # 9
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Вот смотри:

00000001B0: 2E 74 65 78 74 00 00 00 │ 72 7B 08 00 00 10 00 00 .text r{◘ ►
00000001C0: 00 7C 08 00 00 04 00 00 │ 00 00 00 00 00 00 00 00 |◘ ♦
00000001D0: 00 00 00 00 20 00 00 60 │ 2E 72 64 61 74 61 00 00 `.rdata
00000001E0: B6 A8 00 00 00 90 08 00 │ 00 AA 00 00 00 80 08 00 ╢и Р◘ к А◘
00000001F0: 00 00 00 00 00 00 00 00 │ 00 00 00 00 40 00 00 40 @ @
0000000200: 2E 64 61 74 61 00 00 00 │ E0 D9 26 00 00 40 09 00 .data р┘& @○
0000000210: 00 C4 03 00 00 2A 09 00 │ 00 00 00 00 00 00 00 00 ─♥ *○
0000000220: 00 00 00 00 40 00 00 C0 │ 2E 72 73 72 63 00 00 00 @ └.rsrc
0000000230: 48 2D 00 00 00 20 30 00 │ 00 2E 00 00 00 EE 0C 00 H- 0 . ю♀
0000000240: 00 00 00 00 00 00 00 00 │ 00 00 00 00 40 00 00 40 @ @

это кусок TH.exe где описываются секции кода, данных и т.д.
секция - .text это как раз код, в этой секции лежат следующие числа:
00087B72h - общая длина сегмента кода
00001000h - очевидно это смещение сегмента кода в адресном пространстве процесса
уже при выполнении относительно адреса 0040000h (т.е. в итоге сегмент кода будет по адресу 00401000)
00087C00h - это общая длина секции в екзешнике (в самом конце лежат какието ещё служебные данные самого екзешника)
00000400h - это смещение в экзешнике по которому лежит данная секция

таким образом если ты попытаешься увеличить сегмент кода то остальные сегменты которые лежат после него поплывут,
т.е. как минимум тебе надо будет подправить описание смещений других сегментов и возможно (что самое поганое) указатели smile

всё что я тут написал это то что я понял за 20 минут ковыряния самого екзешника, так что НЕ ФАКТ

Добавлено (06.02.2008, 19:50)
---------------------------------------------
Пора поиграть блин!

Добавлено (06.02.2008, 20:35)
---------------------------------------------
ушло письмо

 
Zenda Date: We, 2008-02-06, 20:58 | Message # 10
Robe
Группа: Игрок
Посты: 10
Репутация: -1
Замечания: 20%
Статус: Offline
Hello Illusion,

I am very interested in your findings on dungeon generation, but my Russian is not good enough for such a topic. Could you please continue this matter in the English part of this forum, or use the Dark forum? For the latter, you'll need to send me an email to get registered.

Zenda

 
illusion Date: We, 2008-02-06, 21:10 | Message # 11
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
To Zenda:
It's funny but my english is bad too:)
It was much time ago, I was viewing exe file and find some place in code there I changed some bytes and then dungeon labirinth is changed too.
Any details I dont remember now:(

Добавлено (06.02.2008, 21:10)
---------------------------------------------
I think it`s need to disasembled and reenginired for perfect C or C++ project be taken. Its hard work, but it must be done one time for all people who want Diablo game continued.

Edited by illusion - We, 2008-02-06, 21:14
 
san40 Date: We, 2008-02-06, 21:17 | Message # 12
Splint Mail
Группа: Модератор
Посты: 510
Репутация: 20
Замечания: 0%
Статус: Offline
2all Хотел склеить эту тему с "предложениями по моддингу". Потом понял что здесь ей самое место Х)

Я вернулся... Флудеров ожидает смерть раком
 
illusion Date: We, 2008-02-06, 21:19 | Message # 13
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Mordor, Эх было бы неплохо что бы можно было делать больше чем одного голема, наделал армию и в бой!
 
san40 Date: We, 2008-02-06, 21:22 | Message # 14
Splint Mail
Группа: Модератор
Посты: 510
Репутация: 20
Замечания: 0%
Статус: Offline
Бтв прошу использовать в этой части форума только русский язык
I ask to use in this part of a forum only Russian


Я вернулся... Флудеров ожидает смерть раком
 
Mordor Date: We, 2008-02-06, 23:25 | Message # 15
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
illusion, я посмотрел програмку hiew, но она работает в ДОСе и в ней неудобно смотреть. в w32dasm гораздо удобнее!

про заголовки к файлам вообще песец как сложно. неужели ты это понимаешь? biggrin

големов много не надо. это внесет дисбаланс

 
illusion Date: Th, 2008-02-07, 00:12 | Message # 16
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Ну ёмаё! Чё сложного то? А ты на С/С++ программить то надеюсь умеешь? Если нет то давай быстро изучай! Ладно я щас попытаюсь скачать нормальный дизассемблер и сделать нормальные ассемблерные исходники, дальше надо будет туда ввиде комментариев импортировать всё заметки (проблема нехватки памяти под код сама собой должна рассосаться).

Добавлено (06.02.2008, 23:58)
---------------------------------------------
Если выдет то надо будет идентифицировать функции, циклы, свитчи и структуры данных, константы отделить от указателей, и переделывать на С

Добавлено (06.02.2008, 23:59)
---------------------------------------------
Вообще работу по втыканию заметок ввиде комментариев к асемблеру лучше распараллелить среди фанатов дела, работа не сложная но объёмная.

Добавлено (07.02.2008, 00:03)
---------------------------------------------
т.е. допустим каждый берёт ассемблерные исходники и какой нибудь файл из заметок, вставляет туда комменты и присылает в центр управления, там дальше делаем diff и merge...

Добавлено (07.02.2008, 00:12)
---------------------------------------------
Короче надо качать IDA Pro V5.2
Я щас качал более раннюю версию но даже там можно идентифицировать структуры данных ну и наверно ещё кучу всего, так что всё путём!

 
san40 Date: Th, 2008-02-07, 00:13 | Message # 17
Splint Mail
Группа: Модератор
Посты: 510
Репутация: 20
Замечания: 0%
Статус: Offline
illusion, Если мне обьяснят что почем, я с радостью помогу. Вот только мои знания в программинге ограничиваются начальным этапом Паскаля biggrin

Я вернулся... Флудеров ожидает смерть раком
 
illusion Date: Th, 2008-02-07, 00:20 | Message # 18
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Завтра напишу план действий поподробнее, сам я не смогу всё сделать это однозначно, но т.к. у меня большой опыт в подобных вещах и вообще опыт программирования лет 10 то с задачей справиться по силам.
Т.е. что у нас есть: это скомпилированный код, который щас дизассемблируем
второе есть куда заметок на тему функциональности отдельных частей кода
третье есть я так полагаю уже исчерпывающее описание структур данных
после того как будет сделан проект хотя бы на ассемблере , сразу появятся возможности добавления нового кода а также добавление и изменения существующих структур данных.
 
CrystalFX Date: Th, 2008-02-07, 00:52 | Message # 19
Studded Leather
Группа: Игрок
Посты: 35
Репутация: 3
Замечания: 0%
Статус: Offline
Знаниями в программировани не силен, но помочь - всегда готов.

Не многие рождаются храбрыми, но многие ими становятся после тренировок и дисциплины
 
illusion Date: Th, 2008-02-07, 11:07 | Message # 20
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Игра диабло была предположительно написана с использованием ООП на С++ в Microsoft Visual Studio 3.0, там использовалась библиотека DirectX 3.0

Итак преплан:

1. Скачиваем самый крутой диз ассемблер IDA Pro v5.2
2. Дизасемблим TH.exe и изучаем все возможности дизассемблера
3. Изучаем как и каким компилятором скомпилировать назад в экзешник ассемблерный код, пишем MakeFile
4. Подготавливаем 2 группы файлов относящихся именно к текущей версии мода:
в первой описываются все структуры данных,
а во второй всё что касаемо назначения той или ной части кода игрухи,
возможна коллективная работа - подробности по ходу
5. Изучаем Subversion Source Sontrol System (SVN) для коллективной работы,
выделяем хост для SVN репозитория проекта в инете,
ищем ребят готовых присоединиться к коллективной работе
6. Изучаем возможность коллективной работы с проектом IDA Pro используя SVN
7. Вводим информацию о структурах данных в проект дизассемблера
8. Генерируем ассемблерный листинг и собираем по нему экзешник что бы он работал идентично существующему TH.exe
9. Кидаем asm исходник в SVN и начинаем коллективную работу по вставке комментариев в исходник, предположительно поделив поровну `заметки` на членов комманды
10. Переименовываем имена функций в осмысленные названия
11. Скачиваем Relogix/86 изучаем как с ним работать и конвертируем ассемблерные исходники в С

На последнем этапе будет примерно один большой *.c файл, размером примерно 40000 строк или 1000 страниц,
в нём будут поименованы все структуры данных и большая часть функций будет иметь осмысленные названия.

Это будет отправная точка для рефакторинга кода и преобразовании в исходный проект на С++ Blizard`а.

Вот тут то и можно будет добавить в игру всяких настоящих вкусностей, типа 800х600, увеличенных карт со смешанными подземельями, действительно запутанными лабиринтами уровней, новыми паттернами для генератора уровней, новых монстров, НОВЫХ ТИПОВ ПОДЗЕМЕЛИЙ, ИЗМЕНЯЮЩИМСЯ ИНТЕЛЛЕКТОМ МОНСТРОВ, новыми квестами МЕНЯЮЩИМИ СЮЖЕТНУЮ ЛИНИЮ и т.д.

Добавлено (07.02.2008, 11:07)
---------------------------------------------
Итак, IDA произвёл на свет в том числе текстовый проектный файл размером 3 Мегабайта, что даёт надежду полагать на коллективную работу с данным фалом!!!

Edited by illusion - Th, 2008-02-07, 10:51
 
Mordor Date: Th, 2008-02-07, 11:32 | Message # 21
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
Я пока что мало что понимаю из написанного тобой, но раз ты уверен в том что делаешь, то раздавай задания. Я тоже готов предложить своё непосредственное и усердное участие.
 
illusion Date: Th, 2008-02-07, 13:06 | Message # 22
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Mordor, ты мне скажи знаешь ли ты языки С/С++??
 
Mordor Date: Th, 2008-02-07, 13:24 | Message # 23
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
я вообще не умею программировать. все что изучал - сам на своих ошибках, методом дедукции и научного тыка=)
 
illusion Date: Th, 2008-02-07, 14:13 | Message # 24
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Тяжело конечно будет.
 
Mordor Date: Th, 2008-02-07, 15:02 | Message # 25
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
трудности не помеха.

я пока еще ищу и качаю ida pro 5.2, пока что нашел только на рапиде. это жестоко конечно, без докачки 65 мегов качать.. ты сам не знаешь ссылки на нее нормальные?

 
illusion Date: Th, 2008-02-07, 15:49 | Message # 26
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Я отсюда качал http://nguest83.depositfiles.com/auth-19....5.2.rar
нажимаешь там back и качаешь

Добавлено (07.02.2008, 15:26)
---------------------------------------------
Блин сегодня весь день ищу декомпилятор ASM в C
есть либо слабоватые, либо надо регистрироваться на сомнительных сайтах и деньги платить что бы скачать нормальный Relogix/86

Добавлено (07.02.2008, 15:27)
---------------------------------------------
вообще IDA Pro сама по себе отличная штука , очень красиво показывает дизассемблированный код, но это всё равно не С

Добавлено (07.02.2008, 15:49)
---------------------------------------------
Надо вот что сделать, скачать c www.emule.com клиента файлообменной сети и там поискать Relogix/86

Edited by illusion - Th, 2008-02-07, 15:26
 
Mordor Date: Th, 2008-02-07, 15:58 | Message # 27
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
черт.. я пирингом не могу ползоваться. меня провайдер глушит на 12 часов за это. ни p2p ни торренты мне недоступны cry

качаю дизасмер..

Edited by Mordor - Th, 2008-02-07, 16:24
 
illusion Date: Th, 2008-02-07, 16:46 | Message # 28
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Ладно декомпилятор я сам поищу, да он пока на данном этапе и не нужен.
Щас надо изучать IDA Pro и настраивать коллективную работу с проектом IDA Pro что бы внести в проект информацию о всех структурах данных.
Поэтому на данном этапе необходимо собрать всю информацию описывающую структуры данных в TH.exe, я так понял это всё есть в заметках. ВОТ ЭТО НАДО ЩАС!

Т.е. надо вытащить из заметок информацию по структурам данных.
Вперёд.

Добавлено (07.02.2008, 16:46)
---------------------------------------------
Я вот чё подумал, работу по создании структур в проекте IDA врятли удастся распараллелить, но благо самих структур не так много как функций в коде. Поэтому эту работу надо будет распараллелить последовательно. Кто нибудь должен подготовить текстовый документ с описанием всех структур в строгом формате, например для каждого места или структуры:
1. смещение структуры(р) в сегменте данных (или файле)
2. размер одной структуры
3. размер массива структур, если их несколько подряд в этом месте
4. выравнивание в памяти если есть
5. предположительное название для структуры
6. описание полей структуры, их тип и названия

далее по этому документу я или Mordor (разобравшийся как работать в IDA Pro) будут вносить изменения в проект.

 
Mordor Date: Th, 2008-02-07, 17:07 | Message # 29
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
у меня не получается скачать и оттуда. все время связь рвется на 65% evil

в локалке у себя я нашел только ida pro 5 версии, такая сойдет?

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

 
illusion Date: Th, 2008-02-07, 17:20 | Message # 30
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Надо найти того кто сможет разместить репозиторий исходников проекта по декомпиляции Diablo I.

Вот оболочка для SVN http://tortoisesvn.net/downloads

5 версия может и подойдёт, точно не знаю.

вот пример структуры дынных на С:

typedef struct Event
{
u32 Value;
Timer_ID timerId;
PriorityClass Priority;
u16 Handler;
} Event;

или вот

typedef struct RTCDate
{
unsigned Day : 4;
unsigned DayDec : 4;
unsigned Month : 4;
unsigned MonthDec: 4;
unsigned Year : 4;
unsigned YearDec : 4;
unsigned Reserved: 8;
} RTCDate;

Добавлено (07.02.2008, 17:19)
---------------------------------------------
А вот примерно что имеется в `заметках`:
Hex Editing Characters (.CHA Requires a Diablo Trainer)

00 - 14 : Additional Header Added by Trainer
16 - 39 : Spell Levels for Spells 01 to 24
5C - 60 : Spell Bits Determine Spells in Book
78, 7C, 80, 84 : HotKey Spell Settings, F5 - F8
94 - B3 : Character's Name
B4 : Class (00 Warrior, 01 Rogue, 02 Sorcerer)
B8 & BC : Strength (Now/Base)
C0 & C4 : Magic (Now/Base)
C8 & CC : Dexterity (Now/Base)
D0 & D4 : Vitality (Now/Base)
E4 & E8 : (Long/64) Original Life (Now/Base)
EC & F0 : (Long/64) Modified Life (Now/Base)
F8 & FC : (Long/64) Original Mana (Now/Base)
100 & 104 : (Long/64) Modified Mana (Now/Base)
10C : Character's Level
110 : (Long) Character's Experience
118 : (Long) Experience to Next Level
120 : (Long) Current Count of Gold

Добавлено (07.02.2008, 17:20)
---------------------------------------------
Слушай может я тебе эту IDA Pro по почте кусочками пошлю?

Edited by illusion - Th, 2008-02-07, 17:17
 
Mordor Date: Th, 2008-02-07, 17:39 | Message # 31
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
какие "заметки"? по дарку чтоли?

ида про 5 я себе установил. открыл последнюю версию мода в ней и ничего не понимаю. похоже на то что показывается в hex workshop но гораздо непонятнее...

может я и понимаю что такое структура данных, но я не понимаю что значит структура данных в твоем понимании. поясни просто, как в словаре))

по почте посылай. лучше всетаки в одинаковых версиях лабать.

 
illusion Date: Th, 2008-02-07, 17:53 | Message # 32
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
IDA Pro показываем намного больше информации, и позволяет вводить дополнительную информацию которая упрощает понимание кода.

Что такое структура...
вот например в сегменте данных TH.exe есть описание характеристик всего оружия например, так?
его там много.
В сегменте данных это представлено просто последовательностью байт. Но в действительности там разные области байт принадлежат разному оружию, так?

таким образом получается некая структура описывающая параметры одного оружия.
в неё входят например:
минимальный урон
максимальный
дюрабилити и т.д.
но эта структура повторяется для каждого оружия, и они следуют друг за другом.

Получаеся что структура это некая область памяти содержащая некоторые параметры, каждый параметр которой может быть например байтом, словом , двойным словом или другой структурой.
Примерно так. Бери книжку по С и полистай надосуге.

Добавлено (07.02.2008, 17:51)
---------------------------------------------
Ладно я домой, поковыряю IDA Pro сегодня вечерком может и эти заметки Дарка.
А тебе надо изучать С, потому как когда у нас будет удобоваримый проект на С именно ты будешь писать игру дальше, а я тебе дам инструменты, научу ими работать, и поставлю процесс. Мне самому то некогда, а вот продолжение игры очень хочется видеть!

Добавлено (07.02.2008, 17:52)
---------------------------------------------
Я вообще не понимаю как можно написать МОД ковыряя екзешник вживую, этож адские мучения, хотябы С, а потом С++.

Добавлено (07.02.2008, 17:53)
---------------------------------------------
Удачи! До завтра!

 
Mordor Date: Th, 2008-02-07, 18:16 | Message # 33
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
я понял про структуры данных. точнее, понял что ты под ними подразумевал)

выслал тебе на мыло файл, там основа простых структур есть.

еще у меня появилась мысль, что после этих структур надо вводить не менее ценные: формулы регенерации жизни, урона монстрам/от монстров, всякие резисты, поглощения и пр. их очень много (+у меня есть много идей по добавлению новых примочек, половина из них 100%-но улучшит играбельность и будет просто приклеивать к игре).

например, есть поинтеры в игре. лдля персонажей, для монстров, для боссов, для квестов. какие-то из них мне известны, какие--то - увы...

например, так выглядит рутина голосовых сообщений для разных персов при входе в темницу:

* Referenced by a CALL at Address:
|:0040B2E5
|
:0045EB94 8B0DE8AD6E00 mov ecx, dword ptr [006EADE8] < ecx = local character
:0045EB9A 53 push ebx
:0045EB9B 83F904 cmp ecx, 00000004 < compare ecx to 4
:0045EB9E 56 push esi
:0045EB9F 7213 jb 0045EBB4 < if bigger, jump to 45ebb4
:0045EBA1 51 push ecx

* Possible StringData Ref from Data Obj ->"PlayDungMsgs: illegal player %d"
|
:0045EBA2 68B8684B00 push 004B68B8
:0045EBA7 E8B92DFAFF call 00401965
:0045EBAC 59 pop ecx
:0045EBAD 59 pop ecx
:0045EBAE 8B0DE8AD6E00 mov ecx, dword ptr [006EADE8]

* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0045EB9F©
|
:0045EBB4 8A15D8B16000 mov dl, byte ptr [0060B1D8] < dl = dungeon level
:0045EBBA A114AE6E00 mov eax, dword ptr [006EAE14] < eax = local charaacter
:0045EBBF B301 mov bl, 01 < bl = 1
:0045EBC1 90 nop
:0045EBC2 90 nop
:0045EBC3 90 nop
:0045EBC4 90 nop
:0045EBC5 80FA01 cmp dl, 01 < check if dungeon level =1
:0045EBC8 0F8582000000 jne 0045EC50 < if not, jump to dlvl 5 speech check
:0045EBCE 8BF1 mov esi, ecx < copy ecx to esi ?
:0045EBD0 69F6C8550000 imul esi, 000055C8
:0045EBD6 03F0 add esi, eax
:0045EBD8 80BEF501000000 cmp byte ptr [esi+000001F5], 00 < check flag ???
:0045EBDF 756F jne 0045EC50
:0045EBE1 80FB01 cmp bl, 01
:0045EBE4 756A jne 0045EC50
:0045EBE6 849E69550000 test byte ptr [esi+00005569], bl
:0045EBEC 7562 jne 0045EC50
:0045EBEE C70514A2570028000000 mov dword ptr [0057A214], 00000028 < play speech
:0045EBF8 8A8660010000 mov al, byte ptr [esi+00000160] < al = charactrer class
:0045EBFE 84C0 test al, al < test if char.class = paladin
:0045EC00 7438 je 0045EC3A < if equal jump to Paladin's message
:0045EC02 3AC3 cmp al, bl
:0045EC04 7424 je 0045EC2A
:0045EC06 3C02 cmp al, 02
:0045EC08 750C jne 0045EC16
:0045EC0A C70518A2570067020000 mov dword ptr [0057A218], 00000267
:0045EC14 EB2E jmp 0045EC44

* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0045EC08©
|
:0045EC16 3C03 cmp al, 03
:0045EC18 750C jne 0045EC26
:0045EC1A C70518A25700A7030000 mov dword ptr [0057A218], 000003A7
:0045EC24 EB1E jmp 0045EC44

* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0045EC18©
|
:0045EC26 3C04 cmp al, 04
:0045EC28 750C jne 0045EC36

* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0045EC04©
|
:0045EC2A C70518A25700CE020000 mov dword ptr [0057A218], 000002CE
:0045EC34 EB0E jmp 0045EC44

* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0045EC28©
|
:0045EC36 3C05 cmp al, 05
:0045EC38 750A jne 0045EC44

* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0045EC00©
|
:0045EC3A C70518A2570040030000 mov dword ptr [0057A218], 00000340

* Referenced by a (U)nconditional or ©onditional Jump at Addresses:
|:0045EC14(U), :0045EC24(U), :0045EC34(U), :0045EC38©
|
:0045EC44 808E6955000001 or byte ptr [esi+00005569], 01
:0045EC4B E94E030000 jmp 0045EF9E

* Referenced by a (U)nconditional or ©onditional Jump at Addresses:
|:0045EBC8©, :0045EBDF©, :0045EBE4©, :0045EBEC©
_______________________________________________________________

вот, mov al, byte ptr [esi+00000160] в этом коде означает, например, что регистр (переменная) AL будет означать класс героя. и далее оперируя уровнем подземелья и классом героя код принимает решение играть ли и какую играть речь в данной ситуации.

это как-то помогает в нашем деле? =)

 
illusion Date: Fr, 2008-02-08, 10:10 | Message # 34
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Да ассемблер то я знаю, причём не один:) Правда я не уважаю эти низкоуровневые языки, поэтому плохо помню их уже:)

Насчёт имён переменных ты прав, но это следующий этап, т.к. он прекрасно распараллеливается по N количеству фанатов, а вот этап ввода информации о структурах в проект IDA Pro просто так не распараллеливается.

Я попробовал текстовый файл проекта IDA (*.idc) засунуть в SVN для параллельной работы, короче херня какаето получается. IDA требуется кроме этого фала ещё база данных, а она бинарная. Из этого следует что работу с дизасемблерными исходниками в IDA придётся делать одному человеку:( Я это в принципе могу сделать.

Я вчера до часу ночи разбирался как раз с тем как вводить структуры данных в IDA, и разобрался. Вобщем то сумел определить структуру для предметов (оружие, шмотки, и т.д.), сразу нашел функцию которая работает с этими данными:)

Ладно короче вылазь в аську , поговорим, решим кто чем будет заниматься.

Edited by illusion - Fr, 2008-02-08, 10:11
 
Mordor Date: Fr, 2008-02-08, 10:12 | Message # 35
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
ок, щас поем, процедуры всякие, и вылезу
 
illusion Date: Fr, 2008-02-08, 20:59 | Message # 36
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Процедуры не еш, бобо будет:)

Добавлено (08.02.2008, 20:59)
---------------------------------------------
Ну ты где там? Структуры шмоток получились или нет? сделай Produse file *.asm ужми ипошли мне по почте если сделал массив структур.

 
Mordor Date: Fr, 2008-02-08, 21:03 | Message # 37
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
я сделал один предмет но дальше компоновать не получается.
аска есть щас? нужна консультация.
 
illusion Date: Fr, 2008-02-08, 21:04 | Message # 38
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
я в аське
 
Mordor Date: Sa, 2008-02-09, 16:47 | Message # 39
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
illusion, новости:

1. мне удалось скачать IDA 5.2, я проапгрейдился, но теперь не могу старый файл открыть. та же ошибка как у тебя была: sorry, this file was created by a pirate version of IDA....

2. Sourceforge не дали права на регистрацию.

 
illusion Date: Su, 2008-02-10, 10:11 | Message # 40
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
А ты много сделал в версии 5.0 ?
Если одну структуру думаю будет неплохо переделать, глядишь лучше будешь в проге разбираться.

Хрен с этом соурсфоржем.
Ты как свой сайт хостишь? Может туда репозиторий поставить?
На крайний случай я буду использовать репозиторий на работе.

Добавлено (10.02.2008, 09:57)
---------------------------------------------
Да и я ещё кажется разобрался почему у тебя сгенерированный ASM файл был 35 мег. Там надо в настройках анализа поставить галочку Coagulate data segments in the final pass.

Добавлено (10.02.2008, 10:00)
---------------------------------------------
Там самого кода только на 4,5 мегобайта, остальное это сегмент данных по байту на строчку:)
После декомпиляции должно остаться всего 450 - 900 кб исходников на С.

Добавлено (10.02.2008, 10:11)
---------------------------------------------
С репозиторием можно вот как сделать:
я кладу версию в SVN а потом ужимаю и ты выкладываешь это дело на сайте.
дельше чуваки работают с этой версией (вносят комменты и именуют ) сжитают и мылят мне.
я сливаю в репозиторий и выкладываем новую версию на сайт и так по кругу.
К тому же сливать в репозиторий наверно должен один человек, он же будет проверять компилится это вообще и работает.

Edited by illusion - Su, 2008-02-10, 10:04
 
Mordor Date: Su, 2008-02-10, 13:05 | Message # 41
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
начинаю заново

открываю файл ТН.ехе

меня интересуют опции открытия (on/off):

- analysis options
- imported DLL options
- create imports segments
- create resources segments

Что отмечать, что не отмечать?
_________________________________________

что значит "хостишь"? у меня мегов 30 свободного места на сайте
_________________________________________

с репозиторием не особо понятно. но как только дойдет до того что уже можно будет выкладывать, тогда разберемся.

 
illusion Date: Su, 2008-02-10, 20:38 | Message # 42
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Все эти опции включай.

Добавлено (10.02.2008, 20:32)
---------------------------------------------
и ещё потом там отметь: Coagulate data segments in the final pass.

Добавлено (10.02.2008, 20:34)
---------------------------------------------
Вылазь в аську

Добавлено (10.02.2008, 20:35)
---------------------------------------------
К тебе вчера девушки заходили? smile

Добавлено (10.02.2008, 20:38)
---------------------------------------------
Вчера играл в твою игру, босы злые какие! Приходится по 10 раз игру заново начинать и идти с первого уровня. Надо будет это дело исправить таким образом, что бы всегда были альтернативные ходы в подземельях, где можно набрать опыта не начиная игру заново. Чё думашь?

 
Mordor Date: Su, 2008-02-10, 20:44 | Message # 43
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
ок, включу

отмечу

вылезу=)

я живу с двумя девушками =)

думаю что это странно, но можно как в фаллауте втором сделать что бродишь по бескрайним полям одного уровня пока не почувствуешь способность идти ниже

 
illusion Date: Mn, 2008-02-11, 10:51 | Message # 44
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Вчера ковырялся до 2 часов ночи, нашел декомпилятор!
Декомпилировал!!!
Конечно там куча ошибок но Сишный файл получился. 1800 функций.

Добавлено (11.02.2008, 10:24)
---------------------------------------------
Я тебе его щас намылю.

Добавлено (11.02.2008, 10:48)
---------------------------------------------
Короче говоря надо разбираться с этим декомпилятором. Он ещё сырой поэтому ты пока там сильно не усерствуй с вбиванием структур данных, т.к. возможно ещё не один раз придётся декомпилировать екзешник с разными настройками.

Ещё такой вопрос: в екзешнике есть брошенные куски кода в результате твоей деятельности?

Добавлено (11.02.2008, 10:51)
---------------------------------------------
И ещё возможно придётся сначала дизасемблить Storm.DLL , кстати ты не мог бы мне рассказать всё что ты знаешь про эту ДЛЛьку?

 
Mordor Date: Mn, 2008-02-11, 11:03 | Message # 45
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
скачал. попробовал. он мне сделал сишник в 3мб.

Quote (illusion)
в екзешнике есть брошенные куски кода в результате твоей деятельности?

неиспользуемый код? код, который не используется, я забивал неактивными функциями (nop), но может быть есть код в тех местах где раньше по не знанию остался (когда я еще не соображал куда прыгают джамы и где код не используется)

про storm.dll я знаю что она дает поддержку видео, звука, проверяет диск и еще что-то там делает. там хранятся процедуры считывания файлов из архивов

 
illusion Date: Mn, 2008-02-11, 21:25 | Message # 46
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
вылязь в аську

Добавлено (11.02.2008, 17:14)
---------------------------------------------
Я кажется разобрался как сделать коллективную работу в IDA Pro 5.2!

1. Мы щас окончательно зафиксирует экзешник
2. Дизасемблируем его в IDA
3. Генерируем скриптовый файл TH.IDC
4. Кладём TH.IDC в репозиторий как основной файл проекта
5. Готовим архив с TH.exe и TH.IDC, выкладываем для желающих на сайт

Работа в проекте
6. Дизасемблируем TH.exe в IDA
7. Открываем файл TH.IDC в IDA
8. Вносим изменения в проект
9. Генерируем TH.IDC
10. Сливаем изменения с основным проектным файлом TH.IDC
11. Проверяем как слились изменения
12. Go To п. 5

Добавлено (11.02.2008, 17:20)
---------------------------------------------
На данном этапе надо значит вбить всё структуры данных и исправить все проблемы которые есть в проекте. Там есть такое окошечко напротив рисунка полоски сегментов, в этом окошке надо выбрать Problems. Тогда на рисунке отобразятся все проблемы красными бугорками. Когда их все исправим можно будет пытаться декомпирировать.

Добавлено (11.02.2008, 21:25)
---------------------------------------------
Дерьмо какоето по адресу
.text:0043053B 020 retn ; Return Near from Procedure
.text:0043053B sub_4303A8 endp ; sp-analysis failed

Добавлено (11.02.2008, 21:25)
---------------------------------------------
по моему чья то самодеятельность

 
Mordor Date: Mn, 2008-02-11, 22:19 | Message # 47
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
да, там надо подрихтовать. займусь щас
 
illusion Date: Mn, 2008-02-11, 22:21 | Message # 48
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Погодь
Сначала я попробую всё уделать, потом пришлю тебе базу и ты займёшься проблемными местами.
 
Mordor Date: Mn, 2008-02-11, 22:24 | Message # 49
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
там сделан CALL. там проверяется максимальное повреждение персонажа. if char.damage > clvl*64, set it to clvl*64
 
illusion Date: We, 2008-02-13, 11:08 | Message # 50
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
С коллективной работой опять облом, идиотский IDA не понимает нормально IDC скрипты.
Так что завтра я те намылю IDB с моими сегодняшними наработками.

Добавлено (12.02.2008, 10:29)
---------------------------------------------
Здаров! Не спи замерзнешь!

Будем одну базу использовать по очереди, по другому никак не получается.

Я вчера ковырял, осталось 4 ошибки декомпиляции всего.
Давай поковыряй может чё скажешь. Тут в основном функции с двумя началами, такой изврат мог получиться скорее всего изза вашего влияния:)

#error "47AB2C: invalid basic block (funcsize=77)"
#error "448910: invalid basic block (funcsize=8)"
#error "44A7BE: invalid basic block (funcsize=3)"
#error "4557F7: invalid basic block (funcsize=2)"

Добавлено (12.02.2008, 10:47)
---------------------------------------------
Пример функции с двумя началами:
.text:0044A7B0 ; =============== S U B R O U T I N E =======================================
.text:0044A7B0
.text:0044A7B0
.text:0044A7B0 sub_44A7B0 proc near ; CODE XREF: sub_446256+43p
.text:0044A7B0 000 mov byte_6DCF84[ecx], 1
.text:0044A7B7 000 mov dword_6DCFB0[ecx*4], edx
.text:0044A7BE 000 jmp $+5 ; Jump
.text:0044A7BE sub_44A7B0 endp ; sp-analysis failed
.text:0044A7BE
.text:0044A7C3
.text:0044A7C3 ; =============== S U B R O U T I N E =======================================
.text:0044A7C3
.text:0044A7C3
.text:0044A7C3 sub_44A7C3 proc near ; CODE XREF: sub_44AA87+8p
.text:0044A7C3 ; sub_44AA87+31p
.text:0044A7C3 000 push esi
.text:0044A7C4 004 push edi
.text:0044A7C5 008 xor esi, esi ; Logical Exclusive OR
.text:0044A7C7 008 mov edi, offset dword_6DCFB0
.text:0044A7CC
.text:0044A7CC loc_44A7CC: ; CODE XREF: sub_44A7C3+44j
.text:0044A7CC 008 cmp byte_6DCF84[esi], 0 ; Compare Two Operands
.text:0044A7D3 008 jz short loc_44A7FD ; Jump if Zero (ZF=1)
.text:0044A7D5 008 cmp byte_6DAB14, 1 ; Compare Two Operands
.text:0044A7DC 008 jnz short loc_44A7E9 ; Jump if Not Zero (ZF=0)
.text:0044A7DE 008 mov edx, [edi]
.text:0044A7E0 008 mov ecx, esi
.text:0044A7E2 008 call sub_445FFF ; Call Procedure
.text:0044A7E7 008 jmp short loc_44A7F3 ; Jump
.text:0044A7E9 ; ---------------------------------------------------------------------------
.text:0044A7E9
.text:0044A7E9 loc_44A7E9: ; CODE XREF: sub_44A7C3+19j
.text:0044A7E9 008 push 1
.text:0044A7EB 00C mov ecx, esi
.text:0044A7ED 00C pop edx
.text:0044A7EE 008 call sub_44A80C ; Call Procedure
.text:0044A7F3
.text:0044A7F3 loc_44A7F3: ; CODE XREF: sub_44A7C3+24j
.text:0044A7F3 008 and byte_6DCF84[esi], 0 ; Logical AND
.text:0044A7FA 008 and dword ptr [edi], 0 ; Logical AND
.text:0044A7FD
.text:0044A7FD loc_44A7FD: ; CODE XREF: sub_44A7C3+10j
.text:0044A7FD 008 add edi, 4 ; Add
.text:0044A800 008 inc esi ; Increment by 1
.text:0044A801 008 cmp edi, offset dword_6DCFC0 ; Compare Two Operands
.text:0044A807 008 jl short loc_44A7CC ; Jump if Less (SF!=OF)
.text:0044A809 008 pop edi
.text:0044A80A 004 pop esi
.text:0044A80B 000 retn ; Return Near from Procedure
.text:0044A80B sub_44A7C3 endp

Добавлено (12.02.2008, 11:14)
---------------------------------------------
Что бы народ не унывал показываю какие красивые функции у нас получаются:

Code

int __fastcall sub_424B17(void *Dst, int a2)
{
int ItemIndex; // ebx@1
BaseItem *ItemPtr; // edi@1
void *v4; // esi@1
int result; // eax@3

ItemIndex = a2;
v4 = Dst;
ItemPtr = &BaseItemsPtr[a2];
memset(Dst, 0, 0x174u);
*((_DWORD *)v4 + 2) = ItemPtr->ItemCode;
*((_DWORD *)v4 + 48) = ItemPtr->GraphicValue;
strcpy((char *)v4 + 61, (const char *)ItemPtr->NamePtr);
strcpy((char *)v4 + 125, (const char *)ItemPtr->NamePtr);
*((_BYTE *)v4 + 189) = ItemPtr->EquippedLocation;
*((_BYTE *)v4 + 190) = ItemPtr->ItemType;
*((_DWORD *)v4 + 51) = ItemPtr->MinimumDamage;
*((_DWORD *)v4 + 52) = ItemPtr->MaximumDamage;
*((_DWORD *)v4 + 53) = ItemPtr->MinimumArmor;
*((_DWORD *)v4 + 55) = ItemPtr->MagicCode;
*((_DWORD *)v4 + 56) = ItemPtr->SpellNumber;
if ( ItemPtr->MagicCode == 23 )
*((_DWORD *)v4 + 57) = 18;
*((_DWORD *)v4 + 58) = *((_DWORD *)v4 + 57);
*((_DWORD *)v4 + 59) = ItemPtr->Durability;
*((_DWORD *)v4 + 60) = ItemPtr->Durability;
*((_BYTE *)v4 + 352) = ItemPtr->RequiredStrength;
*((_BYTE *)v4 + 353) = ItemPtr->RequiredMagic;
*((_BYTE *)v4 + 354) = ItemPtr->RequiredDexterity;
*((_DWORD *)v4 + 49) = ItemPtr->MinPrice;
result = ItemPtr->MinPrice;
*((_BYTE *)v4 + 332) = -1;
*((_BYTE *)v4 + 333) = -1;
*((_BYTE *)v4 + 60) = 0;
*((_DWORD *)v4 + 50) = result;
*((_DWORD *)v4 + 90) = ItemIndex;
return result;
}

Это вам не екзешник ковырять!

Добавлено (13.02.2008, 11:08)
---------------------------------------------
Так мне нужна следующая информация:
1. изменялся ли Storm.dll ?
2. изменялся ли Smackw32.dll ?
3. в игру добавлялись ещё какието dll ?

24.11.2007 13:32 245 760 Hell.dll
13.04.2005 16:11 245 760 Hellfrui.dll
07.05.2006 01:04 21 360 PlugUlmo.dll
13.12.2006 23:02 39 623 StashTH.dll

что это за dll ?

как они добавлялись?

Edited by illusion - Tu, 2008-02-12, 11:16
 
Diablo: The Hell - forums » Форум The Hell » Адская Кузница » Предложения по моду
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

Copyright MyCorp © 2024 Хостинг от uCoz