Jump to content

zhenya`

Members
  • Posts

    23
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by zhenya`

  1. Hi,

    I'm back at this interesting code with more knowledge about this thing than i had last time :D . I am stuck at the 0x05 opcode and its response. Can someone please help me? How the client generates the hash? What is this module specific hash? How can I get it? I'm completely stuck at this 0x05 and 0x04 opcode.

    Thanks.

    You can implement warden with 1 module or collect modules with keys. Function in every module different from another.

    you can get new rc4 keys from client memory;) and on this way you can avoid ModuleSpecificHash(..)

  2. Core: 7528

    SD2: 936

    UDB: 370

    ACID: 27

    Patch: Anti-cheat by CWN

    crash_log_2009-03-28_08-04-32.log

    Using host libthread_db library "/lib/libthread_db.so.1".
    Core was generated by `./bin/mangos-worldd -c etc/mangosd.conf'.
    Program terminated with signal 11, Segmentation fault.
    #0  Spell::cancel (this=0xa4f01b50) at ../../../src/game/Spell.cpp:2354
    2354                    if( ihit->missCondition == SPELL_MISS_NONE )
    #0  Spell::cancel (this=0xa4f01b50) at ../../../src/game/Spell.cpp:2354
       unit = (class Unit *) 0x0
    #1  0x08454082 in EventProcessor::KillAllEvents (this=0x7c45678c, force=false) at ../../../src/framework/Utilities/EventProcessor.cpp:73
    No locals.
    

    try to change if( ihit->missCondition == SPELL_MISS_NONE ) to if( (*ihit).missCondition == SPELL_MISS_NONE )

  3. interesting crash

    revision last 0.12

    (gdb) where
    #0  0x00002b0841384fb5 in raise () from /lib/libc.so.6
    #1  0x00002b0841386bc3 in abort () from /lib/libc.so.6
    #2  0x00002b084137dfa9 in __assert_fail () from /lib/libc.so.6
    #3  0x000000000052c3f2 in InstanceSave::SaveToDB (this=0x2b089bd3a860)
       at ../../../src/game/InstanceSaveMgr.cpp:162
    #4  0x000000000052c718 in InstanceSaveManager::AddInstanceSave (
       this=0x14ce180, mapId=<value optimized out>, instanceId=562,
       difficulty=1 '\\001', resetTime=1237348800, canReset=true, load=false)
       at ../../../src/game/InstanceSaveMgr.cpp:104
    #5  0x000000000057f46e in InstanceMap::Add (this=0x2b0888444f00,
       player=0x2b086e1ed8d0) at ../../../src/game/Map.cpp:1727
    #6  0x000000000073e27b in WorldSession::HandleMoveWorldportAckOpcode (
       this=0x2b0868ebe870) at ../../../src/game/MovementHandler.cpp:82
    #7  0x00000000006dc73b in WorldSession::Update (this=0x2b0868ebe870)
       at ../../../src/game/WorldSession.cpp:206
    #8  0x00000000006d1dbf in World::UpdateSessions (this=0xb2a130, diff=163)
       at ../../../src/game/World.cpp:2631
    #9  0x00000000006d5838 in World::Update (this=0xb2a130, diff=163)
       at ../../../src/game/World.cpp:1486
    #10 0x00000000004d602d in WorldRunnable::run (this=<value optimized out>)
       at ../../../src/mangosd/WorldRunnable.cpp:60
    #11 0x00002b084077aa68 in ZThread::ThreadImpl::Dispatch (parent=0xb06500,
       impl=0x2b084fe4c080, task=
    

    (gdb) f 3
    #3  0x000000000052c3f2 in InstanceSave::SaveToDB (this=0x2b089bd3a860)
       at ../../../src/game/InstanceSaveMgr.cpp:162
    162             assert(map->IsDungeon());
    (gdb) list
    157         std::string data;
    158
    159         Map *map = MapManager::Instance().FindMap(m_instanceid, GetMapId());
    160         if(map)
    161         {
    162             assert(map->IsDungeon());
    163             InstanceData *iData = ((InstanceMap *)map)->GetInstanceData();
    164             if(iData && iData->Save())
    165             {
    166                 data = iData->Save();
    (gdb) p m_instanceid
    $1 = 562
    (gdb) p m_mapid
    $2 = 556
    
    

    562 is arena mapid why it here?

    Map *map = MapManager::Instance().FindMap(m_instanceid, GetMapId());

    m_instanceid==instanceid?

    why FindMap(m_instanceid, GetMapId());?

    Map* MapManager::FindMap(uint32 mapid, uint32 instanceId)

    may be Map *map = MapManager::Instance().FindMap(GetMapId(),m_instanceid);

  4. With recent and planned .map files size descreasing (thanks to DiSlord for nice recent chnages in its and continue work in this part) server have _lot_ more free memory for work without hardware changes.

    i think maps isn`t very slow part of project...

  5. more easy to understand code..

    diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp
    index fb66848..d6931d9 100644
    --- a/src/game/AchievementMgr.cpp
    +++ b/src/game/AchievementMgr.cpp
    @@ -83,6 +83,11 @@ const CriteriaCastSpellRequirement AchievementGlobalMgr::m_criteriaCastSpellRequ
            {6662, 31261, 0, 0}
        };
    
    +const uint32 AchievIdByClass[MAX_CLASSES] = 
    +{ 0, 459, 465 , 462, 458, 464, 461, 467, 460, 463, 0, 466 };
    +const uint32 AchievIdByRace[MAX_RACES] = 
    +{ 0, 1408, 1410, 1407, 1409, 1413, 1411, 1404, 1412, 0, 1405, 1406 };
    +
    AchievementMgr::AchievementMgr(Player *player)
    {
        m_player = player;
    @@ -600,29 +605,12 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve
        switch(achievementCriteria->requiredType)
        {
            case ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL:
    -            if(achievement->ID == 467 && GetPlayer()->getClass() != CLASS_SHAMAN ||
    -                    achievement->ID == 466 && GetPlayer()->getClass() != CLASS_DRUID ||
    -                    achievement->ID == 465 && GetPlayer()->getClass() != CLASS_PALADIN ||
    -                    achievement->ID == 464 && GetPlayer()->getClass() != CLASS_PRIEST ||
    -                    achievement->ID == 463 && GetPlayer()->getClass() != CLASS_WARLOCK ||
    -                    achievement->ID == 462 && GetPlayer()->getClass() != CLASS_HUNTER ||
    -                    achievement->ID == 461 && GetPlayer()->getClass() != CLASS_DEATH_KNIGHT ||
    -                    achievement->ID == 460 && GetPlayer()->getClass() != CLASS_MAGE ||
    -                    achievement->ID == 459 && GetPlayer()->getClass() != CLASS_WARRIOR ||
    -                    achievement->ID == 458 && GetPlayer()->getClass() != CLASS_ROGUE ||
    -
    -                    achievement->ID == 1404 && GetPlayer()->getRace() != RACE_GNOME ||
    -                    achievement->ID == 1405 && GetPlayer()->getRace() != RACE_BLOODELF ||
    -                    achievement->ID == 1406 && GetPlayer()->getRace() != RACE_DRAENEI ||
    -                    achievement->ID == 1407 && GetPlayer()->getRace() != RACE_DWARF ||
    -                    achievement->ID == 1408 && GetPlayer()->getRace() != RACE_HUMAN ||
    -                    achievement->ID == 1409 && GetPlayer()->getRace() != RACE_NIGHTELF ||
    -                    achievement->ID == 1410 && GetPlayer()->getRace() != RACE_ORC ||
    -                    achievement->ID == 1411 && GetPlayer()->getRace() != RACE_TAUREN ||
    -                    achievement->ID == 1412 && GetPlayer()->getRace() != RACE_TROLL ||
    -                    achievement->ID == 1413 && GetPlayer()->getRace() != RACE_UNDEAD_PLAYER )
    -                return false;
    -            return progress->counter >= achievementCriteria->reach_level.level;
    +        {
    +            if (AchievIdByClass[GetPlayer()->getClass()] == achievement->ID ||
    +                AchievIdByRace[GetPlayer()->getRace()] == achievement->ID)
    +                return progress->counter >= achievementCriteria->reach_level.level;
    +            return false;
    +        }
            case ACHIEVEMENT_CRITERIA_TYPE_BUY_BANK_SLOT:
                return progress->counter >= achievementCriteria->buy_bank_slot.numberOfSlots;
            case ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE:
    
    

×
×
  • Create New...

Important Information

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. Privacy Policy Terms of Use