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

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

Posts: 16657
Post: #3016

А ещё выше вызывает HD. Полагаю, возможную ошибку стоит искать там. Понятия не имею, почему с другой Эрой по-другому. Хак?


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

Posts: 16657
Post: #3017

Событие !?OB54/-1 срабатывает дважды, если атаковать с места! Именно второй раз криво.


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

Posts: 16657
Post: #3018

Если атаковать с клавиатуры, то вызывается другая функция с верными координатами. Только если мышкой и сблизи, то 408049 (здесь) уже неверные координаты.

Но то, что триггер !?BA54/-1 срабатывает дважды при атаке сблизи, это явно большая проблема. Может быть кто проверит на 2.46? Поставьте монстров в столбец. Нападение на первого — одно сообщение. С места на второго — два.

!?OB54/-1;
!!IF:M^^;


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

Posts: 2819
Post: #3019

(08.09.2018 22:56)Berserker Wrote:  Если атаковать с клавиатуры, то вызывается другая функция с верными координатами. Только если мышкой и сблизи, то 408049 (здесь) уже неверные координаты.

Но то, что триггер !?BA54/-1 срабатывает дважды при атаке сблизи, это явно большая проблема. Может быть кто проверит на 2.46? Поставьте монстров в столбец. Нападение на первого — одно сообщение. С места на второго — два.

!?OB54/-1;
!!IF:M^^;
Я только что проверил. На 2.46 событие !?OB54/-1; вызывается дважды (при клике вплотную). Но Z координата в норме и равна нулю на поверхности.

Обе версии у меня настроены идентично, но поведение z координаты разное. Хотя одинаковые настройки HD (4.208) на обеих версиях эры (2.46 и 2.75). На обоих полностью удалены все скрипты и отключены почти все плагины. Из модов только WoG. Русификация и все остальные моды отключены

Я пытаюсь объяснить, что версии Эры тупо идентичные, но поведение - разное.


game bug fixes extended.dll || My Plugins || My GitHub
09.09.2018 00:33
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #3020

igrik, это-то понятно. Но если код HD хоть сколько-нибудь завязан на версию Эры или наличие/отсутствие каких-то байтов по какому-либо адресу, то уже появляются нюансы. Ведь без него обе версии ТОЖЕ работают корректно. Отлаживать HD, когда прыжок из создаваемого в памяти запутанного кода с вложенной неясной логикой — то ещё занятие. Что ещё поменялось? Версия патчера со многими исправлениями. Проверял на новой?


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

Posts: 4343
Post: #3021

Живые свитки ( опция 33) - если заклинание массового поражения( Метеор, инферно, цепная молния-- тестил конкретно с этим заклом -- и тп), вызванное свитком, убивает всех, то игра зависает. Краша нет, просто курсор вращается, а картинка с исходом боя не появляется . Без hd мода комп начинает тормозить )). прикладываю сейвы -- мало ли. И картинку Image: 1qBuqEDQ2JzuQNKVMPusXlwYxeIRsvqTFAiWcspo...=2048x2048
09.09.2018 18:32
Visit this user's website Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #3022

Насчет Ящиков Пандоры. Если отказаться от их взятия, то они пропадают. Также, по моим предположениям, если стоит запрет на магию, которая должна быть в коробке, то вся коробка будет пустой. Прикладываю Сейв(ЯД)
09.09.2018 18:50
Visit this user's website Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #3023

В игре не отображается таймер, если поставить ограничение по времени на ход. Сам таймер тикает)
09.09.2018 20:36
Visit this user's website Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #3024

Сложные битвы ( опция 041) не изменяет параметров оборотней. Играю с "принадлежностью нейтралов"
09.09.2018 22:31
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #3025

Игрик, вопрос разобрал, над исправлением работаю. Вог полагается на параметр MixedPos, который по факту берётся из координат героя, упакованных так, что зачастую уровень всегда подземелье (видимо, для героя не существенно). В другом месте Вог делает верно, получая координаты вручную из посещаемого объекта. Я сделаю так, чтобы они всегда брались из посещаемого объекта. Уже проверил быстрое исправление.


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

Posts: 16657
Post: #3026

Удалось исправить баг с двойной генерацией триггера !?OB54. Теперь всегда одинарная.
Тестируем


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

Posts: 2819
Post: #3027

Шикарно. А я вот только тестировал, найдя 3 функции в HD, которые как я думаю способствуют геренации бага.
Но твоё решение куда лучше!

UPD: да работает! Я еще погоняю сегодня на работоспособность. Но работает же))


game bug fixes extended.dll || My Plugins || My GitHub
10.09.2018 03:23
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #3028

Обновил
Исключаем баги теперь и при атаке с ходу.

igrik, спасибо Ab HD тоже не безгрешен, а потому да, безопаснее просто не использовать «грязное» значение )

Code:
function Hook_ZvsEnter2Monster (Context: Core.PHookContext): LONGBOOL; stdcall;
const
  ARG_MAP_ITEM  = 8;
  ARG_MIXED_POS = 16;

var
  x, y, z:  integer;
  MixedPos: integer;
  MapItem:  pointer;

begin
  MapItem  := ppointer(Context.EBP + ARG_MAP_ITEM)^;
  MapItemToCoords(MapItem, x, y, z);
  MixedPos := CoordsToMixedPos(x, y, z);
  pinteger(Context.EBP + ARG_MIXED_POS)^ := MixedPos;

  Context.RetAddr := Ptr($7577B2);
  result          := not Core.EXEC_DEF_CODE;
end; // .function Hook_ZvsEnter2Monster

function Hook_ZvsEnter2Monster2 (Context: Core.PHookContext): LONGBOOL; stdcall;
const
  ARG_MAP_ITEM  = 8;
  ARG_MIXED_POS = 16;

var
  x, y, z:  integer;
  MixedPos: integer;
  MapItem:  pointer;

begin
  MapItem  := ppointer(Context.EBP + ARG_MAP_ITEM)^;
  MapItemToCoords(MapItem, x, y, z);
  MixedPos := CoordsToMixedPos(x, y, z);
  pinteger(Context.EBP + ARG_MIXED_POS)^ := MixedPos;

  Context.RetAddr := Ptr($757A87);
  result          := not Core.EXEC_DEF_CODE;
end; // .function Hook_ZvsEnter2Monster2

function Hook_ZvsEnter2Object (Hook: PatchApi.THiHook; Ecx, Edx, Hero: pointer; MapItem: pointer; MixedPos: integer; IsAI: integer): integer; stdcall;
const
  MAP_ITEM_TYPE_OFFSET = $1E;
  OBJ_MON              = 54;

begin
  if pword(Utils.PtrOfs(MapItem, MAP_ITEM_TYPE_OFFSET))^ <> OBJ_MON then begin
    result := PatchApi.Call(PatchApi.FASTCALL_, Hook.GetOriginalFunc(), [Ecx, Edx, Hero, MapItem, MixedPos, IsAi]);
  end else begin
    result := PatchApi.Call(PatchApi.FASTCALL_, Ptr($4A8160), [Ecx, Edx, Hero, MapItem, MixedPos, IsAi]);
  end;
end; // .function Hook_ZvsEnter2Object

(* Fix WoG bug: do not rely on MixedPos argument for Enter2Monster(2), get coords from map object instead *)
Core.Hook(@Hook_ZvsEnter2Monster,  Core.HOOKTYPE_BRIDGE, 19, Ptr($75779F));
Core.Hook(@Hook_ZvsEnter2Monster2, Core.HOOKTYPE_BRIDGE, 19, Ptr($757A74));

(* Fix WoG bug: double !?OB54 event generation when attacking without moving due to Enter2Object + Enter2Monster2 calling *)
Core.p.WriteHiHook(Ptr($705979), PatchApi.SPLICE_, PatchApi.EXTENDED_, PatchApi.FASTCALL_, @Hook_ZvsEnter2Object);


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

Posts: 16657
Post: #3029

Ещё раз спасибо Вам всем, парни! 177


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

Posts: 2819
Post: #3030

И тебе спасибо большое!


game bug fixes extended.dll || My Plugins || My GitHub
10.09.2018 03:42
Visit this user's website 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