void Channel::SetOwner(uint64 guid, bool exclaim) { if (m_ownerGUID) { // [] will re-add player after it possible removed PlayerList::iterator p_itr = players.find(m_ownerGUID); if (p_itr != players.end()) p_itr->second.SetOwner(false); } m_ownerGUID = guid; if (m_ownerGUID) { uint8 oldFlag = GetPlayerFlags(m_ownerGUID); players[m_ownerGUID].SetModerator(true); players[m_ownerGUID].SetOwner(true); WorldPacket data; MakeModeChange(&data, m_ownerGUID, oldFlag); SendToAll(&data); if (exclaim) { MakeOwnerChanged(&data, m_ownerGUID); SendToAll(&data); } if (m_IsSaved && _UpdateIntInDB("m_moderate", m_moderate ? 1 : 0)) sLog->outDebug("Channel(%s) moderate saved", m_name.c_str()); } }
// done 0x0C void Channel::MakeModeChange(WorldPacket* data, uint64 guid, uint8 oldflags) { MakeNotifyPacket(data, CHAT_MODE_CHANGE_NOTICE); *data << uint64(guid); *data << uint8(oldflags); *data << uint8(GetPlayerFlags(guid)); }
void Channel::SetOwner(uint64 guid, bool exclaim) { if (m_ownerGUID) { // [] will re-add player after it possible removed PlayerList::iterator p_itr = players.find(m_ownerGUID); if (p_itr != players.end()) p_itr->second.SetOwner(false); } m_ownerGUID = guid; if (m_ownerGUID) { uint8 oldFlag = GetPlayerFlags(m_ownerGUID); players[m_ownerGUID].SetModerator(true); players[m_ownerGUID].SetOwner(true); WorldPacket data; MakeModeChange(&data, m_ownerGUID, oldFlag); SendToAll(&data); if (exclaim) { MakeOwnerChanged(&data, m_ownerGUID); SendToAll(&data); } UpdateChannelInDB(); } }
void Channel::SetOwner(ObjectGuid guid, bool exclaim) { if (m_ownerGuid) { // [] will re-add player after it possible removed PlayerList::iterator p_itr = m_players.find(m_ownerGuid); if (p_itr != m_players.end()) p_itr->second.SetOwner(false); } m_ownerGuid = guid; if (m_ownerGuid) { uint8 oldFlag = GetPlayerFlags(m_ownerGuid); m_players[m_ownerGuid].SetOwner(true); WorldPacket data; MakeModeChange(&data, m_ownerGuid, oldFlag); SendToAll(&data); if(exclaim) { MakeOwnerChanged(&data, m_ownerGuid); SendToAll(&data); } } }
void Channel::JoinNotify(Player const* player) { ObjectGuid const& guid = player->GetGUID(); if (IsConstant()) { auto builder = [&](LocaleConstant locale) { LocaleConstant localeIdx = sWorld->GetAvailableDbcLocale(locale); WorldPackets::Channel::UserlistAdd* userlistAdd = new WorldPackets::Channel::UserlistAdd(); userlistAdd->AddedUserGUID = guid; userlistAdd->_ChannelFlags = GetFlags(); userlistAdd->UserFlags = GetPlayerFlags(guid); userlistAdd->ChannelID = GetChannelId(); userlistAdd->ChannelName = GetName(localeIdx); return userlistAdd; }; SendToAllButOne(builder, guid); } else { auto builder = [&](LocaleConstant locale) { LocaleConstant localeIdx = sWorld->GetAvailableDbcLocale(locale); WorldPackets::Channel::UserlistUpdate* userlistUpdate = new WorldPackets::Channel::UserlistUpdate(); userlistUpdate->UpdatedUserGUID = guid; userlistUpdate->_ChannelFlags = GetFlags(); userlistUpdate->UserFlags = GetPlayerFlags(guid); userlistUpdate->ChannelID = GetChannelId(); userlistUpdate->ChannelName = GetName(localeIdx); return userlistUpdate; }; SendToAll(builder); } }
void Channel::JoinNotify(uint64 guid) { WorldPacket data(IsConstant() ? SMSG_USERLIST_ADD : SMSG_USERLIST_UPDATE, 8 + 1 + 1 + 4 + GetName().size()); data << uint64(guid); data << uint8(GetPlayerFlags(guid)); data << uint8(GetFlags()); data << uint32(GetNumPlayers()); data << GetName(); if (IsConstant()) SendToAllButOne(&data, guid); else SendToAll(&data); }
void Channel::JoinNotify(ObjectGuid guid) { WorldPacket data; if (IsConstant()) data.Initialize(SMSG_USERLIST_ADD, 8 + 1 + 1 + 4 + GetName().size() + 1); else data.Initialize(SMSG_USERLIST_UPDATE, 8 + 1 + 1 + 4 + GetName().size() + 1); data << ObjectGuid(guid); data << uint8(GetPlayerFlags(guid)); data << uint8(GetFlags()); data << uint32(GetNumPlayers()); data << GetName(); SendToAll(&data); }
void Channel::FlagsNotify(Player* p) { if (_channelRights.flags & CHANNEL_RIGHT_CANT_SPEAK) return; if (!AccountMgr::IsPlayerAccount(p->GetSession()->GetSecurity())) return; WorldPacket data(SMSG_USERLIST_UPDATE, 8 + 1 + 1 + 4 + GetName().size()); data << uint64(p->GetGUID()); data << uint8(GetPlayerFlags(p->GetGUID())); data << uint8(GetFlags()); data << uint32(GetNumPlayers()); data << GetName(); SendToAllWatching(&data); }
/* * GetPlayerWhoNameColor: Return color that player's name should be drawn on * the who list, depending on player's object flags */ COLORREF GetPlayerWhoNameColor(int flags,char*name) { switch (GetPlayerFlags(flags)) { case PF_DM: return NAME_COLOR_DM_FG; case PF_CREATOR: return NAME_COLOR_CREATOR_FG; case PF_SUPER: return NAME_COLOR_SUPER_FG; case PF_EVENTCHAR: return NAME_COLOR_EVENT_FG; case PF_KILLER: return NAME_COLOR_KILLER_FG; case PF_OUTLAW: return NAME_COLOR_OUTLAW_FG; default: return NAME_COLOR_NORMAL_FG; } }
void Channel::SetOwner(uint64 guid, bool exclaim) { if(m_ownerGUID) { // [] will re-add player after it possible removed PlayerList::iterator p_itr = players.find(m_ownerGUID); if(p_itr != players.end()) p_itr->second.SetOwner(false); } m_ownerGUID = guid; if(m_ownerGUID) { uint8 oldFlag = GetPlayerFlags(m_ownerGUID); players[m_ownerGUID].SetModerator(true); players[m_ownerGUID].SetOwner(true); WorldPacket data; MakeModeChange(&data, m_ownerGUID, oldFlag); SendToAll(&data); if(exclaim) { MakeOwnerChanged(&data, m_ownerGUID); SendToAll(&data); } /*if(m_IsSaved) { std::ostringstream ss; ss << "UPDATE channels SET m_ownerGUID = '" << guid << "' WHERE m_name = '"<<m_name.c_str()<<"' AND m_team = '"<<m_Team<<"'"; if(CharacterDatabase.PExecute( ss.str( ).c_str( ) )) { sLog.outDebug("Channel(%s) owner saved", m_name.c_str()); } }*/ } }
/* * GetPlayerNameColor: Return color that player's name should be drawn in, * depending on player's object flags */ COLORREF GetPlayerNameColor(int flags,char*name) { if (GetDrawingEffect(flags) == OF_BLACK) return NAME_COLOR_BLACK_FG; switch (GetPlayerFlags(flags)) { case PF_DM: return NAME_COLOR_DM_FG; case PF_KILLER: return NAME_COLOR_KILLER_FG; case PF_OUTLAW: return NAME_COLOR_OUTLAW_FG; case PF_CREATOR: return NAME_COLOR_CREATOR_FG; case PF_SUPER: return NAME_COLOR_SUPER_FG; case PF_EVENTCHAR: return NAME_COLOR_EVENT_FG; default: return NAME_COLOR_NORMAL_FG; } }