Jump to content

VladimirMangos

Members
  • Posts

    2813
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by VladimirMangos

  1. You sure that in DB stored _full_ player guid? With big chance it must be uint32 low guid part

    In like case read must be ObjectGuid(HIGUID_PLAYER, fields[1].GetUInt32())

    This immortant if at some moment mangos start use !=0 player high guid part.

  2. Expected that remove spell already remove dependent spells also... if bug exist then it in removespell code.

    For normal cases i not remember like problem so in general dependent spells for like cases removed propertly.

    Check .unlearn for same spells and you will see that dependent spells also unlearned.

  3. Possible sollution: use in follower movegen calculated from target movegen expect/future pos instead current not updated and possible outdated position.

    Because player in normal state have idle movegen this can be implemented in clear way: follow/chase/etc movegen ask target top movegen for expected "right" pos instead use formal possition. Don't know how this will affect CPU usage from other side.

  4. Possible need add exclude killing player at logout if he at battleground. But this can allow cheating with it for avoid leave some impotent position at BG in result die by close client and relogin. So maybe instead exclude need add alternative code for BG case: teleport to local graveyard pos.

    [Not have sources for fast search exactly function when this done that i not remember, sorry]

  5. This problem related to way how we reset active mover. Mangos reset active mover base at internal data. Possible case when client send active mover reset request (that can be cheating or not cheating) after real reset happens in core. In result we have like error.

    This has been discussed in past. One from way is reset active mover in referenced handler as expected by normal bliz-like way but only in case when some flag set at in-core reset need check. This can resolve another existed problem: sometime server receive movement packets from client for active mover _after_ in-core active mover reset. It's ignored currently but this can add some desync in coordinates maybe other problem sometime.

  6. Look for cases where in code use checks with IsRaidOrHeroicDungeon() and change in your way where appropriate (look code context).

    This not only changes required in fact because normal mode for maps not have reset time data as I remember in DBC/DB.

    But possible DB can be used for overwrite it.

  7. Independent how you write order of fields initialization C++ required call initialize code in order of declarations. If initialization order affect code work correctness then warning can show real bugs. So better fix code to expected order (with check that this will provide correct code work).

    Disable warning will just hide _real_ problem possible.

    P.S. Oh, faramir118 already clarify this)

    P.S.2 And evilatwow ^^

  8. He meaning that if you add custom starting items then its not equipped to character because default gear use same slots early.

    Only way avoid adding gear from DBC is modify related code in Player.cpp. In fact easy change must be if you want totally ignore default gear.

  9. It mostly related to memory use and impossibility create new guids at some moment.

    Possible 2 way: reorder guids at server startup. This already used for group guids and some other as i remember.

    Alt. way as you suggest collect free guids and re-use its. This case more dynamic work and not req. server restart, but it have bad side:

    store like free guids can need lot memory. Ofc, maybe better way mixed: reorder at startup and then collect and reuse guids.

  10. diff --git a/src/game/NPCHandler.cpp b/src/game/NPCHandler.cpp
    index db7b035..d2b9a0c 100644
    --- a/src/game/NPCHandler.cpp
    +++ b/src/game/NPCHandler.cpp
    @@ -131,7 +131,7 @@ static void SendTrainerSpellHelper(WorldPacket& data, TrainerSpell const* tSpell
        data << uint32(primary_prof_first_rank && can_learn_primary_prof ? 1 : 0);
        // primary prof. learn confirmation dialog
        data << uint32(primary_prof_first_rank ? 1 : 0);    // must be equal prev. field to have learn button in enabled state
    -    data << uint8(skillReqLevel ? skillReqLevel : tSpell->reqLevel);
    +    data << uint8(std::max(skillReqLevel, tSpell->reqLevel));
        data << uint32(tSpell->reqSkill);
        data << uint32(tSpell->reqSkillValue);
        data << uint32(!tSpell->IsCastable() && chain_node ? (chain_node->prev ? chain_node->prev : chain_node->req) : 0);
    
    

    Seems to be an improvement for druid trainers. Not yet checked for other cases.

    What you will do if need overwrite wrong high level req in dbc?

×
×
  • 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