Current time: 25.11.2024, 04:54 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: #3481

XEPOMAHT, указанная функция никакого отношения к Эре не имеет. В буфере по результату её выполнения должна быть отформатированная строка. Похоже на легальный относительный путь. Вероятно, какой-то файл далее по коду не находится по данному относительному пути. С 2.8.0 изменился способ работы с путями на соответствующий оригинальному поведению ОС Windows. Ранее С Эры 2.0 пути вида «\File» обрабатывались как относительные геройской папки, а реально это путь от корня текущего диска. В коде выше проблемы не вижу. Возможно, она появляется далее по коду при формировании полного пути. Не смотрел журнал Эры со включённой трассировкой файловой системы?

helgtla, есть ещё какие-то функции для работы с музыкой, поскольку соглашусь, иногда бывают не ясные моменты в работе менеджера музыки.
Попробуйте следующее. При событии установите v5180 в 1. И сразу же вызывайте !!MP:P^трек^/0/1;
А в !?MP блокируйте любое изменение музыки вообще, если переменная равна 1.

!?какое-то событие
!!VRv5180:S0;
!!MP:P^трек^/0/1;
!!VRv5180:S1;

!?MP;
!!if&v5180=1:; смена композиций заблокирована
    !!MP:R0;
    !!FU:E;
!!en:;


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

Posts: 2356
Post: #3482

(27.09.2019 01:47)Berserker Wrote:  В буфере по результату её выполнения должна быть отформатированная строка. Похоже на легальный относительный путь.

И... значит эта команда не может отформатировать строку под новую версию ЭРА (я в Си ничего не понимаю, если что):

Code:
int artifact = atoi(ffd.cFileName);

???
27.09.2019 02:51
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #3483

XEPOMAHT, функция sprintf находится или в самой dll, или в msvcrt.dll, никакого отношения ни к одному проекту в мире она не имеет.

int artifact = atoi(ffd.cFileName);
Это интересная строка. Берётся строка с именем файла и вызывается преобразование её в целое число. ffd — видно структура LPWIN32_FIND_DATA. Используется в цикле FindFirstFileA - FindNextFileA - FindClose.

Загрузи, пожалуйста, пример нерабочего плагина и тестовый конфиг к нему из одного или нескольких файлов. Мне также важно знать, как ты определяешь, что файлы не загружены.


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

Posts: 2356
Post: #3484

(27.09.2019 02:59)Berserker Wrote:  Загрузи, пожалуйста, пример нерабочего плагина и тестовый конфиг к нему из одного или нескольких файлов. Мне также важно знать, как ты определяешь, что файлы не загружены.

Мод ERA+, внутри - феаноровский плагин emerald_v202a.era.

Проверка: в папке data/artifacts лежат конфиги артефактов, задающие им свойства. Например я даю герою артефакт №249 - посох колдуна (даёт все заклинания 4-го уровня). Сразу должны появиться заклы в книге с заклинаниями героя, в ERA 2.7.7 заклинания появляются (т.е. конфиг грузится и обрабатывается), а в ERA 2.8.X - уже нет.
27.09.2019 03:10
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #3485

AstralBagFix.bin
crexpfix.bin
dismiss last stack.bin
display primary skills over 99.bin
DwellingsSecurity.bin
emerald.bin
fix_erm_if_n1.bin
inferno gates teleports to any town.bin
Jeddite_Nagash.bin
kartograf 15000.bin
NewTerra.bin
no_underground_at_underground.bin
no secondary skills limit.bin
Straker.bin
transfer last stack.bin
view mage guild.bin

Данные патчи из EraPlugins перемести, пожалуйста, в EraPlugins\AfterWoG

Иначе они вообще не грузятся. Для чего emerald.bin?


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

Posts: 16657
Post: #3486

И всё работает после этого, проверил.

В 2.8.3 было исправление старого недокументированного поведения загрузки в неизвестное время bin-патчей из EraPlugins.
[-] Era does not apply *.bin patches from EraPlugins directory anymore. Patches from EraPlugins/BeforeWoG and EraPlugins/AfterWoG directories are still applied.

В документации говорилось только о двух папках: EraPlugins\OnAfterWoG и EraPlugins\OnBeforeWoG. Феанор использовал EraPlugins по старой традиции.


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

Posts: 2356
Post: #3487

(27.09.2019 03:22)Berserker Wrote:  Для чего emerald.bin?

Расширяет ветку артефактов, дающих заклинания. Порт из исходников MoP.
27.09.2019 03:28
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #3488

https://yadi.sk/i/0fOzXPKJythf3Q

XEPOMAHT, у меня арт дал все заклинания. Но сперва я поместил бинарные патчи в правильную подпапку.


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

Posts: 302
Post: #3489

Berserker указанный Вами способ не помогает. Всё так же при завершении композиции во время боя- только ALT+TAB для рестарта мелодии.


Карта-мод: STALKER
27.09.2019 03:30
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #3490

(27.09.2019 03:28)Berserker Wrote:  Но сперва я поместил бинарные патчи в правильную подпапку.

Поместил бинарники в папку AfterWoG - всё равно не работает и артефакт заклинания не даёт. А конфиги читаются - зря я грешил, прости. Не читаются бин-файлы, куда бы я их не помещал... 105
27.09.2019 03:43
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #3491

Хмм. У меня посох колдунов дал Армагеддон. Это поведение ведь не верное?

В файле D:\Heroes 3\Debug\Era\patch list.txt список всех применённых патчей. Нажми F11, чтобы он сгенерировался:
> Format: [Patch name] (Patch size)

acredit.bin (24)
ai sod radius.bin (21)
AstralBagFix.bin (14)
crexpfix.bin (606)
dismiss last stack.bin (54)
display primary skills over 99.bin (472)
dl buttons fix.bin (17)
DwellingsSecurity.bin (13)
emerald.bin (283)
enable next hero button.bin (17)
enable town info.bin (14)
fix erm ca b2 command.bin (15)
fix erm check syntax.bin (42)
fix erm ss a command.bin (13)
fix erm tr r roads.bin (15)
fix towers damage.bin (31)
fix wog exp screen.bin (112)
fix_erm_if_n1.bin (49)
inferno gates teleports to any town.bin (40)
Jeddite_Nagash.bin (28)
kartograf 15000.bin (24)
mp3 44khz patch.bin (24)
NewTerra.bin (561)
no erm he f redraw.bin (13)
no erm ow r redraw.bin (17)
no erm scripts turning off.bin (16)
no memory and hdd checks.bin (22)
no multiplayer notes.bin (17)
no secondary skills limit.bin (67)
no_underground_at_underground.bin (13)
remove black screens.bin (15)
remove exe protection.bin (109)
skeleton transformer fix.bin (22)
Straker.bin (39)
transfer last stack.bin (85)
view mage guild.bin (24)
zvslib.bin (324)

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


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

Posts: 16657
Post: #3492

XEPOMAHT, проверил пару байт патча emerald.bin — применён. Можешь указать, байты какого патча по-твоему перезаписаны? Думаю, дело в том, что МоР в патчах опирался на старый код ВоГа, где у функций были логирующие пролог и эпилог. Вместо них сейчас NOP-ы. MoP менял в таких местах адрес вызова функций, не прописывая начальный опкод CALL.

..конкретно в патче emerald.bin, который применяется, я проблем не вижу.
https://yadi.sk/i/mbx8gIxD3VWCpg

Может быть, всё-таки один из феаноровских плагинов тоже на воговские пролог/эпилог где был завязан. Точно не скажу. Артефакт добавляется, отображается, но даёт Армаггеддон.


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

Posts: 2356
Post: #3493

(27.09.2019 03:47)Berserker Wrote:  Хмм. У меня посох колдунов дал Армагеддон. Это поведение ведь не верное?

Нет, не правильное. Патч должен применяться ДО загрузки emerald_v202a.era. Т.е. в последней ERA он работает только из папки BeforeWoG. Уффф, разобрался с этим, теперь есть повод перезалить ERA PLUS под ERA 2.8.8 ещё раз. И ещё раз спасибо, Berserker 20
27.09.2019 04:00
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #3494

XEPOMAHT, понял! Отлично! )) Для этого и есть явное деление на BeforeWoG и AfterWoG.

Вот порядок загрузки плагинов и применения патчей:

Code:
:
  LoadPlugins('era');
  EventMan.GetInstance.Fire('OnBeforeWoG', NO_EVENT_DATA, 0);
  BinPatching.ApplyPatches(GameDir + '\' + PATCHES_PATH + '\BeforeWoG');
  
  InitWoG;
  EraInit;

  LoadPlugins('dll');
  EventMan.GetInstance.Fire('OnAfterWoG', NO_EVENT_DATA, 0);
  BinPatching.ApplyPatches(GameDir + '\' + PATCHES_PATH + '\AfterWoG');

Так как у плагина старое расширение dll, то грузится он после применения двоичных патчей из BeforeWoG и после загрузки других плагинов с расширением era. Как раз для совместимости.


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

Posts: 4343
Post: #3495

Странный баг:

На посланниках огня висит "защита от огня" 1000 раундов, но при этом они имеют иммунитет к магии огня. В описании - защищен от огня.
Это так задумано, или надо исправить?


Image: widget.png?style=banner2

Новейший Heroes Launcher
02.10.2019 11:57
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