Current time: 22.04.2024, 14:37 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Решение багов ERA/WOG
» Примеры решения багов ERA/WOG на уровне кода.
Author Message
igrik Offline
Administrators

Posts: 2814
Post: #9

Решение бага Вога, когда в бою накладывается опыт через EA:E и атака, защита, уроны, скорость, боезапасы и т.п. заново пересчитываются.
Из-за этого теряются бонусы наложенных заклинаний (например бонус скорости от ускорения)

Сама функция пересчета параметров стека из исходников WoG:
0x726DE4 тут вызывается функция установки опыта в бою (и этот баг) через EA:E = CrExpBon::Apply(MonPos(Type)); (стр.4886)
int CrExpBon::Apply(Byte *Mon){ // настройка бонусов на поле боя один раз (стр 1495 crexpo.cpp)

Code:
int __stdcall ERM_Fix_EA_E(HiHook* hook, _BattleStack_* stack )
{
    int ret = 0;
    _int32_ spell_duration[81]; // для сохранения длительности заклинаний
    _int32_ spells_power[81];   // для сохранения силы действия заклинания

    if (stack) {
        for (int i=0; i<80; i++) {
            spell_duration[i] = stack->active_spell_duration[i];
            spells_power[i] = stack->active_spells_power[i];

            if (spell_duration[i] > 0 ) // если заклинание наложено на стек, то сбрасываем его эффект
                CALL_2(int, __thiscall, 0x444230, stack, i); // ResetSpellFromStack 0x444230
        }
    }

    ret = CALL_1(int, __cdecl, hook->GetDefaultFunc(), stack);

    for (int i=0; i<80; i++) {
        if (spell_duration[i] > 0) { // если заклинание ранее было наложено, то восстанавливаем его
            CALL_5(int, __thiscall, 0x444610, stack, i, spell_duration[i], spells_power[i], 0); // ApplySpell 0x444610
        }
    }

    return ret;
}
/////////////////////////////////////////////////////////////
_PI->WriteHiHook(0x726DE4, CALL_, EXTENDED_, CDECL_, ERM_Fix_EA_E);
01.02.2019 15:40
Visit this user's website Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Messages In This Thread
Решение багов ERA/WOG - igrik - 21.09.2011, 22:09
RE: Решение багов ERA/WOG - igrik - 11.10.2020, 19:37
RE: Решение багов ERA/WOG - slater777 - 08.01.2023, 06:37
RE: Решение багов ERA/WOG - daemon_n - 08.01.2023, 08:22
RE: Решение багов ERA/WOG - slater777 - 08.01.2023, 09:57
Решение багов ERA/WOG - Sav - 06.07.2012, 18:55
RE: ERA II - Sav - 11.07.2012, 20:36
RE: ERA II - MOP - 20.09.2012, 21:27
RE: ERA II - MOP - 28.09.2012, 07:27
RE: ERA II - Sav - 14.04.2013, 20:33
RE: ERA Scripts 1.15 Rus - gamecreator - 07.04.2015, 02:19
RE: Тема модераторов - gamecreator - 31.05.2016, 02:48
Решение багов ERA/WOG - igrik - 01.02.2019 15:40
RE: Решение багов ERA/WOG - igrik - 01.02.2019, 17:21
RE: Решение багов ERA/WOG - igrik - 01.02.2019, 17:27
RE: Решение багов ERA/WOG - igrik - 01.02.2019, 17:40
RE: Решение багов ERA/WOG - igrik - 03.09.2019, 11:56

Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group