Current time: 29.11.2024, 01:31 Hello There, Guest! (LoginRegister)
Language: english | russian  

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

Posts: 2819
Post: #14

Решение нескольких крит.вылетов в игре в режиме битвы
Code:
// фикс вылета: АИ битва (просчёт)
// проверка на скорость монстра и когда он дойдет до защиты стрелка.
// Убираем из проверки существ с нулевой скоростью и боевые машины
_int_ __stdcall Y_AIMgr_Stack_MinRoundToReachHex(HiHook* hook, _dword_ this_, _BattleStack_* stack, _int_ a3)
{
    if (stack->creature.flags == BCF_CANT_MOVE || stack->creature.speed < 1)
        return 99; // 99 раундов необходимо, чтобы добраться до стрелка

    return CALL_3(_int_, __thiscall, hook->GetDefaultFunc(), this_, stack, a3);
}

_PI->WriteHiHook(0x4B3C80, SPLICE_, EXTENDED_, THISCALL_, Y_AIMgr_Stack_MinRoundToReachHex);

Code:
// фикс вылета: нет проверки на наличие стуктуры целевого стека при воскрешении
// тут не хватает проверки на c->edi
int __stdcall Y_FixCrash_CastSpell_38(LoHook* h, HookContext* c)
{
    if ( c->edi )
    {
       c->eax = *(int*)(c->edi + 0x38);
       c->ecx = *(int*)(c->ebx + 0x132C0);
       c->return_address = 0x5A1C20;
      
    }  else c->return_address = 0x5A2368;

    return NO_EXEC_DEFAULT;
}

_PI->WriteLoHook(0x5A1C17, Y_FixCrash_CastSpell_38);

Code:
// фикс вылета: при удалении препятствия в битве нет проверки на наличие стуктуры его дефа
// (привет WoG и его стена огня у Огненных Лошадей)
int __stdcall Y_FixCrash_RemoveObstackle(LoHook* h, HookContext* c)
{
    // проверяем на пустую структуру боевого пропятствия
    // чтобы пропустить код обращения к ней и как следствие крит.краш.игры
    if ( !c->ecx || !c->edi )
    {
       c->return_address = 0x466826;
       return NO_EXEC_DEFAULT;  
    }

    return EXEC_DEFAULT;
}

_PI->WriteLoHook(0x46681B, Y_FixCrash_RemoveObstackle);
11.10.2020 19:37
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