(27.11.2017 10:48)igrik Wrote: MoP, поизучав твои исходники я практически ничего из них не вынес. Адреса в подавляющем большинстве случаев другие, реализация диалогов и др.плюшек слабоприменима. А вот идеи из мода да - питали меня.
Например, вот сейчас я пишу диалог опыта существ. Но я ничего не могу использовать из того как ты его реализовал. А жаль, мне было бы намного проще это сделать. То же и с диалогом командира (хотя нет. Для командира я использовал тобой описанную структуру).
Потому что ты переусложнил задачу.
Я оттягивал переделку диалогов под DL именно потому, что думал, что мне потребуется знание структур. Исходники WoG не были тогда выложены. Но, собравшись с духом и приступив к делу, я понял, что структуры вообще не нужны! Практически все данные перед показом кладутся в легко находимые переменные:
Code:
ComStr equ dword [ebp-20h]
Тип_диалога equ dword [ebp+8]
Наличие_кнопки_увольнения equ dword [ebp+0Ch]
Unknown equ dword [ebp+10h]
Attack equ dword [28604F8h]
HeroAttack equ dword [28604FCh]
Defence equ dword [2860500h]
HeroDefence equ dword [2860504h]
Health equ dword [2860508h]
Speed equ dword [286050Ch]
MinD equ dword [2860510h]
MaxD equ dword [2860514h]
SP equ dword [2860518h]
Resistance equ dword [286051Ch]
Shots equ dword [2860520h]
Name equ dword [28604E4h]
HeroName equ dword [28604F0h]
Exp equ dword [2860548h]
NextLevel equ dword [286054Ch]
...
Всё, что остаётся - перевести их в текст и показать в нужном месте диалога.
У меня ушло 2-3 дня на каждый диалог, и больше я к ним не возвращался, чтобы что-то поправить. И новые строки в znpc00.txt не понадобились. Кстати, а зачем они тебе?
Реализация диалогов игровыми средствами не нравится мне тем, что не поддаётся изменению со стороны пользователя - код забит внутрь библиотеки, никакой тебе текстовой таблицы. Я только один такой диалог целиком написал - показ характеристик стартового героя, чем, думаю, доставил проблем ХЕРОМАНТу.