Jump to content

GriffonHeart

Members
  • Posts

    34
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by GriffonHeart

  1. Revision: 10105

    Core: MaNGOS + insider42 + SD2

    ACE: enable-builtin-ace

    CONF: CFLAGS="-O1 -march=core2 -g -mssse3 -mfpmath=sse" CXXFLAGS="-O1 -march=core2 -g -mssse3 -mfpmath=sse"

    OS: 2.6.34-gentoo-r1

    #0  0x00007f8d9170d2d1 in ACE_Configuration_Section_Key (this=<value optimized out>, rhs=...) at ../../../../dep/ACE_wrappers/ace/Configuration.cpp:68
    68          key_->add_ref ();
    (gdb) bt full
    #0  0x00007f8d9170d2d1 in ACE_Configuration_Section_Key (this=<value optimized out>, rhs=...) at ../../../../dep/ACE_wrappers/ace/Configuration.cpp:68
    No locals.
    #1  0x00000000008c6a66 in GetValueHelper (mConf=0xca7370, name=<value optimized out>, result=...) at ../../../../src/shared/Config/Config.cpp:33
           section_name = warning: can't find linker symbol for virtual table for `ACE_String_Base<char>' value
    warning:   found `ACE_Allocator::allocator_' instead
    {<ACE_String_Base_Const> = {static npos = 18446744073709551615}, allocator_ = 0x7f8d91a03030, len_ = 0, buf_len_ = 0, rep_ = 0xc99e29 "", release_ = false,
             static NULL_String_ = 0 '\\000'}
           section_key = {key_ = 0x0}
           root_key = {key_ = 0xcb3500}
           i = <value optimized out>
    #2  0x00000000008c6b80 in Config::GetStringDefault (this=0xca72e0, name=0x94bf98 "BindIP", def=0x94be3e "0.0.0.0") at ../../../../src/shared/Config/Config.cpp:84
           val = warning: can't find linker symbol for virtual table for `ACE_String_Base<char>' value
    warning:   found `ACE_Allocator::allocator_' instead
    {<ACE_String_Base_Const> = {static npos = 18446744073709551615}, allocator_ = 0x7f8d91a03030, len_ = 0, buf_len_ = 0, rep_ = 0xc99e29 "", release_ = false, static NULL_String_ = 0 '\\000'}
    #3  0x00000000005631cb in Master::Run (this=0xcb3740) at ../../../src/mangosd/Master.cpp:319
           world_thread = {m_iThreadId = 140245777360656, m_hThreadHandle = 140245777360656, m_task = 0x7f8d7cef5e30, static m_ThreadStorage = {_vptr.ACE_TSS = 0x9ca7b0, keylock_ = {lock_ = {__data = {
                     __lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\\000' <repeats 39 times>, __align = 0}, removed_ = false},
               once_ = true, key_ = 4}, static m_TpEnum = {m_priority = {0, 0, 0, 0, 0, 0, 0}}}
           rar_thread = 0x0
           freeze_thread = 0x16fc72c0
           cliThread = 0x0
           soap_thread = 0x0
           bind_ip = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x0}}
           pidfile = warning: can't find linker symbol for virtual table for `std::basic_string<char, std::char_traits<char>, std::allocator<char> >' value
    {static npos = 18446744073709551615, _M_dataplus = warning: can't find linker symbol for virtual table for `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider' value
    {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xc80058 ""}}
           wsport = 3724
    #4  0x00000000005626c9 in main (argc=<value optimized out>, argv=0x7fff0742de28) at ../../../src/mangosd/Main.cpp:180
           cfg_file = 0x7fff0742e658 "/usr/local/mangos_PVP/bin/mangosd_PVP.conf"
           cmd_opts = {argc_ = 3, argv_ = 0x7fff0742de28, optind = 3, opterr = 0, optarg = 0x0, optstring_ = 0xca7200, long_only_ = 0, has_colon_ = 1, last_option_ = 0xca7250, nextchar_ = 0x0, optopt_ = 99,
             ordering_ = 2, nonopt_start_ = 3, nonopt_end_ = 3, long_option_ = 0x0, long_opts_ = {<ACE_Array_Base<ACE_Get_Opt::ACE_Get_Opt_Long_Option*>> = {max_size_ = 1, cur_size_ = 1, array_ = 0xca72c0,
                 allocator_ = 0x7f8d91a03030}, <No data fields>}}
           option = <value optimized out>
    

    Crash sometimes after server startup

  2. When I try to implement achievements in trial_of_crusader, I found bug - CheckAchievementCriteriaMeet does'nt work

    Can be fixed by patch (may be hack code)

    diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp
    index 5a0d3ed..124195a 100644
    --- a/src/game/AchievementMgr.cpp
    +++ b/src/game/AchievementMgr.cpp
    @@ -1912,6 +1912,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaRequirements()
    
            // this will allocate empty data set storage
            AchievementCriteriaRequirementSet& dataSet = m_criteriaRequirementMap[criteria_id];
    +        dataSet.SetCriteriaId(criteria_id);
    
            // counting disable criteria requirements
            if (data.requirementType == ACHIEVEMENT_CRITERIA_REQUIRE_DISABLED)
    diff --git a/src/game/AchievementMgr.h b/src/game/AchievementMgr.h
    index be071a2..beda615 100644
    --- a/src/game/AchievementMgr.h
    +++ b/src/game/AchievementMgr.h
    @@ -186,6 +186,7 @@ struct AchievementCriteriaRequirementSet
            typedef std::vector<AchievementCriteriaRequirement> Storage;
            void Add(AchievementCriteriaRequirement const& data) { storage.push_back(data); }
            bool Meets(Player const* source, Unit const* target, uint32 miscvalue = 0) const;
    +        void SetCriteriaId(uint32 id) {criteria_id = id;}
        private:
            uint32 criteria_id;
            Storage storage;
    

  3. + Allow use achievements criteria types ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET and ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2 in table achievement_criteria_requirement

    This is need for allow check achievements criteria in SD2 scripts

    For exmaple: http://ru.wowhead.com/?achievement=3798 and http://ru.wowhead.com/?achievement=3917

    diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp
    index 5a0d3ed..aeeb36e 100644
    --- a/src/game/AchievementMgr.cpp
    +++ b/src/game/AchievementMgr.cpp
    @@ -93,6 +93,8 @@ bool AchievementCriteriaRequirement::IsValid(AchievementCriteriaEntry const* cri
            case ACHIEVEMENT_CRITERIA_TYPE_WIN_DUEL:
            case ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE:
            case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2:
    +        case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET:
    +        case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2:
                break;
            default:
                sLog.outErrorDb( "Table `achievement_criteria_requirement` have data for not supported criteria type (Entry: %u Type: %u), ignore.", criteria->ID, criteria->requiredType);
    @@ -1033,10 +1035,21 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
                }
                case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET:
                case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2:
    +            {
                    if (!miscvalue1 || miscvalue1 != achievementCriteria->be_spell_target.spellID)
                        continue;
    +
    +                // those requirements couldn't be found in the dbc
    +                AchievementCriteriaRequirementSet const* data = sAchievementMgr.GetCriteriaRequirementSet(achievementCriteria);
    +                if(!data)
    +                    continue;
    +
    +                if(!data->Meets(GetPlayer(),unit))
    +                    continue;
    +
                    SetCriteriaProgress(achievementCriteria, 1, PROGRESS_ACCUMULATE);
                    break;
    +            }
                case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL:
                case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2:
                {
    

  4. Hello,

    Player on the BG (Warsong) captures flag, logout and appears at home base graveyard with flag near player,

    takes flag and go to base.

    Should be (as on the off server):

    Logout on the BG caused teleport to home bind location.

    Patch:

    --- WorldSession.cpp.bak        2009-12-24 01:33:29.000000000 +0200
    +++ WorldSession.cpp    2009-12-24 01:32:41.000000000 +0200
    @@ -355,10 +355,13 @@
                _player->BuildPlayerRepop();
                _player->RepopAtGraveyard();
            }
    -
            //drop a flag if player is carrying it
    +        //also teleport player to home location (prevent cheating)
            if(BattleGround *bg = _player->GetBattleGround())
    +        {
              bg->EventPlayerLoggedOut(_player);
    +          _player->TeleportTo(_player->m_homebindMapId, _player->m_homebindX, _player->m_homebindY, _player->m_homebindZ, _player->GetOrientation());
    +        }
    
            ///- Remove from OutdoorPvP
            sOutdoorPvPMgr.HandlePlayerLeaveZone(_player,_player->GetZoneId());

    Any suggestions are welcome.

    Why teleport to homebind? Player must apear not at graveyard, but at the logout point

  5. In fact there is a crash log of what i'm talking about, using ACE mtmaps. With 7XX characters... it crash like 5 times by day (some days less).. but like a said before once that i move Players:Update from Map:Update...I got like 3day uptimes.

    http://pastebin.com/m836455e

    To infinfny, thanks for your suggestions i will try it with your patch.

    I have the same crash :( Can you provide patch, how to fix this?

  6. hello just want to note here, that we're running mangos with latest 3.1.3 commit

    very stable with this patch by derex: http://pastebin.com/m7d3df483

    stable means in this case no crash for 48h with 1200 user peak

    actualy i had to implement two patches (but are hacks :/ ) for some long known crashes/freeze - but don't know if they are related to the patch so i won't post them here

    This patch for what revision? Does it works correctly after implementing per-map guid storing

  7. This patch uses new in 3.1 fields unk1 and unk2. These new fields are KillCredit1 and KillCredit2

    This patch will allow to remove many scripts in ACID

    DOWNLOAD NOW!

    Patch:

    diff --git a/src/game/Creature.h b/src/game/Creature.h
    index 416f747..f171dbd 100644
    --- a/src/game/Creature.h
    +++ b/src/game/Creature.h
    @@ -157,8 +157,7 @@ struct CreatureInfo
    {
        uint32  Entry;
        uint32  HeroicEntry;
    -    uint32  unk1;
    -    uint32  unk2;
    +    uint32  KillCredit[2];
        uint32  DisplayID_A[2];
        uint32  DisplayID_H[2];
        char*   Name;
    diff --git a/src/game/Player.cpp b/src/game/Player.cpp
    index f81ef2e..e3f529e 100644
    --- a/src/game/Player.cpp
    +++ b/src/game/Player.cpp
    @@ -13384,6 +13384,16 @@ void Player::ItemRemovedQuestCheck( uint32 entry, uint32 count )
        UpdateForQuestWorldObjects();
    }
    
    +void Player::KilledMonster( uint32 entry1, uint32 entry2, uint32 entry3, uint64 guid )
    +{
    +    if(entry1)
    +        KilledMonster(entry1,guid);
    +    if(entry2)
    +        KilledMonster(entry2,guid);
    +    if(entry3)
    +        KilledMonster(entry3,guid);
    +}
    +
    void Player::KilledMonster( uint32 entry, uint64 guid )
    {
        uint32 addkillcount = 1;
    @@ -18901,7 +18911,7 @@ bool Player::RewardPlayerAndGroupAtKill(Unit* pVictim)
                        {
                            // normal creature (not pet/etc) can be only in !PvP case
                            if(pVictim->GetTypeId()==TYPEID_UNIT)
    -                            pGroupGuy->KilledMonster(pVictim->GetEntry(), pVictim->GetGUID());
    +                            pGroupGuy->KilledMonster(pVictim->GetEntry(),
    ((Creature*)pVictim)->GetCreatureInfo()->KillCredit[0],((Creature*)pVictim)->GetCreatureInfo()->KillCredit[1], pVictim->GetGUID());
                        }
                    }
                }
    @@ -18926,7 +18936,7 @@ bool Player::RewardPlayerAndGroupAtKill(Unit* pVictim)
    
                // normal creature (not pet/etc) can be only in !PvP case
                if(pVictim->GetTypeId()==TYPEID_UNIT)
    -                KilledMonster(pVictim->GetEntry(),pVictim->GetGUID());
    +                KilledMonster(pVictim->GetEntry(),
    ((Creature*)pVictim)->GetCreatureInfo()->KillCredit[0],((Creature*)pVictim)->GetCreatureInfo()->KillCredit[1], pVictim->GetGUID());
            }
        }
        return xp || honored_kill;
    @@ -20462,4 +20472,4 @@ void Player::BuildTeleportAckMsg( WorldPacket *data, float x, float y, float z,
    bool Player::HasMovementFlag( MovementFlags f ) const
    {
        return m_movementInfo.HasMovementFlag(f);
    -}
    \\ No newline at end of file
    +}
    diff --git a/src/game/Player.h b/src/game/Player.h
    index efe279b..9eba54f 100644
    --- a/src/game/Player.h
    +++ b/src/game/Player.h
    @@ -1289,6 +1289,7 @@ class MANGOS_DLL_SPEC Player : public Unit
            void GroupEventHappens( uint32 questId, WorldObject const* pEventObject );
            void ItemAddedQuestCheck( uint32 entry, uint32 count );
            void ItemRemovedQuestCheck( uint32 entry, uint32 count );
    +        void KilledMonster( uint32 entry1, uint32 entry2, uint32 entry3, uint64 guid );
            void KilledMonster( uint32 entry, uint64 guid );
            void CastedCreatureOrGO( uint32 entry, uint64 guid, uint32 spell_id );
            void TalkedToCreature( uint32 entry, uint64 guid );
    diff --git a/src/game/QueryHandler.cpp b/src/game/QueryHandler.cpp
    index fd7846b..69be7e1 100644
    --- a/src/game/QueryHandler.cpp
    +++ b/src/game/QueryHandler.cpp
    @@ -189,8 +189,8 @@ void WorldSession::HandleCreatureQueryOpcode( WorldPacket & recv_data )
            data << uint32(ci->type);                           // CreatureType.dbc
            data << uint32(ci->family);                         // CreatureFamily.dbc
            data << uint32(ci->rank);                           // Creature Rank (elite, boss, etc)
    -        data << uint32(ci->unk1);                           // new in 3.1, creature entry?
    -        data << uint32(ci->unk2);                           // new in 3.1, creature entry?
    +        data << uint32(ci->KillCredit[0]);                  // new in 3.1, kill credit
    +        data << uint32(ci->KillCredit[1]);                  // new in 3.1, kill credit
            data << uint32(ci->DisplayID_A[0]);                 // modelid_male1
            data << uint32(ci->DisplayID_H[0]);                 // modelid_female1 ?
            data << uint32(ci->DisplayID_A[1]);                 // modelid_male2 ?

    SQL:

    ALTER TABLE `creature_template`
       CHANGE COLUMN `unk1` `KillCredit1` int(11) unsigned NOT NULL default '0',
       CHANGE COLUMN `unk2` `KillCredit2` int(11) unsigned NOT NULL default '0';
    

    -------------------------------------------

    Cross posting from http://getmangos.ru/forum/showthread.php?t=20778

  8. Support some vehicle (if you need)

    Argent tournament:

    UPDATE creature_template SET speed = '1.5', unit_flags = 8 WHERE entry IN (33844,33845);
    DELETE FROM creature_addon WHERE guid IN (SELECT guid FROM creature WHERE id IN (33844,33845));
    DELETE FROM creature WHERE id IN (33844,33845);
    DELETE FROM vehicle_data WHERE entry in (349);
    INSERT INTO `vehicle_data` VALUES
    ('349', '24', '62544', '62575', '62960', '62552', '64077', '62863', '0', '0', '0', '0', '62853');
    DELETE FROM vehicle_seat_data WHERE seat in (3129);
    INSERT INTO `vehicle_seat_data` VALUES
    ('3129', '1')
    INSERT INTO `npc_spellclick_spells` VALUES
    ('33842', '63791', '13829', '1', '0', '3');
    INSERT INTO `npc_spellclick_spells` VALUES
    ('33842', '63791', '13839', '1', '0', '3');
    INSERT INTO `npc_spellclick_spells` VALUES
    ('33842', '63791', '13838', '1', '0', '3');
    INSERT INTO `npc_spellclick_spells` VALUES
    ('33843', '63792', '13828', '1', '0', '3');
    INSERT INTO `npc_spellclick_spells` VALUES
    ('33843', '63792', '13837', '1', '0', '3');
    INSERT INTO `npc_spellclick_spells` VALUES
    ('33843', '63792', '13835', '1', '0', '3');
    DELETE FROM creature_template_addon WHERE entry IN (33844,33845);
    INSERT INTO creature_template_addon (`entry`, `mount`, `bytes1`, `bytes2`, `emote`, `moveflags`, `vehicle_id`, `passengers`, `auras`) VALUES
    (33844, 0, 0, 2049, 0, 0, 349, '', '');
    INSERT INTO creature_template_addon (`entry`, `mount`, `bytes1`, `bytes2`, `emote`, `moveflags`, `vehicle_id`, `passengers`, `auras`) VALUES
    (33845, 0, 0, 2049, 0, 0, 349, '', '');
    

    Quest Into the Realm of Shadows (12687):

    UPDATE creature_template SET faction_A = 2082, faction_H = 2082, unit_flags = 0 WHERE entry = 28782;
    DELETE FROM creature_addon WHERE guid IN (SELECT guid FROM creature WHERE id = 28782);
    DELETE FROM vehicle_data WHERE entry in (135);
    INSERT INTO vehicle_data VALUES
    (135, 12, 52362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    DELETE FROM vehicle_seat_data WHERE seat in (1871);
    INSERT INTO vehicle_seat_data VALUES
    (1871, 1);
    DELETE FROM npc_spellclick_spells WHERE npc_entry in (28782);
    INSERT INTO npc_spellclick_spells VALUES
    (28782, 52349, 12687, 1, 12687, 3);
    DELETE FROM creature_template_addon WHERE entry IN (28782);
    INSERT INTO creature_template_addon (`entry`, `mount`, `bytes1`, `bytes2`, `emote`, `moveflags`, `vehicle_id`, `passengers`, `auras`) VALUES
    (28782, 0, 0, 1, 0, 0, 135, '', '');

    Quest Grand Theft Palomino (12680):

    DELETE FROM creature_addon WHERE guid IN (SELECT guid FROM creature WHERE id IN (28605,28606,28607));
    INSERT INTO spell_script_target VALUES
    (52264,1,28653);
    DELETE FROM vehicle_data WHERE entry in (123);
    INSERT INTO vehicle_data VALUES
    (123, 12, 52264, 52268, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    DELETE FROM vehicle_seat_data WHERE seat in (1782);
    INSERT INTO vehicle_seat_data VALUES
    (1782, 1);
    DELETE FROM npc_spellclick_spells WHERE npc_entry in (28605,28606,28607);
    INSERT INTO npc_spellclick_spells VALUES
    (28605, 52263, 12680, 1, 12680, 3);
    INSERT INTO npc_spellclick_spells VALUES
    (28606, 52263, 12680, 1, 12680, 3);
    INSERT INTO npc_spellclick_spells VALUES
    (28607, 52263, 12680, 1, 12680, 3);
    DELETE FROM creature_template_addon WHERE entry IN (28605,28606,28607);
    INSERT INTO creature_template_addon (`entry`, `mount`, `bytes1`, `bytes2`, `emote`, `moveflags`, `vehicle_id`, `passengers`, `auras`) VALUES
    (28605, 0, 0, 1, 0, 0, 123, '', '');
    INSERT INTO creature_template_addon (`entry`, `mount`, `bytes1`, `bytes2`, `emote`, `moveflags`, `vehicle_id`, `passengers`, `auras`) VALUES
    (28606, 0, 0, 1, 0, 0, 123, '', '');
    INSERT INTO creature_template_addon (`entry`, `mount`, `bytes1`, `bytes2`, `emote`, `moveflags`, `vehicle_id`, `passengers`, `auras`) VALUES
    (28607, 0, 0, 1, 0, 0, 123, '', '');

  9. Can there be more than one location for a player of a certain faction to be teleported to a specific battleground ?

    It can be any point in the world, near the battlemaster where player join to queue.

    See SetBattleGroundEntryPoint function.

    But I think we can move this method from WorldSession::HandleBattleGroundJoinOpcode and WorldSession::HandleBattleGroundArenaJoin to BattleGroundMgr::SendToBattleGround

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