27.10.2021, 21:08
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
27.10.2021, 21:41
Raistlin, this issue with RoE/AB campaign is resulted by Majaczek's Emerald 3. In the latest version of the plugin, this is fixed. However, another major problem of the plugin -> long AI turn if AI heroes own new artifacts (artifacts with ID greater than 170) has not been addressed yet.
Here's the latest plugin from the author
Here's the latest plugin from the author
28.10.2021, 08:26
Thank you, I didn't know that it has been fixed, but long AI turn is something, that the players don't like. However there is this issue in older versions of Emerald too. Hopefully, there are no other problems - I am very tired of using Emerald, maybe it will be easier to make a new plugin that will simply increase the limit of artifacts without any additional functions.
28.10.2021, 09:22
(28.10.2021 08:26)Raistlin Wrote: [ -> ]Thank you, I didn't know that it has been fixed, but long AI turn is something, that the players don't like.
На Emerald 2 проблем с долгим ходом ИИ мною замечено не было. Т.к. поведение ИИ данная старая версия плагина практически не меняет (ИИ под новые артефакты подстраивает уже Тифон 3, где на чистом ассемблере это дело работает довольно быстро). На Emerald 3 просто гигантсткое количество патчей и перехватов для реализации безлимитных сборных артефактов, что, мне кажется, и является первопричиной замедления работы ИИ, да и всей игры в целом (Emerald 2 не меняет воговский лимит на сборные артефакты, не меняет структуру сборных артефактов, поэтому печальным итогом применения Emerald 3 является частичная несовместимость с HD-модом, вообще Emerald 2 меняет ровно столько же, сколько изменено в WoG для поддержки новых артефактов + криво-косо добавляет пользовательские настройки из cfg), поэтому я не использую Emerald 3 в ERA+.
28.10.2021, 12:23
А есть где-то исходники второй версии Emerald? Тогда можно будет его пересобрать, перенеся предварительно таблицу запретов. Чистить третью версию от "лишнего" кода - это занятие бесполезное...
28.10.2021, 13:38
(28.10.2021 12:23)Raistlin Wrote: [ -> ]А есть где-то исходники второй версии Emerald?
Там же, на свалке



Code:
[ ][ ][ ] 32: (00401059 04 Patch 0000004149 - emerald), (00401059 04 Patch 0000004150 - emerald), (00401059 04 Patch 0000004151 - emerald), (00401059 04 Patch 0000004152 - emerald), (00401059 04 Patch 0000004153 - emerald), (00401059 04 Patch 0000004154 - emerald), (00401059 04 Patch 0000004155 - emerald), (00401059 04 Patch 0000004156 - emerald), (00401059 04 Patch 0000004157 - emerald), (00401059 04 Patch 0000004158 - emerald), (00401059 04 Patch 0000004162 - emerald), (00401059 04 Patch 0000004164 - emerald), (00401059 04 Patch 0000004165 - emerald), (00401059 04 Patch 0000004166 - emerald), (00401059 04 Patch 0000004167 - emerald), (00401059 04 Patch 0000004168 - emerald), (00401059 04 Patch 0000004169 - emerald), (00401059 04 Patch 0000004170 - emerald), (00401059 04 Patch 0000004171 - emerald), (00401059 04 Patch 0000004172 - emerald), (00401059 04 Patch 0000004173 - emerald), (00401059 04 Patch 0000004174 - emerald), (00401059 04 Patch 0000004175 - emerald), (00401059 04 Patch 0000004176 - emerald), (00401059 04 Patch 0000004177 - emerald), (00401059 04 Patch 0000004178 - emerald), (00401059 04 Patch 0000004179 - emerald), (00401059 04 Patch 0000004180 - emerald), (00401059 04 Patch 0000004181 - emerald), (00401059 04 Patch 0000004182 - emerald), (00401059 04 Patch 0000004183 - emerald), (00401059 04 Patch 0000004184 - emerald)
28.10.2021, 15:25
Spoiler (Click to View)
Code:
emerald->WriteLoHook(0x00745BC1, hook_00745BC1);
emerald->WriteHiHook(0x004D9DA0, SPLICE_, EXTENDED_, STDCALL_, Disassemble_ComboArt_004D9DA0);
emerald->WriteHiHook(0x004E6730, SPLICE_, EXTENDED_, THISCALL_, HasAnyBitSet_004E6730);
emerald->WriteHiHook(0x00706B7F, SPLICE_, EXTENDED_, STDCALL_, BuildUpNewComboArts_Hook);
emerald->WriteHiHook(0x00716FE5, SPLICE_, EXTENDED_, STDCALL_, BuildUpCombo_Hook);
Hook_Load_GameMap();
Hook_Art_Set_ComboArtBitmask();
Hook_BuildComboArtIfHasAllParts();
emerald->WriteLoHook(0x004DC310, z_SetComboSize_004DC310);
emerald->WriteLoHook(0x004DC635, z_SetComboSize_004DC635);
emerald->WriteLoHook(0x004DC68F, z_SetComboSize_004DC68F);
emerald->WriteLoHook(0x004DC6E3, z_SetComboSize_004DC6E3);
emerald->WriteLoHook(0x004DC742, z_SetComboSize_004DC742);
emerald->WriteLoHook(0x004DC79B, z_SetComboSize_004DC79B);
emerald->WriteLoHook(0x004DCDD5, z_SetComboSize_004DCDD5);
emerald->WriteLoHook(0x004DCE2F, z_SetComboSize_004DCE2F);
emerald->WriteLoHook(0x004DCE83, z_SetComboSize_004DCE83);
emerald->WriteLoHook(0x004DCEE2, z_SetComboSize_004DCEE2);
emerald->WriteLoHook(0x004DD558, z_004DD558);
emerald->WriteLoHook(0x004DCF3B, z_SetComboSize_004DCF3B);
emerald->WriteLoHook(0x004DDF77, z_SetComboSize_004DDF77);
emerald->WriteLoHook(0x004DDFF8, z_SetComboSize_004DDFF8);
emerald->WriteLoHook(0x004DE01E, z_004DE01E);
emerald->WriteLoHook(0x004DE035, z_004DE035);
emerald->WriteLoHook(0x004E27C3, z_004E27C3);
emerald->WriteLoHook(0x004E2930, z_004E2930);
emerald->WriteLoHook(0x004E294F, z_SetComboSize_004E294F);
emerald->WriteLoHook(0x004E29BA, z_004E29BA);
emerald->WriteLoHook(0x004E2D1B, z_SetComboSize_004E2D1B);
emerald->WriteLoHook(0x004E2E43, z_004E2E43);
emerald->WriteLoHook(0x004E2E8A, z_SetComboSize_004E2E8A);
emerald->WriteLoHook(0x004E32F8, z_004E32F8);
emerald->WriteLoHook(0x004E335C, z_SetComboSize_004E335C);
emerald->WriteLoHook(0x004E3385, z_004E3385);
emerald->WriteLoHook(0x004E3394, z_004E3394);
emerald->WriteLoHook(0x004E3988, z_SetComboSize_004E3988);
emerald->WriteLoHook(0x004E39CE, z_SetComboSize_004E39CE);
emerald->WriteLoHook(0x004E3A74, z_SetComboSize_004E3A74);
emerald->WriteLoHook(0x004E3AAD, z_SetComboSize_004E3AAD);
emerald->WriteLoHook(0x004E3AF0, z_SetComboSize_004E3AF0);
emerald->WriteLoHook(0x004E3B2D, z_SetComboSize_004E3B2D);
emerald->WriteLoHook(0x004E3CCE, z_SetComboSize_004E3CCE);
emerald->WriteLoHook(0x004E3D0E, z_SetComboSize_004E3D0E);
emerald->WriteLoHook(0x004E3D47, z_SetComboSize_004E3D47);
emerald->WriteLoHook(0x004E3D8B, z_SetComboSize_004E3D8B);
emerald->WriteLoHook(0x004E3DC9, z_SetComboSize_004E3DC9);
emerald->WriteLoHook(0x004E3F02, z_SetComboSize_004E3F02);
emerald->WriteLoHook(0x004E3FD0, z_SetComboSize_004E3FD0);
emerald->WriteLoHook(0x004E4011, z_SetComboSize_004E4011);
emerald->WriteLoHook(0x004E405D, z_SetComboSize_004E405D);
emerald->WriteLoHook(0x004E4160, z_SetComboSize_004E4160);
emerald->WriteLoHook(0x004E4249, z_SetComboSize_004E4249);
emerald->WriteLoHook(0x004E4284, z_SetComboSize_004E4284);
emerald->WriteLoHook(0x004E42BD, z_SetComboSize_004E42BD);
emerald->WriteLoHook(0x004E4378, z_SetComboSize_004E4378);
emerald->WriteLoHook(0x004E43B4, z_SetComboSize_004E43B4);
emerald->WriteLoHook(0x004E445F, z_SetComboSize_004E445F);
emerald->WriteLoHook(0x004E44A0, z_SetComboSize_004E44A0);
emerald->WriteLoHook(0x004E44ED, z_SetComboSize_004E44ED);
emerald->WriteLoHook(0x004E471F, z_SetComboSize_004E471F);
emerald->WriteLoHook(0x004E4760, z_SetComboSize_004E4760);
emerald->WriteLoHook(0x004E47AD, z_SetComboSize_004E47AD);
emerald->WriteLoHook(0x004E487B, z_SetComboSize_004E487B);
emerald->WriteLoHook(0x004E4909, z_SetComboSize_004E4909);
emerald->WriteLoHook(0x004E49DB, z_SetComboSize_004E49DB);
emerald->WriteLoHook(0x004E4A1C, z_SetComboSize_004E4A1C);
emerald->WriteLoHook(0x004E4A69, z_SetComboSize_004E4A69);
emerald->WriteLoHook(0x004E4CD1, z_SetComboSize_004E4CD1);
emerald->WriteLoHook(0x004E4DA4, z_SetComboSize_004E4DA4);
emerald->WriteLoHook(0x004E4F78, z_SetComboSize_004E4F78);
emerald->WriteLoHook(0x004E4FB6, z_SetComboSize_004E4FB6);
emerald->WriteLoHook(0x004E5055, z_SetComboSize_004E5055);
emerald->WriteLoHook(0x004E508F, z_SetComboSize_004E508F);
emerald->WriteLoHook(0x004E50D2, z_SetComboSize_004E50D2);
emerald->WriteLoHook(0x004E5112, z_SetComboSize_004E5112);
emerald->WriteLoHook(0x004E532E, z_SetComboSize_004E532E);
emerald->WriteLoHook(0x004E54FB, z_SetComboSize_004E54FB);
emerald->WriteLoHook(0x004E5A2A, z_SetComboSize_004E5A2A);
emerald->WriteLoHook(0x004E5A70, z_SetComboSize_004E5A70);
emerald->WriteLoHook(0x004E5ABD, z_SetComboSize_004E5ABD);
emerald->WriteLoHook(0x004E5B00, z_SetComboSize_004E5B00);
emerald->WriteLoHook(0x004E5D45, z_SetComboSize_004E5D45);
emerald->WriteLoHook(0x004E5D7F, z_SetComboSize_004E5D7F);
emerald->WriteLoHook(0x004E5DC0, z_SetComboSize_004E5DC0);
emerald->WriteLoHook(0x004E5E2E, z_SetComboSize_004E5E2E);
emerald->WriteLoHook(0x004E5E6A, z_SetComboSize_004E5E6A);
emerald->WriteLoHook(0x004E5EAD, z_SetComboSize_004E5EAD);
emerald->WriteLoHook(0x004E5F0D, z_SetComboSize_004E5F0D);
emerald->WriteLoHook(0x004E6425, z_SetComboSize_004E6425);
emerald->WriteLoHook(0x004E661C, z_SetComboSize_004E661C);
emerald->WriteLoHook(0x004E669F, z_SetComboSize_004E669F);
emerald->WriteLoHook(0x005F1D4D, z_SetComboSize_005F1D4D);
emerald->WriteLoHook(0x005F2D47, z_SetComboSize_005F2D47);
// ----------------------------------------------------------- //
/*
// 2021-05-17
emerald->WriteDword(0x0043246A + 1, allowed_combo_parts);
emerald->WriteDword(0x00432495 + 1, allowed_combo_parts);
emerald->WriteDword(0x00432471 + 1, (long)z_dword_00692E68);
emerald->WriteDword(0x0043249C + 1, (long)z_dword_00692E68);
emerald->WriteDword(0x004338DB + 2, (long)z_dword_00692E68);
emerald->WriteDword(0x00434129 + 2, (long)z_dword_00692E68);
emerald->WriteLoHook(0x00433943, z_SetComboSize_00433943);
emerald->WriteDword(0x00434123 + 2, (long) z_dword_00692E70 );
emerald->WriteDword(0x00434596 + 1, (long) z_dword_00692E70);
emerald->WriteDword(0x00433957 + 2, (long)z_dword_00693770);
emerald->WriteDword(0x004339B1 + 2, (long)z_dword_00693770);
emerald->WriteDword(0x004345E4 + 2, (long)z_dword_00693770);
// memcpy((void*) z_dword_00692E70, (int*) 0x00692E70, 144 * 16);
*/
// ----------------------------------------------------------- //
emerald->WriteLoHook(0x004D94A3, z_SetComboSize_004D94A3);
emerald->WriteLoHook(0x004D994C, z_SetComboSize_004D994C);
emerald->WriteLoHook(0x004D9F6C, z_SetComboSize_004D9F6C);
emerald->WriteLoHook(0x004DC0F3, z_004DC0F3);
emerald->WriteLoHook(0x004DC102, z_SetComboSize_004DC102);
emerald->WriteLoHook(0x004DC141, z_004DC141);
// ----------------------------------------------------------- //
emerald->WriteLoHook(0x004DC388, z_004DC388);
emerald->WriteLoHook(0x004DC44E, z_SetComboSize_004DC44E);
emerald->WriteLoHook(0x004DC477, z_004DC477);
emerald->WriteLoHook(0x004DC486, z_004DC486);
// ----------------------------------------------------------- //
29.10.2021, 15:42
Raistlin, You can use its source code in GitLab to be able to implement the features that are not integrated in emerald 2 so that you can make the most complete and optimal plugin possible 

29.10.2021, 15:44
V_Maiko, yeah, thank you for the advice! 

30.10.2021, 10:23
Чтобы работать с Эмеральдом никаких нервов не напосешься, так что я плюнул и остался при старой версии, отличающейся от версии Феанора только возможностью использовать конфиги. Вылет при открытии кампаний пофиксил сам - по адресу 0x4C21C9 нужно просто прописать 0xEB, и игра не будет вылетать. Конечно, таким образом я разрешил в кампаниях артефакты, которым там быть нельзя, но какая разница - воговская замена объектов все равно вносит в игру больше хаоса.
30.10.2021, 20:58
(30.10.2021 10:23)Raistlin Wrote: [ -> ]Чтобы работать с Эмеральдом никаких нервов не напосешься, так что я плюнул и остался при старой версии, отличающейся от версии Феанора только возможностью использовать конфиги.
Да, у Феанора там многие вещи реализованы криво, по сути, плагин необходимо полностью переписывать. Но это реально долго, например в ERA+ я тоже части функционала Эмералда, которые глючат, переписал в Тифон, но каждый год в Эмерелде выявляются вещи, приводящие к мелким и малозаметным ошибкам в игре, поэтому возможно лет через 5 весь код на новые артефакты будет уже частью Тифона, а Эмералд будет только... подгружать и обрабатывать конфиги (но и с этим у Эмералда тоже проблемы: например, использующийся кастыльный байткод на колдовство заклинаний от артефактов вводит в полный ступор дебаггер, из-за чего отладка игры с Эмералдом возможна только с выключенными конфигами, ну и по мелочи ещё наберётся...

(30.10.2021 10:23)Raistlin Wrote: [ -> ]Вылет при открытии кампаний пофиксил сам - по адресу 0x4C21C9 нужно просто прописать 0xEB, и игра не будет вылетать. Конечно, таким образом я разрешил в кампаниях артефакты, которым там быть нельзя, но какая разница - воговская замена объектов все равно вносит в игру больше хаоса.
Кастыли, т.к. возможности чтения и записи по "молочным" адресам это никак не отменяет. Повезёт, если там будут просто нули, а вот если код какой-нибудь dll, хуже системной, - можно заработать и синий экран смерти


01.11.2021, 11:58
Добрый день!
Недавно играл в WoG UE и обнаружил, что при клике мышкой на иконке Ведьмы отображается иконка Разбойника и наоборот.
Недавно играл в WoG UE и обнаружил, что при клике мышкой на иконке Ведьмы отображается иконка Разбойника и наоборот.
01.11.2021, 19:50
Protos, спасибо за информацию!
XEPOMAHT, получается, несмотря на то, что в игре больше ничего не вылетает, во избежание проблем лучше пропатчить и сам плагин?
XEPOMAHT, получается, несмотря на то, что в игре больше ничего не вылетает, во избежание проблем лучше пропатчить и сам плагин?
01.11.2021, 20:22
(01.11.2021 19:50)Raistlin Wrote: [ -> ]получается, несмотря на то, что в игре больше ничего не вылетает, во избежание проблем лучше пропатчить и сам плагин?
Либо не использовать таблицу запрета артефактов вообще (т.е. разрешать все независимо от настроек карты, т.е. как в RoE), либо ставить перехваты на все попытки игры что-нибудь записать или считать из таблицы запрета.
01.11.2021, 21:24
XEPOMAHT, вроде бы, больше эта таблица не используется - часть мест пропатчена в третьей версии Emerald, которую я использую, а последнее место пропатчил уже я сам.