rendered paste bodyIndex: src/game/ChatHandler.cpp===================================================================--- src/game/ChatHandler.cpp (revision 748)+++ src/game/ChatHandler.cpp (working copy)@@ -158,7 +158,18 @@ { Guild *pGuild = objmgr.GetGuild( GetPlayer()->GetGuildId() ); if(pGuild)- pGuild->OfficerChannelChat(this, msg);+ {+ if(pGuild->HasRankRight(GetPlayer()->GetGuildRank(), GR_RIGHT_OFFCHATSPEAK))+ pGuild->OfficerChannelChat(this, msg);+ else+ {+ WorldPacket data2(SMSG_GUILD_COMMAND_RESULT, 100);+ data2 << uint32(GUILD_OFFICER_S);+ data2 << pGuild->GetGuildName();+ data2 << uint32(C_R_DONT_HAVE_PERMISSION);+ SendPacket(&data2);+ }+ } } sLog.outString("[officer] %s: %s", _player->GetName(), msg.c_str()); } break;@@ -274,11 +285,11 @@ else { GetPlayer()->SetFlag(PLAYER_FLAGS, 0x02);- data = sChatHandler.FillMessageData(CHAT_MSG_AFK, LANG_UNIVERSAL, reason.c_str(),_player->GetGUID());- GetPlayer()->SendMessageToSet(data, false);+ //data = sChatHandler.FillMessageData(CHAT_MSG_AFK, LANG_UNIVERSAL, reason.c_str(),_player->GetGUID());+ //GetPlayer()->SendMessageToSet(data, false); if(sWorld.GetKickAFKPlayerTime()) sEventMgr.AddEvent(GetPlayer(),&Player::SoftDisconnect,EVENT_PLAYER_SOFT_DISCONNECT,sWorld.GetKickAFKPlayerTime(),1);- delete data;+ //delete data; } } break; case CHAT_MSG_DND:@@ -291,9 +302,9 @@ else { GetPlayer()->SetFlag(PLAYER_FLAGS, 0x04);- data = sChatHandler.FillMessageData(CHAT_MSG_DND, LANG_UNIVERSAL, reason.c_str(),_player->GetGUID());- GetPlayer()->SendMessageToSet(data, false);- delete data;+ //data = sChatHandler.FillMessageData(CHAT_MSG_DND, LANG_UNIVERSAL, reason.c_str(),_player->GetGUID());+ //GetPlayer()->SendMessageToSet(data, false);+ //delete data; } } break; default:Index: src/game/Guild.h===================================================================--- src/game/Guild.h (revision 748)+++ src/game/Guild.h (working copy)@@ -168,6 +168,7 @@ GUILD_INVITE_S = 0x01, GUILD_QUIT_S = 0x02, GUILD_FOUNDER_S = 0x0C,+ GUILD_OFFICER_S = 0x0D, }; enum GuildRankRightsIndex: src/game/InstanceSaveMgr.cpp===================================================================--- src/game/InstanceSaveMgr.cpp (revision 748)+++ src/game/InstanceSaveMgr.cpp (working copy)@@ -37,6 +37,9 @@ void InstanceSavingManagement::BuildSavedInstancesForPlayer(Player *pPlayer) {+ if(!pPlayer)+ return;+ bool result = false; bool hasBeenSaved = false; WorldPacket data;@@ -102,6 +105,9 @@ void InstanceSavingManagement::SavePlayerToInstance(Player *pPlayer, uint32 mapid) {+ if(!pPlayer)+ return;+ WorldPacket data; instanceInfoListMutex.Acquire();@@ -146,6 +152,9 @@ void InstanceSavingManagement::ResetSavedInstancesForPlayer(Player *pPlayer) {+ if(!pPlayer)+ return;+ bool result; WorldPacket data; @@ -209,6 +218,9 @@ //++++++++++++++++++++++++++++++++++++++++++++++++++++++++ bool InstanceSavingManagement::IsPlayerSavedToMap(uint32 mapid, Player *pPlayer) {+ if(!pPlayer)+ return;+ instanceInfoListMutex.Acquire(); InstanceInfo::iterator itr = mInstanceInfoList.find( mapid ); @@ -230,6 +242,9 @@ } bool InstanceSavingManagement::IsPlayerSavedToInstanceId(uint32 mapid, uint32 instanceid, Player *pPlayer) {+ if(!pPlayer)+ return;+ instanceInfoListMutex.Acquire(); InstanceInfo::iterator itr = mInstanceInfoList.find( mapid ); @@ -358,6 +373,9 @@ } void InstanceSavingManagement::SaveObjectStateToInstance(Unit *pUnit) {+ if(!pUnit)+ return;+ instanceInfoListMutex.Acquire(); InstanceInfo::iterator itr = mInstanceInfoList.find( pUnit->GetMapId() ); if(itr != mInstanceInfoList.end())@@ -392,6 +410,9 @@ Instance_Map_InstanceId_Holder *InstanceSavingManagement::GetRaidAndMMInstance(uint32 mapid, Player * pPlayer) {+ if(!pPlayer)+ return;+ instanceInfoListMutex.Acquire(); InstanceInfo::iterator itr = mInstanceInfoList.find( mapid ); if(itr != mInstanceInfoList.end())@@ -413,6 +434,9 @@ void InstanceSavingManagement::BuildRaidSavedInstancesForPlayer(Player *pPlayer) {+ if(!pPlayer)+ return;+ /*hmm packet structure for this one? counter, mapid time instanceid */