Jump to content

apendix

Members
  • Posts

    33
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by apendix

  1. // prevent equipping bag in the same slot from its inside

    if (IsBagPos(dst) && srcbag == dstslot)

    {

    SendEquipError(EQUIP_ERR_ITEMS_CANT_BE_SWAPPED, pSrcItem, pDstItem);

    return;

    }

    put it into player.cpp

    you can test it , it is from trinity forum

  2. It's WORK!

    They cloned the things and then sell them, so I saw myself as one of the players did on my eyes a 100000 gold by cloning things and immediately selling them.

    In console I see it:

    2009-11-14 21:02:12 ERROR: Player (GUID: 84315 Name: Ezikks):: _SaveInventory - the bag (255) and slot (255) values for the item with guid 30,345,599 are incorrect, the player doesn't have an item at that position!

    i can confirm, i dont know if it is working on 3.2.2 patch , but on 3.1.3. is this hack very usefull for noob people

  3. i use this and works fine too

    diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
    index 321c18d..95a7841 100644
    --- a/src/game/SpellAuras.cpp
    +++ b/src/game/SpellAuras.cpp
    @@ -2774,6 +2774,8 @@ void Aura::HandleAuraModShapeshift(bool apply, bool Real)
        // add/remove the shapeshift aura's boosts
        HandleShapeshiftBoosts(apply);
    
    +    m_target->UpdateSpeed(MOVE_RUN, true);
    +
        if(m_target->GetTypeId() == TYPEID_PLAYER)
            ((Player*)m_target)->InitDataForForm();
    }
    diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
    index 2db68f7..0213a02 100644
    --- a/src/game/Unit.cpp
    +++ b/src/game/Unit.cpp
    @@ -9264,6 +9264,21 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced)
                return;
        }
    
    +    // Remove Druid Dash bonus if not in Cat Form
    +    if (m_form != FORM_CAT)
    +    {
    +        AuraList const& speed_increase_auras = GetAurasByType(SPELL_AURA_MOD_INCREASE_SPEED);
    +        for(AuraList::const_iterator itr = speed_increase_auras.begin(); itr != speed_increase_auras.end(); ++itr)
    +        {
    +            const SpellEntry* aura_proto = (*itr)->GetSpellProto();
    +            if (aura_proto->SpellFamilyName == SPELLFAMILY_DRUID && aura_proto->SpellIconID == 959)
    +            {
    +                main_speed_mod -= (*itr)->GetModifier()->m_amount;
    +                break;
    +            }
    +        }
    +    }
    +
        float bonus = non_stack_bonus > stack_bonus ? non_stack_bonus : stack_bonus;
        // now we ready for speed calculation
        float speed  = main_speed_mod ? bonus*(100.0f + main_speed_mod)/100.0f : bonus;
    

  4. revision 8480

    Sd 1392

    YTDB 507

    crash after this

    ../../../src/game/MapInstanced.cpp:124 in CreateInstance ASSERTION FAILED:

    NewInstanceId

    /opt/mangos/bin/mangos-worldd(_ZN12WorldSession28HandleMoveWorldportAckOp codeEv+0x233) [0x7f28f3]

    /opt/mangos/bin/mangos-worldd(_ZN12WorldSession6UpdateEj+0x1ee) [0x79393e]

    /opt/mangos/bin/mangos-worldd(_ZN5World14UpdateSessionsEj+0xf5) [0x789185]

    /opt/mangos/bin/mangos-worldd(_ZN5World6UpdateEj+0x169) [0x789479]

    /opt/mangos/bin/mangos-worldd(_ZN13WorldRunnable3runEv+0xdc) [0x4df64c]

    /opt/mangos/bin/mangos-worldd(_ZN9ACE_Based6Thread10ThreadTaskEPv+0x1c) [0x832a2c]

    /lib/libpthread.so.0 [0x7f6236295fc7]

    /lib/libc.so.6(clone+0x6d) [0x7f62358655ad]

    mangos-worldd: ../../../src/game/MapInstanced.cpp:124: Map* MapInstanced::CreateInstance(uint32, Player*): Assertion `"NewInstanceId" &&0' failed.

    and another one

    ../../../src/game/Object.h:482 in GetMap ASSERTION FAILED:

    m_currMap

    /opt/eq2/bin/mangos-worldd(_ZNK6Player12GetViewPointEv+0x28) [0x66a5b8]

    /opt/eq2/bin/mangos-worldd(_ZN5Group22UpdatePlayerOutOfRangeEP6Player+0xb0) [0x57cf00]

    /opt/eq2/bin/mangos-worldd(_ZN6Player6UpdateEj+0x504) [0x6bed44]

    /opt/eq2/bin/mangos-worldd(_ZN3Map6UpdateERKj+0x8d) [0x5e70cd]

    /opt/eq2/bin/mangos-worldd(_ZN10MapManager6UpdateEj+0x169) [0x5f7d59]

    /opt/eq2/bin/mangos-worldd(_ZN5World6UpdateEj+0x2b2) [0x7896d2]

    /opt/eq2/bin/mangos-worldd(_ZN13WorldRunnable3runEv+0xdc) [0x4df64c]

    /opt/eq2/bin/mangos-worldd(_ZN9ACE_Based6Thread10ThreadTaskEPv+0x1c) [0x832b3c]

    /lib/libpthread.so.0 [0x7f8d4953cfc7]

    /lib/libc.so.6(clone+0x6d) [0x7f8d48b0c5ad]

    mangos-worldd: ../../../src/game/Object.h:482: Map* WorldObject::GetMap() const: Assertion `"m_currMap" &&0' failed.

  5. this is spell disable patch

    diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp
    index 3444776..2685798 100644
    --- a/src/game/Chat.cpp
    +++ b/src/game/Chat.cpp
    @@ -454,6 +454,7 @@ ChatCommand * ChatHandler::getCommandTable()
            { "spell_scripts",               SEC_ADMINISTRATOR, true,  &ChatHandler::HandleReloadSpellScriptsCommand,            "", NULL },
            { "spell_target_position",       SEC_ADMINISTRATOR, true,  &ChatHandler::HandleReloadSpellTargetPositionCommand,     "", NULL },
            { "spell_threats",               SEC_ADMINISTRATOR, true,  &ChatHandler::HandleReloadSpellThreatsCommand,            "", NULL },
    +        { "spell_disabled",              SEC_ADMINISTRATOR, true,  &ChatHandler::HandleReloadSpellDisabledCommand,           "", NULL },
    
            { NULL,                          0,                 false, NULL,                                                     "", NULL }
        };
    diff --git a/src/game/Chat.h b/src/game/Chat.h
    index 18ef9cc..08cb422 100644
    --- a/src/game/Chat.h
    +++ b/src/game/Chat.h
    @@ -380,6 +380,7 @@ class ChatHandler
            bool HandleReloadSpellTargetPositionCommand(const char* args);
            bool HandleReloadSpellThreatsCommand(const char* args);
            bool HandleReloadSpellPetAurasCommand(const char* args);
    +        bool HandleReloadSpellDisabledCommand(const char* args);
    
            bool HandleResetAchievementsCommand(const char * args);
            bool HandleResetAllCommand(const char * args);
    diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp
    index 6eeaff4..1b1c243 100644
    --- a/src/game/Level3.cpp
    +++ b/src/game/Level3.cpp
    @@ -162,6 +162,7 @@ bool ChatHandler::HandleReloadAllSpellCommand(const char*)
        HandleReloadSpellTargetPositionCommand("a");
        HandleReloadSpellThreatsCommand("a");
        HandleReloadSpellPetAurasCommand("a");
    +    HandleReloadSpellDisabledCommand("a");
        return true;
    }
    
    @@ -812,6 +813,17 @@ bool ChatHandler::HandleReloadLocalesQuestCommand(const char* /*arg*/)
        return true;
    }
    
    +bool ChatHandler::HandleReloadSpellDisabledCommand(const char* /*arg*/)
    +{
    +    sLog.outString( "Re-Loading spell disabled table...");
    +
    +    objmgr.LoadSpellDisabledEntrys();
    +
    +    SendGlobalSysMessage("DB table `spell_disabled` reloaded.");
    +
    +    return true;
    +}
    +
    bool ChatHandler::HandleLoadScriptsCommand(const char* args)
    {
        if(!LoadScriptingModule(args)) return true;
    diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp
    index 8f3e5e1..7ac4dea 100644
    --- a/src/game/ObjectMgr.cpp
    +++ b/src/game/ObjectMgr.cpp
    @@ -6735,6 +6735,46 @@ const char *ObjectMgr::GetMangosString(int32 entry, int locale_idx) const
        return "<error>";
    }
    
    +void ObjectMgr::LoadSpellDisabledEntrys()
    +{
    +    m_spell_disabled.clear();                                // need for reload case
    +    QueryResult *result = WorldDatabase.Query("SELECT entry, ischeat_spell FROM spell_disabled where active=1");
    +
    +    uint32 total_count = 0;
    +    uint32 cheat_spell_count=0;
    +
    +    if( !result )
    +    {
    +        barGoLink bar( 1 );
    +        bar.step();
    +
    +        sLog.outString();
    +        sLog.outString( ">> Loaded %u disabled spells", total_count );
    +        return;
    +    }
    +
    +    barGoLink bar( result->GetRowCount() );
    +
    +    Field* fields;
    +    do
    +    {
    +        bar.step();
    +        fields = result->Fetch();
    +        uint32 spellid = fields[0].GetUInt32();
    +        bool ischeater = fields[1].GetBool();
    +        m_spell_disabled[spellid] = ischeater;
    +        ++total_count;
    +        if(ischeater)
    +        ++cheat_spell_count;
    +
    +   } while ( result->NextRow() );
    +
    +    delete result;
    +
    +    sLog.outString();
    +    sLog.outString( ">> Loaded %u disabled spells ( %u - is cheaters spells)", total_count, cheat_spell_count);
    +}
    +
    void ObjectMgr::LoadFishingBaseSkillLevel()
    {
        mFishingBaseForArea.clear();                            // for reload case
    diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h
    index 7aa3e30..3a64f38 100644
    --- a/src/game/ObjectMgr.h
    +++ b/src/game/ObjectMgr.h
    @@ -694,7 +694,21 @@ class ObjectMgr
    
            static bool CheckDeclinedNames(std::wstring mainpart, DeclinedName const& names);
    
    -        int GetIndexForLocale(LocaleConstant loc);
    +        void LoadSpellDisabledEntrys();
    +        uint8 IsSpellDisabled(uint32 spellid)
    +        {
    +            uint8 result=0;
    +            SpellDisabledMap::const_iterator itr = m_spell_disabled.find(spellid);
    +            if(itr != m_spell_disabled.end())
    +            {
    +                result=1;
    +                if(itr->second != 0)
    +                    result=2;
    +            }
    +        return result;
    +        }
    +
    +        int GetIndexForLocale(LocaleConstant loc);
            LocaleConstant GetLocaleForIndex(int i);
    
            uint16 GetConditionId(ConditionType condition, uint32 value1, uint32 value2);
    @@ -813,6 +827,9 @@ class ObjectMgr
            typedef std::set<std::wstring> ReservedNamesMap;
            ReservedNamesMap    m_ReservedNames;
    
    +        typedef UNORDERED_MAP<uint32, uint32> SpellDisabledMap;
    +        SpellDisabledMap  m_spell_disabled;
    +
            GraveYardMap        mGraveYardMap;
    
            GameTeleMap         m_GameTeleMap;
    diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
    index 338c00e..b011eb1 100644
    --- a/src/game/Spell.cpp
    +++ b/src/game/Spell.cpp
    @@ -2246,6 +2246,19 @@ void Spell::Prepare(SpellCastTargets const* targets, Aura* triggeredByAura)
            return;
        }
    
    +    if(uint8 result = objmgr.IsSpellDisabled(m_spellInfo->Id))
    +    {
    +        if(m_caster->GetTypeId() == TYPEID_PLAYER)
    +        {
    +            sLog.outDebug("Player %s cast a spell %u which was disabled by server administrator",   m_caster->GetName(), m_spellInfo->Id);
    +            if(result == 2)
    +            sLog.outChar("Player %s cast a spell %u which was disabled by server administrator and marked as CheatSpell",   m_caster->GetName(), m_spellInfo->Id);
    +        }
    +        SendCastResult(SPELL_FAILED_SPELL_UNAVAILABLE);
    +        finish(false);
    +        return;
    +    }
    +
        // Fill cost data
        m_powerCost = CalculatePowerCost();
    
    diff --git a/src/game/World.cpp b/src/game/World.cpp
    index 1bfe545..8cca693 100644
    --- a/src/game/World.cpp
    +++ b/src/game/World.cpp
    @@ -1259,6 +1259,9 @@ void World::SetInitialWorldSettings()
        sLog.outString( "Loading Player Corpses..." );
        objmgr.LoadCorpses();
    
    +    sLog.outString( "Loading Spell disabled..." );
    +    objmgr.LoadSpellDisabledEntrys();
    +
        sLog.outString( "Loading Loot Tables..." );
        sLog.outString();
        LoadLootTables();

    sql part of this patch

    CREATE TABLE spell_disabled (
     entry int(11) unsigned NOT NULL default '0' COMMENT 'spell entry',
     ischeat_spell tinyint(3) unsigned NOT NULL default '0' COMMENT 'mark spell as cheat',
     active tinyint(3) unsigned NOT NULL default '1' COMMENT 'enable check of this spell',
     PRIMARY KEY  (entry)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Dissabled Spell System';

  6. you can test this patch

    diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
    index 23020ca..cc6562e 100644
    --- a/src/game/SpellEffects.cpp
    +++ b/src/game/SpellEffects.cpp
    @@ -1774,6 +1774,33 @@ void Spell::EffectDummy(uint32 i)
                    }
                    return;
                }
    +            switch(m_spellInfo->Id)
    +            {
    +                // Death Grip
    +                case 49560:
    +                case 49576:
    +                {
    +                    if (!unitTarget || !m_caster)
    +                        return;
    +
    +                    float x = m_caster->GetPositionX();
    +                    float y = m_caster->GetPositionY();
    +                    float z = m_caster->GetPositionZ()+1;
    +                    float orientation = unitTarget->GetOrientation();
    +
    +                    m_caster->CastSpell(unitTarget,51399,true,NULL);                
    +                    
    +                    if(unitTarget->GetTypeId() != TYPEID_PLAYER)
    +                        {
    +                        unitTarget->GetMap()->CreatureRelocation((Creature*)unitTarget,x,y,z,orientation);
    +                        ((Creature*)unitTarget)->SendMonsterMove(x, y, z, orientation, MONSTER_MOVE_UNK12, 1);
    +                        }
    +                    else
    +                        unitTarget->NearTeleportTo(x,y,z,orientation,false);
    +
    +                    return;
    +                }
    +            }
                break;
        }

  7. try test something like this

    diff --git a/src/game/Item.cpp b/src/game/Item.cpp
    index 52ed24b..e9475e1 100644
    --- a/src/game/Item.cpp
    +++ b/src/game/Item.cpp
    @@ -741,6 +741,10 @@ bool Item::IsFitToSpellRequirements(SpellEntry const* spellInfo) const
    {
        ItemPrototype const* proto = GetProto();
    
    +    //Lava Lash
    +    if (spellInfo->Id==60103 && spellInfo->EquippedItemClass==ITEM_CLASS_WEAPON)
    +         return true;
    +
        if (spellInfo->EquippedItemClass != -1)                 // -1 == any item class
        {
            if(spellInfo->EquippedItemClass != int32(proto->Class))

  8. hi, try these crash fixes and the report if it help you

    diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
    index b86d35b..7970f7c 100644
    --- a/src/game/SpellAuras.cpp
    +++ b/src/game/SpellAuras.cpp
    @@ -7018,7 +7018,7 @@ void Aura::UnregisterSingleCastAura()
            else
            {
                sLog.outError("Couldn't find the caster of the single target aura (SpellId %u), may crash later!", GetId());
    -            assert(false);
    +            //assert(false);
            }
            m_isSingleTargetAura = false;
        }

    diff --git a/src/game/Object.h b/src/game/Object.h
    index 1a697fe..651e344 100644
    --- a/src/game/Object.h
    +++ b/src/game/Object.h
    @@ -421,7 +421,10 @@ class MANGOS_DLL_SPEC WorldObject : public Object
            float GetDistanceZ(const WorldObject* obj) const;
            bool IsInMap(const WorldObject* obj) const
            {
    -            return IsInWorld() && obj->IsInWorld() && (GetMap() == obj->GetMap()) && InSamePhase(obj);
    +            if(obj)
    +                return IsInWorld() && obj->IsInWorld() && (GetMap() == obj->GetMap()) && InSamePhase(obj);
    +            else
    +                return false;
            }
            bool IsWithinDist3d(float x, float y, float z, float dist2compare) const;
            bool IsWithinDist2d(float x, float y, float dist2compare) const;

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