Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
10 Sep 2010, 14:43
Сообщение
#1
|
|
![]() допустим, мяў Сообщений: 24 129 Спасибо сказали: 13439 раз |
Посмотрев, как Master of Puppets сделал расширение для двеллингов, решился высказать свою давнюю мечту - вынести весь массив героев в отдельную dll, расширив структуру героя по всем показателям - больше слотов для юнитов (13) (в бою участвуют только 7 первых, остальные - резерв. в боях с нейтралами часто бывает нужно часть регулярной армии сделать неактивной); больше навыков (254/3), больше заклинаний (255). Ну и самих героев число увеличить. Число классов уже увеличено, что радует, но развернуться-то негде
А самая-самая крутая мечта - вынести все города в dll-ки со стандартизированным интерфейсом, и чтобы они лежали в папке Data\Towns, и по желанию можно было бы туда класть dll с новыми городами или изымать нежелательные из стандартных. Также хотелось бы расширить массив почв, и задавать интервалы цветов для псевдоанимации в текстовике, а не в экзешнике. -------------------- Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская) |
|
|
|
10 Sep 2010, 14:49
Сообщение
#2
|
|
![]() Рыцарь в лесу. Сообщений: 4 469 Спасибо сказали: 6237 раз |
Цитата больше слотов для юнитов (13) Почему именно 13? Давайте тогда уж 16 для ровного счёта. Или все 64. Само собой, по умолчанию будут включены только первые семь, остальное на усмотрение того, кто будет использовать длл.
-------------------- ![]() |
|
|
|
10 Sep 2010, 14:52
Сообщение
#3
|
|
|
Immortal Сообщений: 1 127 Спасибо сказали: 2120 раз |
Цитата(Лорд Хаарт @ 10 Sep 2010, 17:49) Цитата больше слотов для юнитов (13) Почему именно 13? Давайте тогда уж 16 для ровного счёта. Или все 64. Само собой, по умолчанию будут включены только первые семь, остальное на усмотрение того, кто будет использовать длл.Чтобы шесть убрать в запас, а с одним напасть. -------------------- Будь я проклят... Татуин! Это чудесное место... Ой, спойлер (с) Фил Колсон.
|
|
|
|
10 Sep 2010, 14:57
Сообщение
#4
|
|
![]() допустим, мяў Сообщений: 24 129 Спасибо сказали: 13439 раз |
13 чтоб рисовалось в окне героя. остальные - линейкой прокрутки.
-------------------- Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская) |
|
|
|
10 Sep 2010, 14:58
Сообщение
#5
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20605 раз |
Цитата вынести весь массив героев в отдельную dll Проблема номер раз. Собственно, перенос. Ну, предположим, достаточно будет только перебить указатель. Проблема номер два. Сейвы. Ну, положим, её тоже можно как-нить решить. Проблема номер три. Собственно расширение структур. А вот это такооооооой головняк... |
|
|
|
10 Sep 2010, 15:02
Сообщение
#6
|
|
![]() Etoslozhnostatus Сообщений: 8 676 Спасибо сказали: 16193 раза |
Слишком много кода надо менять. Дизассемблировать уже известные функции (туча), поменять там некоторые константы, адреса, потом разобраться с ещё неизвестными (тоже туча, надеюсь, что меньше)... Либо заняться VCMI, хотя там ИИ уже не тот.
Добавлено ([mergetime]1284120123[/mergetime]): Цитата(feanor @ 10 Sep 2010, 15:58) Цитата вынести весь массив героев в отдельную dll Проблема номер ... Проблема номер десять - редактор карт и генератор. -------------------- - Да ну!?
- Horn of the Argali гну! |
|
|
|
10 Sep 2010, 15:05
Сообщение
#7
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20605 раз |
Проверил. Обращений к 699538h (указателю на весь массив героев) - 2383 штуки. Не меньше половины их - со смещениями. Расширять в лоб - замаешься.
|
|
|
|
10 Sep 2010, 16:26
Сообщение
#8
|
|
![]() допустим, мяў Сообщений: 24 129 Спасибо сказали: 13439 раз |
А как расширять не в лоб?
-------------------- Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская) |
|
|
|
10 Sep 2010, 16:30
Сообщение
#9
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20605 раз |
Да, кстати, в моем хрустальном шаре отчетливо видится ворох проблем с дллками. В частности, дикий геморрой с перекрытием хуков.
Цитата А как расширять не в лоб? Хз, думать надо. Скажем, хранить инфу где-то еще и изменять методы доступа к ней. |
|
|
|
10 Sep 2010, 20:00
Сообщение
#10
|
|
![]() допустим, мяў Сообщений: 24 129 Спасибо сказали: 13439 раз |
Думаю, нужно составлять таблицу хуков, по типу как таблицу прерываний. Там хранятся ссылки на все структуры, а dll-ки не используют фиксированных адресов, а берут их из этой таблицы.
-------------------- Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская) |
|
|
|
10 Sep 2010, 20:21
Сообщение
#11
|
|
![]() Рыцарь в лесу. Сообщений: 4 469 Спасибо сказали: 6237 раз |
Флагшток тебе в… Ну, скажем, в руки.
-------------------- ![]() |
|
|
|
10 Sep 2010, 20:27
Сообщение
#12
|
|
![]() Etoslozhnostatus Сообщений: 8 676 Спасибо сказали: 16193 раза |
Кто-то обещал не лезть в область программирования.
-------------------- - Да ну!?
- Horn of the Argali гну! |
|
|
|
10 Sep 2010, 20:48
Сообщение
#13
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20605 раз |
Цитата(cерый @ 10 Sep 2010, 21:06) Нужно просто заново всю кодовую базу переписывать на нормальную чистую неограниченную платформу. Та база, на которой сделали игру разработчики не выдерживает нормальной работы кодера. Значит так. Показываешь нам, сирым и убогим, как это сделать. А то мы тут десять лет ходим вокруг да около и не видим такого чистого неограниченного пути. За две недели управишься? Доп. задание на доп. балл: показать нормальную работу кодера. Добавлено ([mergetime]1284140073[/mergetime]): Цитата(hippocamus @ 10 Sep 2010, 21:00) Думаю, нужно составлять таблицу хуков, по типу как таблицу прерываний. Там хранятся ссылки на все структуры, а dll-ки не используют фиксированных адресов, а берут их из этой таблицы. Не, библиотека структур и функций тащемта ничего сложного из себя не представляет. Я даже выкладывал БФ, используемую мной в артефактах для ТоЕ. Проблема именно в хуках. Примерный вариант - спецДлл, которая вешает на все часто употребляемые хуки свои обработчики и экспортирует функции регистрации на эти обработчики. Добавлено ([mergetime]1284140908[/mergetime]): Примерно так: Код int (*freezeHooks[255])(int, int, int); extern чего-то там void RegisterFreezeHook(int (*hook)(int,int,int)) { for (int i=0; i!=256; i++) { if ((int)(freezeHooks[i])==0) (freezeHooks[i])=hook; } } void OnFreeze(int param, int param2, int param3) { for (int i=0; i!=256; i++) { if ((int)(freezeHooks[i])) (freezeHooks[i])(param, param2, param3); } } WriteHook((void*)0x40CO1D,(void*)OnFreeze,HOOKTYPE_CALL) мог накосячить с указателями, но лезть в справочники влом |
|
|
|
23 Sep 2010, 23:03
Сообщение
#14
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20605 раз |
Цитата(feanor @ 10 Sep 2010, 21:48) Цитата(cерый @ 10 Sep 2010, 21:06) Нужно просто заново всю кодовую базу переписывать на нормальную чистую неограниченную платформу. Та база, на которой сделали игру разработчики не выдерживает нормальной работы кодера. Значит так. Показываешь нам, сирым и убогим, как это сделать. А то мы тут десять лет ходим вокруг да около и не видим такого чистого неограниченного пути. За две недели управишься? Доп. задание на доп. балл: показать нормальную работу кодера. 10+14 = 24 |
|
|
|
03 Oct 2010, 09:49
Сообщение
#15
|
|
![]() I must gather my party before venturing forth Сообщений: 5 129 Спасибо сказали: 17833 раза |
Я тут пару дней зарегался, осваиваюсь. Понимаю, что это не совсем то, чего хочет автор темы. Но, пока еще не наступила утопия.
О резерве я тоже долго мечтал. В общем есть у меня, написанный мною скрипт - "Оруженосца", работает он так - любого героя можно прикрепить к другому герою "оруженосцем", а в окне героя "рыцаря" Ctrl-Clck'ом можно передавать существ оруженосцу и обратно. Формально, герой-оруженосец просто убивается с запретом появления в таверне. Просто, я как-то случайно выяснил, что "мертвому" герою командами скритпа можно нормально передавать существ, и они не затираются....Также сделал так, что при смерти героя, оруженосец тоже теряет свое войско, и снимается запрет на появление в таверне. Также героя-рыцаря (уже имеющего оруженосца) в моем скрипте нельзя сделать оруженосцем. Если нужно выложу. -------------------- |
|
|
|
03 Oct 2010, 20:51
Сообщение
#16
|
|
![]() допустим, мяў Сообщений: 24 129 Спасибо сказали: 13439 раз |
Ну, это очень интересный скрипт. Только, правда, совсем не то, о чём я говорил, но интересен с тактической точки зрения. Выложи этот скрипт (желательно создай тему в разделе Скрипты).
-------------------- Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская) |
|
|
|
03 Oct 2010, 22:58
Сообщение
#17
|
|
![]() Immortal Сообщений: 1 468 Спасибо сказали: 1153 раза |
Оригинальная идея.
-------------------- |
|
|
|
![]() ![]() |
| Текстовая версия | Сейчас: 17 December 2025 - 22:32 |
|
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |
|