Current time: 11.04.2024, 13:24 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
ERA II
» WoG Era 2: Русская и Английская версии
Author Message
feanor Offline

Posts: 622
Post: #151

Тут проблема в чем. Хота выходит неведомо когда, стандарты на неё неведомы (да и менялись радикально уже минимум два раза, с каждым новым кодером, угу) и равняться на неё глупо - делать дело надо сейчас. Это раз.

Два - действительно крупные моды будут несовместимы между собой всегда. Особенно из-за текущей ситуации с моддингом героев. Нет, если кому-то будет не лень сделать большой и толстый MDK - можно будет и задуматься о совместимости хотя бы половины модов - но это фентези.

Quote:2. У Хоты будет 100% совместимость с Эрой - править экзешник мы не будем. Уж если что - попросим поправить Эру
Кажется, имеется некоторое непонимание. Если плагин yet_another_gemstone_name.dll совместим с Эрой, плагин yet_another_metal_song_name.dll совместим с Эрой и плагин hota.dll совместим с Эрой - это совершенно не значит, что они будут совместимы друг с другом.

Quote:3. Что такое Эра? Хуки на экзешник, позволяющие расширять его функции. Сомневаешься, что под 3.59 будет приспособлена новая версия Эры?
Я уверен, что все мало-мальски крупные плагины под ней просто не пойдут.
(This post was last modified: 18.07.2011 23:52 by feanor.)
18.07.2011 23:45
Find all posts by this user Quote this message in a reply
etoprostoya Offline

Posts: 1809
Post: #152

Хук на хук не приходится. Если ХотА строится на Эре, то это значит, что она будет полна хуков и плагины, использующие те же хуки не будут с ней совместимы. Новые герои - хуки на геройские массивы и функции - несовместимость с геройскими классами феанора, новые двеллы - несовместимость с новыми двеллингами МоПа, новые монстры - несовместимость с феаноровским (или дьяконовским чистым) плагином. И т.д.
Надеюсь, я правильно понимаю?
19.07.2011 00:01
Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 622
Post: #153

Угу. К примеру, в длл из альфы даже банальное получение указателя на другую структуру героя ([699538] + 21620 + 492*n) не работает.
Перенесли массив структур - все, альфа ТоЕ курит, прототип Форджа курит, не исключено, что курят MoP и НD-мод.
19.07.2011 00:32
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16467
Post: #154

Quote:Да какая совместимость? Кодовая? Не было её и не будет никогда.
Если бы соблюдалась модульная структура нововведений и сам исполняемый файл бы практически не менялся (ТЕ), то совместимость бы была, но если уже проделан большой объём работы, то естественно, смысла нет критиковать решение. Эра 1.9 будет полностью открыта в плане исходников. Так уж получилось, что то, что ты правил, всё ещё на Virtual Pascal, так что повторные правки под твой вкус труда не составят. А новый функционал через вторую библиотеку. Поэтому единственная проблема - это пути.

Quote:Видите, я даже не боюсь утечек
А чего боятся утечек, если наоброт решённые проблемы помогли бы другим людям не изобретать велосипед? Не все могут позволить себе пару лет посвятить игре.

Quote:Есть разве что предчувствие недовольства людей, уже привыкших к HD-моду.
Да, HD это действительно для многих уже становится стандартом, но что говорить, в хороший мод и на 800х600 будут играть.

Quote:Просто идея
Бараторч верно ниже отписался. В двух словах - экономия на спичках. Но если вдруг интересует, то в первых версиях dll для Феникса (это даже не Эра 1.0) я был поглощён наноассемблером (http://mrhx.clan.su/publ/1-1-0-3). Там ровно то, что тебе нужно.

baratorch, у меня тоже в похожем стиле:
Code:
FUNCTION Hook_LoadLods (Context: Core.PHookHandlerArgs): LONGBOOL; STDCALL;
CONST
  H3BITMAP_LOD  = 'h3bitmap.lod';
  H3SPRITE_LOD  = 'h3sprite.lod';
  H3BITMAP_IND  = 0;
  H3SPRITE_IND  = 1;
  BASE_LOD_IND  = 2;

VAR
{O} Locator:  Files.TFileLocator;
{O} FileInfo: Files.TFileItemInfo;
    FileName: STRING;
    LodInd:   INTEGER;
    i:        INTEGER;
  
BEGIN
  Locator   :=  Files.TFileLocator.Create;
  FileInfo  :=  NIL;
  // * * * * * //
  Locator.DirPath :=  'Data';
  Locator.InitSearch('*.*');
  WHILE Locator.NotEnd DO BEGIN
    FileName  :=  Locator.GetNextItem(CFiles.TItemInfo(FileInfo));
    IF
      (SysUtils.AnsiLowerCase(SysUtils.ExtractFileExt(FileName)) = '.lod')  AND
      (((FileInfo.Data.dwFileAttributes) AND Windows.FILE_ATTRIBUTE_DIRECTORY) = 0)
    THEN BEGIN
      LodList.Add(FileName);
    END; // .IF
    SysUtils.FreeAndNil(FileInfo);    
  END; // .WHILE
  Locator.FinitSearch;
  Heroes.LoadLod(H3BITMAP_LOD, @ZvsLodTable[H3BITMAP_IND]);
  Heroes.LoadLod(H3SPRITE_LOD, @ZvsLodTable[H3SPRITE_IND]);
  IF LodList.Find(H3BITMAP_LOD, LodInd) THEN BEGIN
    LodList.Delete(LodInd);
  END; // .IF
  IF LodList.Find(H3SPRITE_LOD, LodInd) THEN BEGIN
    LodList.Delete(LodInd);
  END; // .IF
  LodInd  :=  BASE_LOD_IND;
  FOR i:=0 TO Math.Min(LodList.Count - 1, HIGH(TLodTable) - BASE_LOD_IND) DO BEGIN
    ZvsAddLodToList(LodInd);
    Heroes.LoadLod(LodList[i], @ZvsLodTable[LodInd]);
    INC(LodInd);
  END; // .FOR
  Context.RetAddr :=  Ptr($559408);
  RESULT          :=  NOT Core.EXEC_DEF_CODE;
  // * * * * * //
  SysUtils.FreeAndNil(Locator);
END; // .FUNCTION Hook_LoadLods

Феанор, этопростоя. Если два разных модуля или направления реализуют одно и то же, то исключается наименьший по функционалу. Если структуру героев расширил один плагин, то второй не нужен. Лично я пишу в расчёте на классические моды, а уже потенциальный пользователь плагинов (как тот же Феникс) отбирает для себя набор нужных и совместимых.

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


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
19.07.2011 00:44
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16467
Post: #155

Сделал команды Эры локальными, так чтобы можно было вызвать команду, которая вызовет команду, которая вызовет команду...
Добавил поддержку строковых констант в командах:
Code:
!!SN:L^angel.dll^/?v2 Av2/^ResetEra^/?v3 Ev3/0;
Работаю над M-командами для дополнительной памяти.
Ещё узнал пренеприятнейшие известия и пошёл искать артефакт дух уныния до вечера.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
19.07.2011 21:00
Find all posts by this user Quote this message in a reply
Allah Offline

Posts: 1
Post: #156

CRACK! RETAIL! FULL! FREE!
Era 1.9 alpha. CRACKED BY ALLAH
21.07.2011 20:58
Find all posts by this user Quote this message in a reply
Zenofex Offline

Posts: 133
Post: #157

Отличная шутка, Берс.
22.07.2011 00:48
Find all posts by this user Quote this message in a reply
MOP Offline
Moderators

Posts: 1467
Post: #158

Не знаю, что вы тут, ребята, обсуждаете, но это был не я.Gigi
(18.07.2011 21:45)baratorch Wrote:  )) какая же это утечка, что мы с этим ехе будем делать?) что с ним вообще можно сделать?)
Посмотреть реализацию некоторых вещей, о которых я трепался у себя на форуме. Скажем, если я сказал, что номер Воздушного Шара такой-то, можно тупо пошарить по экзешнику в поиске такого dwordа и найти интересности. Gigi
(18.07.2011 21:45)baratorch Wrote:  на самом деле в этом нет ничего хорошего. Ты конечно монстровый реверсер и ассемблерщик, но ведь такой код очень сложно отлаживать и менять в будущем.
Я запиливаю только то, что не вызывает у меня сомнений относительно будущей правки. То, что может потом исчезнуть - в длл, бинарниках для памяти или ещё как-нибудь.
(18.07.2011 21:45)baratorch Wrote:  В своей платформе ХД 3 я готовлю практически полное отсутствие асма в коде непосредственных изменений и дополнений игры
Я знаю только асм, так что ничего не могу сказать.
Я не люблю длл-ки. Делал их, а всё равно не люблю. Не люблю, когда функцию нужно вызывать относительно (пара лишних байт, ага). Не люблю, когда код висит хрен знает где и чтобы добраться до функции, вложенной в кучу других, и посмотреть, верно ли скомпилирован код, нужно каждый раз лазить через всё, во что вложено. Код их выглядит ужасно. Гарантии стабильности тоже нет.
(18.07.2011 21:45)baratorch Wrote:  зачем, если
Quote:Жёсткие диски теперь вмещают терабайты.
Диски-то вмещают. А вот у меня интернет платный и дыра в бюджете. Даже сигареты не на свои деньги курю.
Сказали бы просто - сложно реализовать. Я и сам так думал.

hippocamus Wrote:Если у тебя ест ьсовместимость - играем в Моп с 10 городами, иначе - с 9-ю.
Новый город - это попса. А я митол люблю.
Я вообще думаю, что всего один новый артефакт - лучше, чем сотня городов. Новый город - дорогая по всем параметрам безделушка, делаемая людьми чисто из желания похвастаться, что они смогли это сделать.
Berserker Wrote:Так уж получилось, что то, что ты правил, всё ещё на Virtual Pascal, так что повторные правки под твой вкус труда не составят.
Если желаешь помочь, то мог бы дать в личку исходники, компилятор и, ещё лучше, список хуков. Если проблематично - ничего, не обижусь. С горем пополам могу и в готовой длл поменять адреса хуков. Такая я проныра. Gigi


Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
22.07.2011 05:03
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16467
Post: #159

Quote:Если желаешь помочь, то мог бы дать в личку исходники, компилятор и, ещё лучше, список хуков. Если проблематично - ничего, не обижусь. С горем пополам могу и в готовой длл поменять адреса хуков. Такая я проныра.
Нефинальные исходники могу кинуть. Те, что для делфи, потребуют скачать компилятор в 40 МБ (Free Pascal). Или подождать сперва финальную версию?

P.S Исправил баг ЕРМ команды CA:B3.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
22.07.2011 05:11
Find all posts by this user Quote this message in a reply
MOP Offline
Moderators

Posts: 1467
Post: #160

Подожду.
Можно тогда только список хуков с указанием типа (call, jump). Пропатчу прямо длл.
40 мегов для меня многовато.


Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
22.07.2011 05:13
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16467
Post: #161

Добавился новый тип автоматически генерируемого переходника (Bridge). Все хуки найти легко, ибо они через экспортируемую функцию Hook. В отладчике Era.Hook. В общем я в релиз включу и исходники, и бинарники.

Да, собираюсь также глянуть DL:E и сделать всем нормальный ввод. Есть намётки? (ещё не смотрел).


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
22.07.2011 15:14
Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 622
Post: #162

Очередные две хотелки.

Можно событие, аналогичное запуску инструкций (!#) ?
Для автоматического перегона ERM-скриптов в длл-ки

И событие на запуск функции с определенным номером?
Ну тут чисто понты, шоб можно было к дллкам не через !!SN:LAE обращаться, а через !!FU:P
22.07.2011 17:20
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16467
Post: #163

Я не советую вообще использовать инструкции. Есть нормальный триггер после них: !?PI, а в Эре только его и использую. А инструкции это недоделанный пережиток прошлого прямо во время анализа ЕРМ кода. Б-р-р-р...

Quote:И событие на запуск функции с определенным номером?
"OnErmFunction X" и так работает Sm, глянь Triggers.txt

Добил команду K (получение длины строки, копирование памяти, установка получение отдельных символов строки), убрал старый триггер на встречу героев, заменив двумя новыми. Посмотрел немного DL:E. Бараторч по ходу и так сделал русский язык, а дальше копать уже неохота. Пора закругляться, перечитывать код и готовить руководство.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
22.07.2011 19:10
Find all posts by this user Quote this message in a reply
MOP Offline
Moderators

Posts: 1467
Post: #164

Самые древние команды ERM - самые неоптимизированные. И среди них, наверное, самая важная - !!HE. Не слишком изучал, но, по-моему, там чем дальше буква к концу алфавита - тем тормознее ресейвер. Просто команда не собрана, как поздние, в свитч. Цикл получения/изменения всех специализаций (маленький, героев ведь всего 156) очень тормозит. Требуется либо оптимизация (тогда выгирают и старые скрипты), либо новая реализация.


Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
24.07.2011 13:13
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16467
Post: #165

Не выходит открыть диалог встречи героев в городе. После него всё падает.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
24.07.2011 19:12
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group