Jump to content

Crash core in dungeon MeleyLair


Recommended Posts

Hello, I have a crash in the Meley dungeon, this happens every so often suddenly.

I have searched the forums and have not found a solution, what could be wrong?

 

* thread #1, name = 'game', stop reason = signal SIGSEGV
  * frame #0: 0x0826f181 game`__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned int, std::allocator<unsigned int> > > std::__find_if<__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned int, std::allocator<unsigned int> > >, __gnu_cxx::__ops::_Iter_equals_val<unsigned int const> >(__first=__normal_iterator<unsigned int*, std::vector<unsigned int, std::allocator<unsigned int> > > @ 0xffff9550, __last=__normal_iterator<unsigned int*, std::vector<unsigned int, std::allocator<unsigned int> > > @ 0xffff9554, __pred=_Iter_equals_val<unsigned int const> @ edi, (null)=random_access_iterator_tag @ 0xffff955c) at stl_algo.h:120
    frame #1: 0x0826e882 game`MeleyLair::CMgrMap::StartDungeon(CHARACTER*) [inlined] __find_if<__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned int> >, __gnu_cxx::__ops::_Iter_equals_val<unsigned int const> >(__pred=<unavailable>, __last=<unavailable>, __first=<unavailable>) at stl_algo.h:162
    frame #2: 0x0826e878 game`MeleyLair::CMgrMap::StartDungeon(CHARACTER*) [inlined] find<__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned int> >, unsigned int>(__val=0xffff957c, __last=<unavailable>, __first=<unavailable>) at stl_algo.h:3780
    frame #3: 0x0826e878 game`MeleyLair::CMgrMap::StartDungeon(CHARACTER*) at MeleyLair.cpp:417
    frame #4: 0x0826e862 game`MeleyLair::CMgrMap::StartDungeon(this=0x083f7b80, pkChar=0x5748a9c0) at MeleyLair.cpp:583
    frame #5: 0x0826f644 game`quest::MeleyLair_StartDungeon(L=0x431b1600) at questlua_MeleyLair.cpp:143
    frame #6: 0x083c47aa game`luaD_precall(L=0x431b1600, func=0x5221cf24) at ldo.c:260
    frame #7: 0x083cc576 game`luaV_execute(L=0x431b1600) at lvm.c:627
    frame #8: 0x083c4a9d game`resume(L=0x431b1600, ud=0xffff9b24) at ldo.c:344
    frame #9: 0x083c442b game`luaD_rawrunprotected(L=0x431b1600, f=(game`resume at ldo.c:320), ud=0xffff9b24) at ldo.c:88
    frame #10: 0x083c45cb game`lua_resume(L=0x431b1600, nargs=1) at ldo.c:371
    frame #11: 0x081b1ef8 game`quest::CQuestManager::RunState(this=0xffffad18, qs=0x2c1c2f34) at questlua.cpp:816
    frame #12: 0x081e5b3d game`quest::CQuestManager::Select(this=0xffffad18, pc=895, selection=0) at questmanager.cpp:294
    frame #13: 0x0817028b game`CInputMain::Analyze(DESC*, unsigned char, char const*) at input_main.cpp:2129
    frame #14: 0x08170250 game`CInputMain::Analyze(this=0x3d2654a0, d=0x3d265400, bHeader='\x1d', c_pData="\x1d") at input_main.cpp:3603
    frame #15: 0x0815ac3b game`CInputProcessor::Process(this=0x3d2654a0, lpDesc=0x3d265400, c_pvOrig=<unavailable>, r_iBytesProceed=0xffffa19c, iBytes=<unavailable>) at input.cpp:101
    frame #16: 0x0812675e game`DESC::ProcessInput(this=0x3d265400) at desc.cpp:333
    frame #17: 0x0828736a game`io_loop(fdw=0x28f26700) at main.cpp:1003
    frame #18: 0x0828758c game`idle() at main.cpp:885
    frame #19: 0x08054ed5 game`main(argc=1, argv=0xffffdc50) at main.cpp:541
    frame #20: 0x0805592a game`_start1 + 138
    frame #21: 0x08055898 game`_start + 24
 

IsPartecipant: 

Spoiler

bool CMgrMap::IsPartecipant(DWORD dwPlayerID)     
    {
        if (!dwPlayerID)             
            return false;
        
        if (v_Partecipants.empty())
            return false;
            
        itertype(v_Partecipants) it = std::find(v_Partecipants.begin(), v_Partecipants.end(), dwPlayerID);

        if (it != v_Partecipants.end())
        {
            return true;
        }
        return false;
    }

StartDungeon:

Spoiler

void CMgrMap::StartDungeon(LPCHARACTER pkChar)
    {
        if (!pkChar)
        {
            return;
        }
        if (!IsPartecipant(pkChar->GetPlayerID()))
        {
            return;
        }
        else if (e_pEndEvent != NULL)
        {
            EndDungeon(false, true);
            return;
        }
        else if ((!pkMainNPC) || (!pkGate) || (!pkBoss) || (!pkStatue1) || (!pkStatue2) || (!pkStatue3) || (!pkStatue4))
        {
            EndDungeon(false, true);
            return;
        }
        
        CGuild* pkGuild = CGuildManager::instance().FindGuild(GetGuildID());
        if (!pkGuild)
            return;

Thanks for your time.

 

Link to comment
Share on other sites

  • Active Member

what version you use? i use Karakas version but this have  game.core on 2 time when you attack statues, but maybe you can compare function!

KH.jpg

Nicks: Nazox Krone Nagato Yahiko Yakiro
Proyecto: Trabajando en el.
Compañeros & firma: DreamHQ  - 2009-2015 [Nostalgia]

Link to comment
Share on other sites

19 hours ago, nazox said:

que version usas Yo uso la versión Karakas pero esta tiene game.core en 2 veces cuando atacas estatuas, ¡pero tal vez puedas comparar la función!

I use the same, but modified. In the end I have decided to remove IsPartecipant from places that I do not see any sense that they are, it is illogical to ask if it is a member when it should be by entering the dungeon, I limited the entrance to stage 1 to avoid player entries after the dungeon starts .

  • Good 1
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.