Вот и сам патчик:
diff -r 97eb78f34422 src/server/game/Chat/Channels/Channel.cpp
--- a/src/server/game/Chat/Channels/Channel.cpp Sat Nov 27 10:32:43 2010 +0700
+++ b/src/server/game/Chat/Channels/Channel.cpp Thu Dec 02 00:33:05 2010 +0700
@@ -678,7 +678,7 @@
data << what;
data << uint8(plr ? plr->chatTag() : 0);
- SendToAll(&data, !players[p].IsModerator() ? p : false);
+ SendToAll(&data, !players[p].IsModerator() ? p : false, sec > SEC_PLAYER, plr->GetTeam());
}
}
@@ -772,13 +772,16 @@
}
}
-void Channel::SendToAll(WorldPacket *data, uint64 p)
+void Channel::SendToAll(WorldPacket *data, uint64 p, bool gm,uint32 Team)
{
for (PlayerList::const_iterator i = players.begin(); i != players.end(); ++i)
{
Player *plr = sObjectMgr.GetPlayer(i->first);
if (plr)
{
+ if(HasFlag(CHANNEL_FLAG_LFG) && !sWorld.getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHANNEL) && !(gm || plr->GetSession()->GetSecurity() > SEC_PLAYER) && Team != plr->GetTeam())
на новых if(HasFlag(CHANNEL_FLAG_LFG) && !sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHANNEL) && !(gm || plr->GetSession()->GetSecurity() > SEC_PLAYER) && Team != plr->GetTeam())
+ continue;
+
if (!p || !plr->GetSocial()->HasIgnore(GUID_LOPART(p)))
plr->GetSession()->SendPacket(data);
}
diff -r 97eb78f34422 src/server/game/Chat/Channels/Channel.h
--- a/src/server/game/Chat/Channels/Channel.h Sat Nov 27 10:32:43 2010 +0700
+++ b/src/server/game/Chat/Channels/Channel.h Thu Dec 02 00:33:05 2010 +0700
@@ -200,7 +200,7 @@
void MakeVoiceOn(WorldPacket *data, uint64 guid); //+ 0x22
void MakeVoiceOff(WorldPacket *data, uint64 guid); //+ 0x23
- void SendToAll(WorldPacket *data, uint64 p = 0);
+ void SendToAll(WorldPacket *data, uint64 p = 0, bool gm = false, uint32 Team = ALLIANCE);
void SendToAllButOne(WorldPacket *data, uint64 who);
void SendToOne(WorldPacket *data, uint64 who);
diff -r 97eb78f34422 src/server/game/Chat/Channels/ChannelMgr.cpp
--- a/src/server/game/Chat/Channels/ChannelMgr.cpp Sat Nov 27 10:32:43 2010 +0700
+++ b/src/server/game/Chat/Channels/ChannelMgr.cpp Thu Dec 02 00:33:05 2010 +0700
@@ -22,14 +22,14 @@
ChannelMgr* channelMgr(uint32 team)
{
- if (sWorld.getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHANNEL))
+ //if (sWorld.getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHANNEL))
return ACE_Singleton<AllianceChannelMgr, ACE_Null_Mutex>::instance(); // cross-faction
- if (team == ALLIANCE)
+ /*if (team == ALLIANCE)
return ACE_Singleton<AllianceChannelMgr, ACE_Null_Mutex>::instance();
if (team == HORDE)
return ACE_Singleton<HordeChannelMgr, ACE_Null_Mutex>::instance();
-
+ */
return NULL;
}
diff -r 97eb78f34422 src/server/game/Server/Protocol/Handlers/GroupHandler.cpp
--- a/src/server/game/Server/Protocol/Handlers/GroupHandler.cpp Sat Nov 27 10:32:43 2010 +0700
+++ b/src/server/game/Server/Protocol/Handlers/GroupHandler.cpp Thu Dec 02 00:33:05 2010 +0700
@@ -84,7 +84,7 @@
return;
// can't group with
- if (!sWorld.getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP) && GetPlayer()->GetTeam() != player->GetTeam())
+ if (!sWorld.getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP) && GetPlayer()->GetTeam() != player->GetTeam() && GetPlayer()->GetSession()->GetSecurity() == SEC_PLAYER)
{
SendPartyResult(PARTY_OP_INVITE, membername, ERR_PLAYER_WRONG_FACTION);
return;
Автор: Skeleton
Сайт автора: https://playerslife.ru
Сайт автора: https://playerslife.ru
Если что-то непонятно, то пишите в комментарии!