IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> Расширение геройских структур, для Эры
hippocamus
сообщение 10 Sep 2010, 14:43
Сообщение #1

допустим, мяў
Сообщений: 24 129
Спасибо сказали: 13439 раз




Посмотрев, как Master of Puppets сделал расширение для двеллингов, решился высказать свою давнюю мечту - вынести весь массив героев в отдельную dll, расширив структуру героя по всем показателям - больше слотов для юнитов (13) (в бою участвуют только 7 первых, остальные - резерв. в боях с нейтралами часто бывает нужно часть регулярной армии сделать неактивной); больше навыков (254/3), больше заклинаний (255). Ну и самих героев число увеличить. Число классов уже увеличено, что радует, но развернуться-то негде wink.gif
А самая-самая крутая мечта - вынести все города в dll-ки со стандартизированным интерфейсом, и чтобы они лежали в папке Data\Towns, и по желанию можно было бы туда класть dll с новыми городами или изымать нежелательные из стандартных.
Также хотелось бы расширить массив почв, и задавать интервалы цветов для псевдоанимации в текстовике, а не в экзешнике.


--------------------
Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская)


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Haart of the Aby...
сообщение 10 Sep 2010, 14:49
Сообщение #2

Рыцарь в лесу.
Сообщений: 4 469
Спасибо сказали: 6237 раз




Цитата
больше слотов для юнитов (13)
Почему именно 13? Давайте тогда уж 16 для ровного счёта. Или все 64. Само собой, по умолчанию будут включены только первые семь, остальное на усмотрение того, кто будет использовать длл.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
SerAlexandr
сообщение 10 Sep 2010, 14:52
Сообщение #3

Immortal
Сообщений: 1 127
Спасибо сказали: 2120 раз




Цитата(Лорд Хаарт @ 10 Sep 2010, 17:49)
Цитата
больше слотов для юнитов (13)
Почему именно 13? Давайте тогда уж 16 для ровного счёта. Или все 64. Само собой, по умолчанию будут включены только первые семь, остальное на усмотрение того, кто будет использовать длл.

Чтобы шесть убрать в запас, а с одним напасть.


--------------------
Будь я проклят... Татуин! Это чудесное место... Ой, спойлер (с) Фил Колсон.


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 10 Sep 2010, 14:57
Сообщение #4

допустим, мяў
Сообщений: 24 129
Спасибо сказали: 13439 раз




13 чтоб рисовалось в окне героя. остальные - линейкой прокрутки.


--------------------
Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская)
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 10 Sep 2010, 14:58
Сообщение #5

laughed as one fey
Сообщений: 12 167
Спасибо сказали: 20605 раз




Цитата
вынести весь массив героев в отдельную dll

Проблема номер раз. Собственно, перенос. Ну, предположим, достаточно будет только перебить указатель.
Проблема номер два. Сейвы. Ну, положим, её тоже можно как-нить решить.
Проблема номер три. Собственно расширение структур. А вот это такооооооой головняк...
Go to the top of the pageAdd Nick
 
+Quote Post
Etoprostoya
сообщение 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 гну!
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 10 Sep 2010, 15:05
Сообщение #7

laughed as one fey
Сообщений: 12 167
Спасибо сказали: 20605 раз




Проверил. Обращений к 699538h (указателю на весь массив героев) - 2383 штуки. Не меньше половины их - со смещениями. Расширять в лоб - замаешься.


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 10 Sep 2010, 16:26
Сообщение #8

допустим, мяў
Сообщений: 24 129
Спасибо сказали: 13439 раз




А как расширять не в лоб?


--------------------
Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская)
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 10 Sep 2010, 16:30
Сообщение #9

laughed as one fey
Сообщений: 12 167
Спасибо сказали: 20605 раз




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

Цитата
А как расширять не в лоб?

Хз, думать надо. Скажем, хранить инфу где-то еще и изменять методы доступа к ней.
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 10 Sep 2010, 20:00
Сообщение #10

допустим, мяў
Сообщений: 24 129
Спасибо сказали: 13439 раз




Думаю, нужно составлять таблицу хуков, по типу как таблицу прерываний. Там хранятся ссылки на все структуры, а dll-ки не используют фиксированных адресов, а берут их из этой таблицы.


--------------------
Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская)


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Haart of the Aby...
сообщение 10 Sep 2010, 20:21
Сообщение #11

Рыцарь в лесу.
Сообщений: 4 469
Спасибо сказали: 6237 раз




Флагшток тебе в… Ну, скажем, в руки.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Etoprostoya
сообщение 10 Sep 2010, 20:27
Сообщение #12

Etoslozhnostatus
Сообщений: 8 676
Спасибо сказали: 16193 раза




Кто-то обещал не лезть в область программирования.


--------------------
- Да ну!?
- Horn of the Argali гну!


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 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)

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


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 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


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Axolotl
сообщение 03 Oct 2010, 09:49
Сообщение #15

I must gather my party before venturing forth
Сообщений: 5 129
Спасибо сказали: 17833 раза




Я тут пару дней зарегался, осваиваюсь. Понимаю, что это не совсем то, чего хочет автор темы. Но, пока еще не наступила утопия.
О резерве я тоже долго мечтал. В общем есть у меня, написанный мною скрипт - "Оруженосца", работает он так - любого героя можно прикрепить к другому герою "оруженосцем", а в окне героя "рыцаря" Ctrl-Clck'ом можно передавать существ оруженосцу и обратно. Формально, герой-оруженосец просто убивается с запретом появления в таверне.
Просто, я как-то случайно выяснил, что "мертвому" герою командами скритпа можно нормально передавать существ, и они не затираются....Также сделал так, что при смерти героя, оруженосец тоже теряет свое войско, и снимается запрет на появление в таверне. Также героя-рыцаря (уже имеющего оруженосца) в моем скрипте нельзя сделать оруженосцем.
Если нужно выложу.


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 03 Oct 2010, 20:51
Сообщение #16

допустим, мяў
Сообщений: 24 129
Спасибо сказали: 13439 раз




Ну, это очень интересный скрипт. Только, правда, совсем не то, о чём я говорил, но интересен с тактической точки зрения. Выложи этот скрипт (желательно создай тему в разделе Скрипты).


--------------------
Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская)
Go to the top of the pageAdd Nick
 
+Quote Post
Berserker
сообщение 03 Oct 2010, 22:58
Сообщение #17

Immortal
Сообщений: 1 468
Спасибо сказали: 1153 раза




Оригинальная идея.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 17 December 2025 - 22:32
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика