Jump to content

[PATCH] Horde & Alliance grouping/trade


Recommended Posts

  • Replies 115
  • Created
  • Last Reply

Top Posters In This Topic

Frozen-In-Time, please, use CODE teg for patch in your post...

QUOTE is not compact and del text format...

For 10060

diff --git a/src/game/Group.cpp b/src/game/Group.cpp
index 7aa97e1..d4449f8 100644
--- a/src/game/Group.cpp
+++ b/src/game/Group.cpp
@@ -308,6 +308,10 @@ bool Group::AddMember(const uint64 &guid, const char* name)

uint32 Group::RemoveMember(const uint64 &guid, const uint8 &method)
{
+    // Frozen Mod
+    BroadcastGroupUpdate();
+    // Frozen Mod
+    
    // remove member and change leader (if need) only if strong more 2 members _before_ member remove
    if(GetMembersCount() > uint32(isBGGroup() ? 1 : 2))           // in BG group case allow 1 members group
    {
@@ -1742,6 +1746,36 @@ void Group::_homebindIfInstance(Player *player)
            player->m_InstanceValid = false;
    }
}
+//Frozen Mod
+void Group::BroadcastGroupUpdate(void)
+{
+    for(member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr)
+    {
+        Player *pp = sObjectMgr.GetPlayer(citr->guid);
+        if(pp && pp->IsInWorld())
+        {
+            pp->ForceValuesUpdateAtIndex(UNIT_FIELD_BYTES_2);
+            pp->ForceValuesUpdateAtIndex(UNIT_FIELD_FACTIONTEMPLATE);
+            DEBUG_LOG("-- Forced group value update for '%s'", pp->GetName());
+            if(pp->GetPet())
+            {
+                pp->GetPet()->ForceValuesUpdateAtIndex(UNIT_FIELD_BYTES_2);
+                pp->GetPet()->ForceValuesUpdateAtIndex(UNIT_FIELD_FACTIONTEMPLATE);
+                DEBUG_LOG("-- Forced group value update for '%s' pet '%s'", pp->GetName(), pp->GetPet()->GetName());
+            }
+            for(uint32 i = 0; i < MAX_TOTEM_SLOT; ++i)
+            {
+                if(Unit *totem = Unit::GetUnit(*pp, pp->m_TotemSlot[i]))
+                {
+                    totem->ForceValuesUpdateAtIndex(UNIT_FIELD_BYTES_2);
+                    totem->ForceValuesUpdateAtIndex(UNIT_FIELD_FACTIONTEMPLATE);
+                    DEBUG_LOG("-- Forced group value update for '%s' totem #%u", pp->GetName(), i);
+                }
+            }
+        }
+    }
+}
+// Frozen Mod

static void RewardGroupAtKill_helper(Player* pGroupGuy, Unit* pVictim, uint32 count, bool PvP, float group_rate, uint32 sum_level, bool is_dungeon, Player* not_gray_member_with_max_level, Player* member_with_max_level, uint32 xp )
{
diff --git a/src/game/Group.h b/src/game/Group.h
index c9cffe3..63b0627 100644
--- a/src/game/Group.h
+++ b/src/game/Group.h
@@ -357,6 +357,10 @@ class MANGOS_DLL_SPEC Group
        InstanceGroupBind* GetBoundInstance(Player* player);
        InstanceGroupBind* GetBoundInstance(Map* aMap, Difficulty difficulty);
        BoundInstancesMap& GetBoundInstances(Difficulty difficulty) { return m_boundInstances[difficulty]; }
+        
+        // Frozen Mod
+        void BroadcastGroupUpdate(void);
+        // Frozen Mod

    protected:
        bool _addMember(const uint64 &guid, const char* name, bool isAssistant=false);
diff --git a/src/game/GroupHandler.cpp b/src/game/GroupHandler.cpp
index d73b233..9cedf65 100644
--- a/src/game/GroupHandler.cpp
+++ b/src/game/GroupHandler.cpp
@@ -207,6 +207,10 @@ void WorldSession::HandleGroupAcceptOpcode( WorldPacket & recv_data )
    // everything is fine, do it, PLAYER'S GROUP IS SET IN ADDMEMBER!!!
    if(!group->AddMember(GetPlayer()->GetGUID(), GetPlayer()->GetName()))
        return;
+    
+    // Frozen Mod
+    group->BroadcastGroupUpdate();
+    // Frozen Mod
}

void WorldSession::HandleGroupDeclineOpcode( WorldPacket & /*recv_data*/ )
diff --git a/src/game/Object.cpp b/src/game/Object.cpp
index c78a2e3..d31d6d5 100644
--- a/src/game/Object.cpp
+++ b/src/game/Object.cpp
@@ -657,6 +657,54 @@ void Object::BuildValuesUpdate(uint8 updatetype, ByteBuffer * data, UpdateMask *
                    else
                        *data << (m_uint32Values[ index ] & ~UNIT_DYNFLAG_TAPPED);
                }
+                
+                // Frozen Mod
+                else if(index == UNIT_FIELD_BYTES_2 || index == UNIT_FIELD_FACTIONTEMPLATE)
+                {
+                    bool ch = false;
+                    
+                    if((GetTypeId() == TYPEID_PLAYER || GetTypeId() == TYPEID_UNIT) && target != this)
+                    {
+                        bool forcefriendly = false; // bool for pets/totems to offload more code from the big if below
+                        
+                        if(GetTypeId() == TYPEID_UNIT)
+                        {
+                            forcefriendly = (((Creature*)this)->isTotem() || ((Creature*)this)->isPet())
+                            && ((Creature*)this)->GetOwner()->GetTypeId() == TYPEID_PLAYER
+                            && ((Creature*)this)->GetOwner()->IsFriendlyTo(target) // pet owner must be friendly to target
+                            && ((Creature*)this)->GetOwner() != target // no need to send hackfix to pet owner
+                            && (target->IsInSameGroupWith((Player*)((Creature*)this)->GetOwner()) || target->IsInSameRaidWith((Player*)((Creature*)this)->GetOwner()));
+                        }
+
+                        if(((Unit*)this)->IsSpoofSamePlayerFaction() || forcefriendly || (target->GetTypeId() == TYPEID_PLAYER && GetTypeId() == TYPEID_PLAYER && (target->IsInSameGroupWith((Player*)this) || target->IsInSameRaidWith((Player*)this))))
+                        {
+                            if(index == UNIT_FIELD_BYTES_2)
+                            {
+                                DEBUG_LOG("-- VALUES_UPDATE: Sending '%s' the blue-group-fix from '%s' (flag)", target->GetName(), ((Unit*)this)->GetName());
+                                *data << ( m_uint32Values[ index ] & (UNIT_BYTE2_FLAG_SANCTUARY << 8) ); // this flag is at uint8 offset 1 !!
+                                ch = true;
+                            }
+                            else if(index == UNIT_FIELD_FACTIONTEMPLATE)
+                            {
+                                FactionTemplateEntry const *ft1, *ft2;
+                                ft1 = ((Unit*)this)->getFactionTemplateEntry();
+                                ft2 = ((Unit*)target)->getFactionTemplateEntry();
+                                
+                                if(ft1 && ft2 && (!ft1->IsFriendlyTo(*ft2) || ((Unit*)this)->IsSpoofSamePlayerFaction()))
+                                {
+                                    uint32 faction = ((Player*)target)->getFaction(); // pretend that all other HOSTILE players have own faction, to allow follow, heal, rezz (trade wont work)
+                                    DEBUG_LOG("-- VALUES_UPDATE: Sending '%s' the blue-group-fix from '%s' (faction %u)", target->GetName(), ((Unit*)this)->GetName(), faction);
+                                    *data << uint32(faction);
+                                    ch = true;
+                                }
+                            }
+                        }
+                    }
+                    
+                    if(!ch)
+                        *data << m_uint32Values[ index ];
+                }
+                // Frozen Mod
                else
                {
                    // send in current format (float as float, uint32 as uint32)
@@ -1664,6 +1712,21 @@ Creature* WorldObject::SummonCreature(uint32 id, float x, float y, float z, floa
    return pCreature;
}

+// Frozen Mod
+void Object::ForceValuesUpdateAtIndex(uint32 i)
+{
+    m_uint32Values_mirror[i] = GetUInt32Value(i) + 1; // makes server think the field changed
+    if(m_inWorld)
+    {
+        if(!m_objectUpdated)
+        {
+            AddToClientUpdateList();
+            m_objectUpdated = true;
+        }
+    }
+}
+// Frozen Mod
+
namespace MaNGOS
{
    class NearUsedPosDo
diff --git a/src/game/Object.h b/src/game/Object.h
index c214a9d..6188c7e 100644
--- a/src/game/Object.h
+++ b/src/game/Object.h
@@ -276,6 +276,11 @@ class MANGOS_DLL_SPEC Object

        virtual bool hasQuest(uint32 /* quest_id */) const { return false; }
        virtual bool hasInvolvedQuest(uint32 /* quest_id */) const { return false; }
+        
+        // Frozen Mod
+        void ForceValuesUpdateAtIndex(uint32);
+        // Frozen Mod
+        
    protected:

        Object ( );
diff --git a/src/game/TradeHandler.cpp b/src/game/TradeHandler.cpp
index 5fc3ec4..69c3d75 100644
--- a/src/game/TradeHandler.cpp
+++ b/src/game/TradeHandler.cpp
@@ -604,11 +604,13 @@ void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket)
        return;
    }

-    if (pOther->GetTeam() !=_player->GetTeam() )
+    // Frozen Mod
+    /* if (pOther->GetTeam() !=_player->GetTeam() )
    {
        SendTradeStatus(TRADE_STATUS_WRONG_FACTION);
        return;
-    }
+    } */
+    // Frozen Mod

    if (!pOther->IsWithinDistInMap(_player,10.0f,false))
    {
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index d0c82d8..63df6f6 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -251,6 +251,10 @@ Unit::Unit()
    // remove aurastates allowing special moves
    for(int i=0; i < MAX_REACTIVE; ++i)
        m_reactiveTimer[i] = 0;
+        
+    // Frozen Mod
+    m_spoofSamePlayerFaction = false;
+    // Frozen Mod
}

Unit::~Unit()
diff --git a/src/game/Unit.h b/src/game/Unit.h
index d02235d..4299f44 100644
--- a/src/game/Unit.h
+++ b/src/game/Unit.h
@@ -1829,6 +1829,11 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
        PetAuraSet m_petAuras;
        void AddPetAura(PetAura const* petSpell);
        void RemovePetAura(PetAura const* petSpell);
+        
+        // Frozen Mod
+        inline void SetSpoofSamePlayerFaction(bool b) { m_spoofSamePlayerFaction = b; }
+        inline bool IsSpoofSamePlayerFaction(void) {return m_spoofSamePlayerFaction; }
+        // Frozen Mod

        // Movement info
        MovementInfo m_movementInfo;
@@ -1880,8 +1885,12 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
        uint32 m_reactiveTimer[MAX_REACTIVE];
        uint32 m_regenTimer;
        uint32 m_lastManaUseTimer;
+        
+        // Frozen Mod
+        bool m_spoofSamePlayerFaction : 1;
+        // Frozen Mod

-    private:
+    public:
        void CleanupDeletedAuras();

        bool IsTriggeredAtSpellProcEvent(Unit *pVictim, Aura* aura, SpellEntry const* procSpell, uint32 procFlag, uint32 procExtra, WeaponAttackType attType, bool isVictim, bool active, SpellProcEventEntry const*& spellProcEvent );

Link to comment
Share on other sites

  • 2 weeks later...

OK, I apologize in advance for my newbness. I have been trying to work out how ot patch this into my current build. I downloaded the tarball from the wiki link and compiled with Microsoft Visual C++. I just cannot work out what I need to do to intergrate this patch into it. Thank you for time and help on this.

Edit: Newbness fixed. Patched and working. Nice, but I misread exactly what it does. No Alliance doing Horde Quests. It still does help, thank you.

Link to comment
Share on other sites

  • 4 weeks later...
  • 3 weeks later...

../../../src/game/Group.cpp: In member function ‘void Group::BroadcastGroupUpdate()’:
../../../src/game/Group.cpp:1847: error: ‘GetUnit’ is not a member of ‘Unit’
make[3]: *** [Group.o] Error 1
make[3]: *** Waiting for unfinished jobs....
mv -f .deps/GuardAI.Tpo .deps/GuardAI.Po
mv -f .deps/HostileRefManager.Tpo .deps/HostileRefManager.Po
mv -f .deps/GroupHandler.Tpo .deps/GroupHandler.Po
mv -f .deps/HomeMovementGenerator.Tpo .deps/HomeMovementGenerator.Po
mv -f .deps/GuildHandler.Tpo .deps/GuildHandler.Po
mv -f .deps/DBCStores.Tpo .deps/DBCStores.Po
mv -f .deps/Guild.Tpo .deps/Guild.Po
make[3]: Leaving directory `/root/mangos/objdir/src/game'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/root/mangos/objdir/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/mangos/objdir'
make: *** [all] Error 2

KiriX's Patch does not compile on mangos r. 10397.

Anyone here who has a working patch for latest rev? Thx

Link to comment
Share on other sites

../../../src/game/Group.cpp: In member function ‘void Group::BroadcastGroupUpdate()’:
../../../src/game/Group.cpp:1847: error: ‘GetUnit’ is not a member of ‘Unit’
make[3]: *** [Group.o] Error 1
make[3]: *** Waiting for unfinished jobs....
mv -f .deps/GuardAI.Tpo .deps/GuardAI.Po
mv -f .deps/HostileRefManager.Tpo .deps/HostileRefManager.Po
mv -f .deps/GroupHandler.Tpo .deps/GroupHandler.Po
mv -f .deps/HomeMovementGenerator.Tpo .deps/HomeMovementGenerator.Po
mv -f .deps/GuildHandler.Tpo .deps/GuildHandler.Po
mv -f .deps/DBCStores.Tpo .deps/DBCStores.Po
mv -f .deps/Guild.Tpo .deps/Guild.Po
make[3]: Leaving directory `/root/mangos/objdir/src/game'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/root/mangos/objdir/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/mangos/objdir'
make: *** [all] Error 2

KiriX's Patch does not compile on mangos r. 10397.

Anyone here who has a working patch for latest rev? Thx

Try this:

diff --git a/src/game/Group.cpp b/src/game/Group.cpp
index 14d683b..ca85467 100644
--- a/src/game/Group.cpp
+++ b/src/game/Group.cpp
@@ -347,6 +347,10 @@ bool Group::AddMember(ObjectGuid guid, const char* name)

uint32 Group::RemoveMember(ObjectGuid guid, uint8 method)
{
+    // Frozen Mod
+    BroadcastGroupUpdate();
+    // Frozen Mod
+    
    // remove member and change leader (if need) only if strong more 2 members _before_ member remove
    if (GetMembersCount() > uint32(isBGGroup() ? 1 : 2))    // in BG group case allow 1 members group
    {
@@ -1821,6 +1825,36 @@ void Group::_homebindIfInstance(Player *player)
        }
    }
}
+//Frozen Mod
+void Group::BroadcastGroupUpdate(void)
+{
+    for(member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr)
+    {
+        Player *pp = sObjectMgr.GetPlayer(citr->guid);
+        if(pp && pp->IsInWorld())
+        {
+            pp->ForceValuesUpdateAtIndex(UNIT_FIELD_BYTES_2);
+            pp->ForceValuesUpdateAtIndex(UNIT_FIELD_FACTIONTEMPLATE);
+            DEBUG_LOG("-- Forced group value update for '%s'", pp->GetName());
+            if(pp->GetPet())
+            {
+                pp->GetPet()->ForceValuesUpdateAtIndex(UNIT_FIELD_BYTES_2);
+                pp->GetPet()->ForceValuesUpdateAtIndex(UNIT_FIELD_FACTIONTEMPLATE);
+                DEBUG_LOG("-- Forced group value update for '%s' pet '%s'", pp->GetName(), pp->GetPet()->GetName());
+            }
+            for(uint32 i = 0; i < MAX_TOTEM_SLOT; ++i)
+            {
+                if(Unit *totem = pp->GetMap()->GetUnit(pp->m_TotemSlot[i]))
+                {
+                    totem->ForceValuesUpdateAtIndex(UNIT_FIELD_BYTES_2);
+                    totem->ForceValuesUpdateAtIndex(UNIT_FIELD_FACTIONTEMPLATE);
+                    DEBUG_LOG("-- Forced group value update for '%s' totem #%u", pp->GetName(), i);
+                }
+            }
+        }
+    }
+}
+// Frozen Mod

static void RewardGroupAtKill_helper(Player* pGroupGuy, Unit* pVictim, uint32 count, bool PvP, float group_rate, uint32 sum_level, bool is_dungeon, Player* not_gray_member_with_max_level, Player* member_with_max_level, uint32 xp )
{
diff --git a/src/game/Group.h b/src/game/Group.h
index 2582cae..b34d404 100644
--- a/src/game/Group.h
+++ b/src/game/Group.h
@@ -353,6 +353,10 @@ class MANGOS_DLL_SPEC Group
        InstanceGroupBind* GetBoundInstance(uint32 mapId, Player* player);
        InstanceGroupBind* GetBoundInstance(Map* aMap, Difficulty difficulty);
        BoundInstancesMap& GetBoundInstances(Difficulty difficulty) { return m_boundInstances[difficulty]; }
+        
+        // Frozen Mod
+        void BroadcastGroupUpdate(void);
+        // Frozen Mod

    protected:
        bool _addMember(ObjectGuid guid, const char* name, bool isAssistant=false);
diff --git a/src/game/GroupHandler.cpp b/src/game/GroupHandler.cpp
index 04da05c..d161448 100644
--- a/src/game/GroupHandler.cpp
+++ b/src/game/GroupHandler.cpp
@@ -208,6 +208,10 @@ void WorldSession::HandleGroupAcceptOpcode( WorldPacket & recv_data )
    // everything is fine, do it, PLAYER'S GROUP IS SET IN ADDMEMBER!!!
    if(!group->AddMember(GetPlayer()->GetObjectGuid(), GetPlayer()->GetName()))
        return;
+    
+    // Frozen Mod
+    group->BroadcastGroupUpdate();
+    // Frozen Mod
}

void WorldSession::HandleGroupDeclineOpcode( WorldPacket & /*recv_data*/ )
diff --git a/src/game/Object.cpp b/src/game/Object.cpp
index f4a8fa7..20ab8e8 100644
--- a/src/game/Object.cpp
+++ b/src/game/Object.cpp
@@ -662,6 +662,54 @@ void Object::BuildValuesUpdate(uint8 updatetype, ByteBuffer * data, UpdateMask *
                    else
                        *data << (m_uint32Values[ index ] & ~UNIT_DYNFLAG_TAPPED);
                }
+                
+                // Frozen Mod
+                else if(index == UNIT_FIELD_BYTES_2 || index == UNIT_FIELD_FACTIONTEMPLATE)
+                {
+                    bool ch = false;
+                    
+                    if((GetTypeId() == TYPEID_PLAYER || GetTypeId() == TYPEID_UNIT) && target != this)
+                    {
+                        bool forcefriendly = false; // bool for pets/totems to offload more code from the big if below
+                        
+                        if(GetTypeId() == TYPEID_UNIT)
+                        {
+                            forcefriendly = (((Creature*)this)->isTotem() || ((Creature*)this)->isPet())
+                            && ((Creature*)this)->GetOwner()->GetTypeId() == TYPEID_PLAYER
+                            && ((Creature*)this)->GetOwner()->IsFriendlyTo(target) // pet owner must be friendly to target
+                            && ((Creature*)this)->GetOwner() != target // no need to send hackfix to pet owner
+                            && (target->IsInSameGroupWith((Player*)((Creature*)this)->GetOwner()) || target->IsInSameRaidWith((Player*)((Creature*)this)->GetOwner()));
+                        }
+
+                        if(((Unit*)this)->IsSpoofSamePlayerFaction() || forcefriendly || (target->GetTypeId() == TYPEID_PLAYER && GetTypeId() == TYPEID_PLAYER && (target->IsInSameGroupWith((Player*)this) || target->IsInSameRaidWith((Player*)this))))
+                        {
+                            if(index == UNIT_FIELD_BYTES_2)
+                            {
+                                DEBUG_LOG("-- VALUES_UPDATE: Sending '%s' the blue-group-fix from '%s' (flag)", target->GetName(), ((Unit*)this)->GetName());
+                                *data << ( m_uint32Values[ index ] & (UNIT_BYTE2_FLAG_SANCTUARY << 8) ); // this flag is at uint8 offset 1 !!
+                                ch = true;
+                            }
+                            else if(index == UNIT_FIELD_FACTIONTEMPLATE)
+                            {
+                                FactionTemplateEntry const *ft1, *ft2;
+                                ft1 = ((Unit*)this)->getFactionTemplateEntry();
+                                ft2 = ((Unit*)target)->getFactionTemplateEntry();
+                                
+                                if(ft1 && ft2 && (!ft1->IsFriendlyTo(*ft2) || ((Unit*)this)->IsSpoofSamePlayerFaction()))
+                                {
+                                    uint32 faction = ((Player*)target)->getFaction(); // pretend that all other HOSTILE players have own faction, to allow follow, heal, rezz (trade wont work)
+                                    DEBUG_LOG("-- VALUES_UPDATE: Sending '%s' the blue-group-fix from '%s' (faction %u)", target->GetName(), ((Unit*)this)->GetName(), faction);
+                                    *data << uint32(faction);
+                                    ch = true;
+                                }
+                            }
+                        }
+                    }
+                    
+                    if(!ch)
+                        *data << m_uint32Values[ index ];
+                }
+                // Frozen Mod
                else
                {
                    // send in current format (float as float, uint32 as uint32)
@@ -1664,6 +1712,21 @@ Creature* WorldObject::SummonCreature(uint32 id, float x, float y, float z, floa
    return pCreature;
}

+// Frozen Mod
+void Object::ForceValuesUpdateAtIndex(uint32 i)
+{
+    m_uint32Values_mirror[i] = GetUInt32Value(i) + 1; // makes server think the field changed
+    if(m_inWorld)
+    {
+        if(!m_objectUpdated)
+        {
+            AddToClientUpdateList();
+            m_objectUpdated = true;
+        }
+    }
+}
+// Frozen Mod
+
namespace MaNGOS
{
    class NearUsedPosDo
diff --git a/src/game/Object.h b/src/game/Object.h
index c900e4d..4e8063a 100644
--- a/src/game/Object.h
+++ b/src/game/Object.h
@@ -288,6 +288,11 @@ class MANGOS_DLL_SPEC Object

        virtual bool hasQuest(uint32 /* quest_id */) const { return false; }
        virtual bool hasInvolvedQuest(uint32 /* quest_id */) const { return false; }
+        
+        // Frozen Mod
+        void ForceValuesUpdateAtIndex(uint32);
+        // Frozen Mod
+        
    protected:

        Object ( );
diff --git a/src/game/TradeHandler.cpp b/src/game/TradeHandler.cpp
index 6abb061..8fb7f64 100644
--- a/src/game/TradeHandler.cpp
+++ b/src/game/TradeHandler.cpp
@@ -604,11 +604,13 @@ void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket)
        return;
    }

-    if (pOther->GetTeam() !=_player->GetTeam() )
+    // Frozen Mod
+    /* if (pOther->GetTeam() !=_player->GetTeam() )
    {
        SendTradeStatus(TRADE_STATUS_WRONG_FACTION);
        return;
-    }
+    } */
+    // Frozen Mod

    if (!pOther->IsWithinDistInMap(_player,10.0f,false))
    {
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 8e71766..24648dd 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -243,6 +243,10 @@ Unit::Unit()
    // remove aurastates allowing special moves
    for(int i=0; i < MAX_REACTIVE; ++i)
        m_reactiveTimer[i] = 0;
+        
+    // Frozen Mod
+    m_spoofSamePlayerFaction = false;
+    // Frozen Mod
}

Unit::~Unit()
diff --git a/src/game/Unit.h b/src/game/Unit.h
index 4fda849..cc8fb8b 100644
--- a/src/game/Unit.h
+++ b/src/game/Unit.h
@@ -1884,6 +1884,11 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
        PetAuraSet m_petAuras;
        void AddPetAura(PetAura const* petSpell);
        void RemovePetAura(PetAura const* petSpell);
+        
+        // Frozen Mod
+        inline void SetSpoofSamePlayerFaction(bool b) { m_spoofSamePlayerFaction = b; }
+        inline bool IsSpoofSamePlayerFaction(void) {return m_spoofSamePlayerFaction; }
+        // Frozen Mod

        // Movement info
        MovementInfo m_movementInfo;
@@ -1936,8 +1941,12 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
        uint32 m_reactiveTimer[MAX_REACTIVE];
        uint32 m_regenTimer;
        uint32 m_lastManaUseTimer;
+        
+        // Frozen Mod
+        bool m_spoofSamePlayerFaction : 1;
+        // Frozen Mod

-    private:
+    public:
        void CleanupDeletedAuras();

        // player or player's pet

Link to comment
Share on other sites

hmm tyed it but getting

3>..\\..\\src\\game\\Group.cpp(1847) : error C2248: 'Unit::m_TotemSlot' : cannot access private member declared in class 'Unit'

3> c:\\mangos1\\src\\game\\Unit.h(2020) : see declaration of 'Unit::m_TotemSlot'

3> c:\\mangos1\\src\\game\\Unit.h(1119) : see declaration of 'Unit'

mabye you know whats wrong?

Link to comment
Share on other sites

hmm oke added it manually but still get

3>..\\..\\src\\game\\Object.cpp(677) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(677) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Object.cpp(677) : warning C4390: ';' : empty controlled statement found; is this the intent?

3>..\\..\\src\\game\\Object.cpp(677) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(677) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Object.cpp(678) : error C2143: syntax error : missing ';' before '{'

3>..\\..\\src\\game\\Object.cpp(678) : warning C4552: '!=' : operator has no effect; expected operator with side-effect

3>..\\..\\src\\game\\Object.cpp(683) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(683) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Object.cpp(683) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(683) : error C3861: 'isTotem': identifier not found

3>..\\..\\src\\game\\Object.cpp(683) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Object.cpp(684) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(683) : error C3861: 'isPet': identifier not found

3>..\\..\\src\\game\\Object.cpp(684) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(684) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(684) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(684) : error C3861: 'GetOwner': identifier not found

3>..\\..\\src\\game\\Object.cpp(685) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(685) : warning C4554: '&' : check operator precedence for possible error; use parentheses to clarify precedence

3>..\\..\\src\\game\\Object.cpp(685) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(685) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(685) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(685) : error C3861: 'GetOwner': identifier not found

3>..\\..\\src\\game\\Object.cpp(686) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(685) : error C3861: 'IsFriendlyTo': identifier not found

3>..\\..\\src\\game\\Object.cpp(686) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(686) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(687) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(686) : error C3861: 'GetOwner': identifier not found

3>..\\..\\src\\game\\Object.cpp(687) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(687) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(687) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Object.cpp(687) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(687) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Object.cpp(687) : error C3861: 'IsInSameGroupWith': identifier not found

3>..\\..\\src\\game\\Object.cpp(687) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Object.cpp(687) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(687) : error C3861: 'GetOwner': identifier not found

3>..\\..\\src\\game\\Object.cpp(687) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(687) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Object.cpp(687) : error C3861: 'IsInSameRaidWith': identifier not found

3>..\\..\\src\\game\\Object.cpp(687) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Object.cpp(687) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Object.cpp(687) : error C3861: 'GetOwner': identifier not found

3>..\\..\\src\\game\\Object.cpp(690) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(690) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Object.cpp(690) : warning C4390: ';' : empty controlled statement found; is this the intent?

3>..\\..\\src\\game\\Object.cpp(690) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(690) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Object.cpp(690) : error C3861: 'IsSpoofSamePlayerFaction': identifier not found

3>..\\..\\src\\game\\Object.cpp(690) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(690) : warning C4554: '&' : check operator precedence for possible error; use parentheses to clarify precedence

3>..\\..\\src\\game\\Object.cpp(690) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(690) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(690) : warning C4554: '&' : check operator precedence for possible error; use parentheses to clarify precedence

3>..\\..\\src\\game\\Object.cpp(690) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(690) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(690) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Object.cpp(690) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(690) : error C3861: 'IsInSameGroupWith': identifier not found

3>..\\..\\src\\game\\Object.cpp(690) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Object.cpp(690) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Object.cpp(690) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Object.cpp(691) : error C2143: syntax error : missing ';' before '{'

3>..\\..\\src\\game\\Object.cpp(690) : error C3861: 'IsInSameRaidWith': identifier not found

3>..\\..\\src\\game\\Object.cpp(694) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(694) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Object.cpp(694) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(694) : error C3861: 'GetName': identifier not found

3>..\\..\\src\\game\\Object.cpp(694) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Object.cpp(694) : error C3861: 'GetName': identifier not found

3>..\\..\\src\\game\\Object.cpp(695) : error C2065: 'lt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(695) : error C2065: 'lt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(695) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(695) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Object.cpp(695) : error C2065: 'lt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(695) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Object.cpp(695) : error C2065: 'lt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(695) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Object.cpp(695) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Object.cpp(701) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(701) : error C3861: 'getFactionTemplateEntry': identifier not found

3>..\\..\\src\\game\\Object.cpp(702) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(702) : error C3861: 'getFactionTemplateEntry': identifier not found

3>..\\..\\src\\game\\Object.cpp(704) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(704) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Object.cpp(704) : warning C4390: ';' : empty controlled statement found; is this the intent?

3>..\\..\\src\\game\\Object.cpp(704) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(704) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(704) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(704) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(704) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Object.cpp(704) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(704) : error C3861: 'IsFriendlyTo': identifier not found

3>..\\..\\src\\game\\Object.cpp(704) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Object.cpp(704) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Object.cpp(705) : error C2143: syntax error : missing ';' before '{'

3>..\\..\\src\\game\\Object.cpp(704) : error C3861: 'IsSpoofSamePlayerFaction': identifier not found

3>..\\..\\src\\game\\Object.cpp(706) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(706) : error C3861: 'getFaction': identifier not found

3>..\\..\\src\\game\\Object.cpp(707) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(707) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Object.cpp(707) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(707) : error C3861: 'GetName': identifier not found

3>..\\..\\src\\game\\Object.cpp(707) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Object.cpp(707) : error C3861: 'GetName': identifier not found

3>..\\..\\src\\game\\Object.cpp(708) : error C2065: 'lt' : undeclared identifier

3>..\\..\\src\\game\\Object.cpp(708) : fatal error C1003: error count exceeds 100; stopping compilation

3>GroupHandler.cpp

3>..\\..\\src\\game\\GroupHandler.cpp(214) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\GroupHandler.cpp(214) : error C3861: 'BroadcastGroupUpdate': identifier not found

3>..\\..\\src\\game\\Unit.cpp(249) : error C2065: 'm_spoofSamePlayerFaction' : undeclared identifier

3>Group.cpp

3>..\\..\\src\\game\\Group.cpp(351) : error C3861: 'BroadcastGroupUpdate': identifier not found

3>..\\..\\src\\game\\Group.cpp(1829) : error C2039: 'BroadcastGroupUpdate' : is not a member of 'Group'

3> c:\\mangos1\\src\\game\\Group.h(183) : see declaration of 'Group'

3>..\\..\\src\\game\\Group.cpp(1831) : error C2065: 'member_citerator' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1831) : error C2146: syntax error : missing ';' before identifier 'citr'

3>..\\..\\src\\game\\Group.cpp(1831) : error C2065: 'citr' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1831) : error C2065: 'm_memberSlots' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1831) : error C2228: left of '.begin' must have class/struct/union

3> type is ''unknown-type''

3>..\\..\\src\\game\\Group.cpp(1831) : error C2065: 'citr' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1831) : error C2065: 'm_memberSlots' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1831) : error C2228: left of '.end' must have class/struct/union

3> type is ''unknown-type''

3>..\\..\\src\\game\\Group.cpp(1831) : error C2143: syntax error : missing ')' before '++'

3>..\\..\\src\\game\\Group.cpp(1831) : error C2059: syntax error : ';'

3>..\\..\\src\\game\\Group.cpp(1831) : error C2065: 'citr' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1831) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Group.cpp(1832) : error C2143: syntax error : missing ';' before '{'

3>..\\..\\src\\game\\Group.cpp(1833) : error C2065: 'citr' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1833) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1833) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Group.cpp(1833) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Group.cpp(1833) : error C2065: 'guid' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1834) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1834) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Group.cpp(1834) : warning C4390: ';' : empty controlled statement found; is this the intent?

3>..\\..\\src\\game\\Group.cpp(1834) : error C2065: 'amp' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1834) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1834) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Group.cpp(1835) : error C2143: syntax error : missing ';' before '{'

3>..\\..\\src\\game\\Group.cpp(1834) : error C3861: 'IsInWorld': identifier not found

3>..\\..\\src\\game\\Group.cpp(1836) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1836) : error C3861: 'ForceValuesUpdateAtIndex': identifier not found

3>..\\..\\src\\game\\Group.cpp(1837) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1837) : error C3861: 'ForceValuesUpdateAtIndex': identifier not found

3>..\\..\\src\\game\\Group.cpp(1838) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1838) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Group.cpp(1838) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Group.cpp(1838) : error C3861: 'GetName': identifier not found

3>..\\..\\src\\game\\Group.cpp(1839) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1839) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Group.cpp(1839) : warning C4390: ';' : empty controlled statement found; is this the intent?

3>..\\..\\src\\game\\Group.cpp(1839) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Group.cpp(1840) : error C2143: syntax error : missing ';' before '{'

3>..\\..\\src\\game\\Group.cpp(1839) : error C3861: 'GetPet': identifier not found

3>..\\..\\src\\game\\Group.cpp(1841) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1841) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1841) : error C3861: 'GetPet': identifier not found

3>..\\..\\src\\game\\Group.cpp(1841) : error C3861: 'ForceValuesUpdateAtIndex': identifier not found

3>..\\..\\src\\game\\Group.cpp(1842) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1842) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1842) : error C3861: 'GetPet': identifier not found

3>..\\..\\src\\game\\Group.cpp(1842) : error C3861: 'ForceValuesUpdateAtIndex': identifier not found

3>..\\..\\src\\game\\Group.cpp(1843) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1843) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Group.cpp(1843) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1843) : error C3861: 'GetName': identifier not found

3>..\\..\\src\\game\\Group.cpp(1843) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1843) : error C3861: 'GetPet': identifier not found

3>..\\..\\src\\game\\Group.cpp(1843) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Group.cpp(1843) : error C3861: 'GetName': identifier not found

3>..\\..\\src\\game\\Group.cpp(1845) : error C2065: 'lt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1845) : error C2143: syntax error : missing ')' before '++'

3>..\\..\\src\\game\\Group.cpp(1845) : error C2059: syntax error : ';'

3>..\\..\\src\\game\\Group.cpp(1845) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Group.cpp(1846) : error C2143: syntax error : missing ';' before '{'

3>..\\..\\src\\game\\Group.cpp(1847) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1847) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Group.cpp(1847) : warning C4390: ';' : empty controlled statement found; is this the intent?

3>..\\..\\src\\game\\Group.cpp(1847) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1847) : error C3861: 'GetMap': identifier not found

3>..\\..\\src\\game\\Group.cpp(1847) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1847) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Group.cpp(1847) : error C3861: 'GetUnit': identifier not found

3>..\\..\\src\\game\\Group.cpp(1847) : error C2065: 'm_TotemSlot' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1847) : error C2065: 'i' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1847) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Group.cpp(1847) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Group.cpp(1848) : error C2143: syntax error : missing ';' before '{'

3>..\\..\\src\\game\\Group.cpp(1849) : error C2065: 'totem' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1849) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1849) : error C3861: 'ForceValuesUpdateAtIndex': identifier not found

3>..\\..\\src\\game\\Group.cpp(1850) : error C2065: 'totem' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1850) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1850) : error C3861: 'ForceValuesUpdateAtIndex': identifier not found

3>..\\..\\src\\game\\Group.cpp(1851) : error C2065: 'gt' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1851) : error C2143: syntax error : missing ')' before ';'

3>..\\..\\src\\game\\Group.cpp(1851) : error C2065: 'i' : undeclared identifier

3>..\\..\\src\\game\\Group.cpp(1851) : error C2059: syntax error : ')'

3>..\\..\\src\\game\\Group.cpp(1851) : error C3861: 'GetName': identifier not found

Link to comment
Share on other sites

hi i have .... YTDB_0.13.8_R562_MaNGOS_R10408_SD2_R1804_ACID_R304_RuDB_R38.2 __________ ACID 3.0.5 - Full Release for Mangos (3.3.5a Client) __________ cane i use ti there???

i need it for one Reason low popoulation server form 15 do 50 ppl onlin in day

i need it to start raid

becaus momental they cant get inv and enter bt they are still lice a enemy ally cant hiling hord or hord cant hiling ally

the good one is the catn atac when the are in ... bt all AOE spell demage get him HP

so i need help THX

Link to comment
Share on other sites

  • 2 weeks later...

I have some odd testing results, I disabled this modification on my test server and I can still group/trade/heal/anything with the opposite faction, could it be this is fixed in the core itself. Removing this patch also seems to have removed my pesky random green mob bug.

Edit: Bug reappeared, disregard the above, I suck cock.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • 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