Wake of Gods Forum | Форум Во Имя Богов

Full Version: ERA II
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Кстати, Berserker, ты в Эру не добавлял расчет AI_Value и Fight_Value командиров?
Если нет, то вот рабочий код:

Code:
// ===============================================================================
//                              добавление AIValue командира
// ===============================================================================

_int64_ getAIValue_NPC(int heroID){

    if ( heroID < 0 && heroID > 155 )
        return 0; // выход, если номер героя неправильный

    _Npc_* npc = GetNpc(heroID);                // структура командира
    if ( npc->on < 1 || npc->alive ) return 0;    // выход, если командиров нет (-1), уволен или мертв

    _Hero_* hero = o_GameMgr->GetHero(heroID);

    _int64_ value = 0;

    int attNPC = Get_NpcSkillPower(npc, 0);        
        attNPC += hero->attack;    

    int defNPC = Get_NpcSkillPower(npc, 1);        
        defNPC += hero->defence;

    int hpNPC = Get_NpcSkillPower(npc, 2);    
    int damageNPC = Get_NpcSkillPower(npc, 3);    
    int speedNPC = Get_NpcSkillPower(npc, 5);                                
    int isShoot = npc->specBon[0] & 0x10 ? 2 : 1;

    // формула: (атака * макс.урон * скорость * стреляет [1-нет / 2-да] + защита * здоровье ) / 2
    value = (_int64_)((attNPC * damageNPC * speedNPC * isShoot + defNPC * hpNPC) >> 2);
    return value;
}

bool check_AIValue_isNotHero = false;

_int64_ __stdcall get_AIValue_Hook(HiHook* hook, int army)
{
    _int64_ value;

    int armyNPC = army;

    value = CALL_1(_int64_, __thiscall, hook->GetDefaultFunc(), army);

    if (!check_AIValue_isNotHero) {
        int heroID = *(int*)(armyNPC -119);

        if ( heroID >= 0 && heroID < 156)
            value += getAIValue_NPC(heroID);

    }
    check_AIValue_isNotHero = false;
    return value;
}


int __stdcall get_AIValue_And_NPC_Error(LoHook* h, HookContext* c)
{
    check_AIValue_isNotHero = true;
    return EXEC_DEFAULT;
}

int __stdcall get_Fight_Value_Hook(LoHook* h, HookContext* c)
{
    _Hero_* hero = o_BattleMgr->hero[c->ebx];

    if (!hero) return EXEC_DEFAULT;

    c->ecx += getAIValue_NPC(hero->id);

    return EXEC_DEFAULT;
}

// ==========================================================================
// ==========================================================================

// исправление бага блока командира, когда защита падала из-за флага "в защите"
_PI->WriteCodePatch(0x76E7D7, "%n", 24); // 15 nop
_PI->WriteCodePatch(0x76E80B, "%n", 13); // 13 nop
_PI->WriteHexPatch(0x76E7D7, "8B4D 08 C601 01 C641 02 04");    

// добавляем расчет командиров в проверку Fight_Value
_PI->WriteLoHook(0x41EAD2, get_Fight_Value_Hook);

// продобавляем в расчет AI_Value и расчет командиров
_PI->WriteHiHook(0x44A950, SPLICE_, EXTENDED_, THISCALL_, get_AIValue_Hook);
// ставим лоухук, чтобы понять что идет расчет AI_Value без наличия героя
_PI->WriteLoHook(0x5C1867, get_AIValue_And_NPC_Error);
_PI->WriteLoHook(0x42758F, get_AIValue_And_NPC_Error);
_PI->WriteLoHook(0x42CA6B, get_AIValue_And_NPC_Error);
_PI->WriteLoHook(0x52846A, get_AIValue_And_NPC_Error);
(06.06.2018 15:23)Berserker Wrote: [ -> ]Heromant, так в HD+ нет ЕРМ/Луа/Плагинов и иной нагрузки в бою. Большинство скриптов считают по мануалу, что бои с ИИ только расчётные. Прикинь, проигрывание звуков и попытки проигрывания анимации в таком быстром бою. А то ещё и всплывающий диалог. В целом идею, конечно, понимаю, но она ведь неспроста отключена в HD+ для Вога?
Кто-то хочет играть в WoG/ERA только с баллансирующими настройками с небольшим четко ограниченным набором скриптов. Я прекрасно понимаю, что Бараторч включил "защиту от дураков". Но думаю, если тщательно проверить каждый активируемый ERM скрипт, касающийся боёвки, то нормально будет. Не будут работать нормально только те, в которых делается предположение, что если быстрый бой, то в нём одна из сторон обязательно человек. Таких, думаю, меньшинство, так как на человека есть одна проверка, а на быстрый бой другая. Может он нам даст версию хотя бы с обещанием нераспространения, где "защита дураков" будет отключенаSpiteful.
(04.06.2018 22:16)Berserker Wrote: [ -> ]Heromant, первое не планируется лично мной (может кто осилит плагин), второе — если не ошибаюсь, один из бинарных патчей в Фениксе как раз это и делает.

Vedmedkin, подскажите версию Эры и путь к игре, пожалуйста.

путь к игре F:\Games\Heroes 3 wog
А где смотреть версию Era II?
Здравствуйте, кто-нибудь знает где можно русификатор найти под Эровский вог ( В виде мода )? А то рабочих ссылок я найти не могу, стоит Эра 2.75. В титуле ссылка на русификатор дохлая.
SATCHEL, тремя постами выше у igrik'а в подписи ссылка Скачать HoMM3 ERA 2.7.4 (Repack: Rus & HD).
Скачай и возьми оттуда WoG Rus.
Algor, Уже )

И вот еще , вылазит такая фигня wog getbitmap816 could not be "bitmap8" resource "" . Ресурс не указан. Играю с модом на XXL карты, что это может быть?
Ни у кого нет скрипта Архитектор (автозастройка городов) для Era.
Bersy, we have tons of complaints in HC about latest Era versions, people can't just start it. Same people said 2.46 worked fine. personally I have no problems with 2.72 and uploaded full installed version, yet they can't fix it, still LUA missing messages. Maybe you have a few time and see if possible to get back to 2.46 installing configuration.
(26.06.2018 14:23)Valery Wrote: [ -> ]Maybe you have a few time and see if possible to get back to 2.46 installing configuration.
So why should not they just not install 2.46?
Installer ERA 2.46
Well, according to Berserker notes, saves from 246 will no longer be compatible with later versions and I already experienced that. I see no point having people submitting 246 saves for debug that we can't open. Aren't also some technical additions in latest, new events or so?
This can only be answered by Bersy.
Может кто то поможет таки решить проблему, которую не смог решить и гугл мне не помог. все было нормально, играл без проблем, а недавно стал получать это:

Assert violation in file (Дальше ссылка на несуществующую директорию) on line 489
Error at adress:
Message: "Failed to load angel.dll"

Причем герои HotA работают без проблем.

Версия ERA 2 2.7.5
(04.06.2018 22:16)Berserker Wrote: [ -> ]
Heromant Wrote:Второй вопрос:
Есть ли в ERA или каких-то скриптах к ней фикс повышения (вместо понижения) урона от башен, если есть втор. навык доспехи или закл. защита от стрельбы?
второе — если не ошибаюсь, один из бинарных патчей в Фениксе как раз это и делает.
Это в папке After WoG которые? Не нашел что-то.
Скачал версию 2.7.5, всё стало лучше работать, стабильнее и красивее, но я встретил новые для себя проблемы:

1) при разделении отрядов во время битвы, количество существ в изначальном стеке становится огромным (2637756). В старой версии Эры и ещё просто в ВоГе скрипт с разделением такую проблему не создавал.

2) мои оруженосцы не поднимаются ни заклинанием "оживление мертвецов", ни "воскрешением".

3) если командир был воскрешён в битве, то после битвы он всё равно считается мёртвым.

4) палатка первой помощи лечит/воскрешает без всякой анимации и звуков, я даже не сразу понял, что лечение вообще происходит.

Старый-престарый баг с ВоГ-сундуками по-прежнему существует: получаю и ресурсы и параметр, а не что-то одно.
Какие отличия era 2.7.5 от старой 2.4.3.
Никак не могу найти описание.Поиск тоже не дал результата.Если есть описание ткните носом.
Reference URL's