void Channel::UnBan(Player const* player, std::string const& badname) { uint32 sec = player->GetSession()->GetSecurity(); uint64 good = player->GetGUID(); if (!IsOn(good)) { WorldPacket data; MakeNotMember(&data); SendToOne(&data, good); return; } if (!playersStore[good].IsModerator() && !AccountMgr::IsGMAccount(sec)) { WorldPacket data; MakeNotModerator(&data); SendToOne(&data, good); return; } uint64 victim = 0; if (uint32 guidLow = sWorld->GetGlobalPlayerGUID(badname)) victim = MAKE_NEW_GUID(guidLow, 0, HIGHGUID_PLAYER); if (!victim || !IsBanned(victim)) { WorldPacket data; MakePlayerNotFound(&data, badname); SendToOne(&data, good); return; } bool isConstantModerator = _channelRights.moderators.find(player->GetSession()->GetAccountId()) != _channelRights.moderators.end(); if (!AccountMgr::IsGMAccount(sec) && !isConstantModerator) { if (_channelRights.flags & CHANNEL_RIGHT_CANT_BAN) { WorldPacket data; MakeNotModerator(&data); SendToOne(&data, good); return; } } if (_channelRights.flags & CHANNEL_RIGHT_CANT_BAN) sLog->outCommand(player->GetSession()->GetAccountId(), "Command: /unban %s %s (Moderator %s [guid: %u, account: %u] unbanned %s [guid: %u])", GetName().c_str(), badname.c_str(), player->GetName().c_str(), player->GetGUIDLow(), player->GetSession()->GetAccountId(), badname.c_str(), GUID_LOPART(victim)); bannedStore.erase(GUID_LOPART(victim)); RemoveChannelBanFromDB(GUID_LOPART(victim)); WorldPacket data; MakePlayerUnbanned(&data, victim, good); SendToAll(&data); }
void Channel::UnBan(uint64 good, const char *badname) { uint32 sec = 0; Player *gplr = objmgr.GetPlayer(good); if(gplr) sec = gplr->GetSession()->GetSecurity(); if(!IsOn(good)) { WorldPacket data; MakeNotMember(&data); SendToOne(&data, good); } else if(!players[good].IsModerator() && sec < SEC_GAMEMASTER) { WorldPacket data; MakeNotModerator(&data); SendToOne(&data, good); } else { Player *bad = objmgr.GetPlayer(badname); if(bad == NULL || !IsBanned(bad->GetGUID())) { WorldPacket data; MakePlayerNotFound(&data, badname); SendToOne(&data, good); } else { banned.erase(bad->GetGUID()); WorldPacket data; MakePlayerUnbanned(&data, bad->GetGUID(), good); SendToAll(&data); //save banlist if(m_IsSaved) { std::ostringstream banlist; BannedList::iterator iter; for (iter = banned.begin();iter != banned.end(); ++iter) { banlist << (*iter) << " "; } std::ostringstream ss; ss << "UPDATE channels SET BannedList = '" << banlist.str().c_str() << "' WHERE m_name = '"<<m_name.c_str()<<"' AND m_team = '"<<m_Team<<"'"; if(CharacterDatabase.PExecute( ss.str( ).c_str( ) )) { sLog.outDebug("Channel(%s) BannedList saved", m_name.c_str()); } } } } }
void Channel::UnBan(Player* player, const char* targetName) { ObjectGuid guid = player->GetObjectGuid(); if (!IsOn(guid)) { WorldPacket data; MakeNotMember(&data); SendToOne(&data, guid); return; } if (!m_players[guid].IsModerator() && player->GetSession()->GetSecurity() < SEC_GAMEMASTER) { WorldPacket data; MakeNotModerator(&data); SendToOne(&data, guid); return; } Player* target = sObjectMgr.GetPlayer(targetName); if (!target) { WorldPacket data; MakePlayerNotFound(&data, targetName); SendToOne(&data, guid); return; } ObjectGuid targetGuid = target->GetObjectGuid(); if (!IsBanned(targetGuid)) { WorldPacket data; MakePlayerNotBanned(&data, targetName); SendToOne(&data, guid); return; } // unban player m_banned.erase(targetGuid); WorldPacket data; MakePlayerUnbanned(&data, targetGuid, guid); SendToAll(&data); }
void Channel::UnBan(uint64 good, const char *badname) { uint32 sec = 0; Player *gplr = sObjectMgr->GetPlayer(good); if (gplr) sec = gplr->GetSession()->GetSecurity(); if (!IsOn(good)) { WorldPacket data; MakeNotMember(&data); SendToOne(&data, good); } else if (!players[good].IsModerator() && sec < SEC_GAMEMASTER) { WorldPacket data; MakeNotModerator(&data); SendToOne(&data, good); } else { Player *bad = sObjectMgr->GetPlayer(badname); if (bad == NULL || !IsBanned(bad->GetGUID())) { WorldPacket data; MakePlayerNotFound(&data, badname); SendToOne(&data, good); } else { banned.erase(bad->GetGUID()); WorldPacket data; MakePlayerUnbanned(&data, bad->GetGUID(), good); SendToAll(&data); UpdateChannelInDB(); } } }
void Channel::UnBan(Player const* player, std::string const& badname) { uint32 sec = player->GetSession()->GetSecurity(); uint64 good = player->GetGUID(); if (!IsOn(good)) { WorldPacket data; MakeNotMember(&data); SendToOne(&data, good); return; } if (!playersStore[good].IsModerator() && !AccountMgr::IsGMAccount(sec)) { WorldPacket data; MakeNotModerator(&data); SendToOne(&data, good); return; } Player* bad = sObjectAccessor->FindPlayerByName(badname); uint64 victim = bad ? bad->GetGUID(): 0; if (!victim || !IsBanned(victim)) { WorldPacket data; MakePlayerNotFound(&data, badname); SendToOne(&data, good); return; } bannedStore.erase(victim); WorldPacket data; MakePlayerUnbanned(&data, victim, good); SendToAll(&data); UpdateChannelInDB(); }
void Channel::UnBan(Player const* player, std::string const& badname) { uint64 good = player->GetGUID(); if (!IsOn(good)) { WorldPacket data; MakeNotMember(&data); SendToOne(&data, good); return; } if (!playersStore[good].IsModerator() && !player->GetSession()->HasPermission(rbac::RBAC_PERM_CHANGE_CHANNEL_NOT_MODERATOR)) { WorldPacket data; MakeNotModerator(&data); SendToOne(&data, good); return; } Player* bad = sObjectAccessor->FindPlayerByName(badname); uint64 victim = bad ? bad->GetGUID(): 0; if (!victim || !IsBanned(victim)) { WorldPacket data; MakePlayerNotFound(&data, badname); SendToOne(&data, good); return; } bannedStore.erase(victim); WorldPacket data; MakePlayerUnbanned(&data, victim, good); SendToAll(&data); UpdateChannelInDB(); }
void Channel::UnBan(Player const* player, std::string const& badname) { ObjectGuid const& good = player->GetGUID(); if (!IsOn(good)) { WorldPackets::Channel::ChannelNotify notify; MakeNotMember(notify); player->SendDirectMessage(notify.Write()); return; } if (!_playersStore[good].IsModerator() && !player->GetSession()->HasPermission(rbac::RBAC_PERM_CHANGE_CHANNEL_NOT_MODERATOR)) { WorldPackets::Channel::ChannelNotify notify; MakeNotModerator(notify); player->SendDirectMessage(notify.Write()); return; } Player* bad = ObjectAccessor::FindConnectedPlayerByName(badname); ObjectGuid victim = bad ? bad->GetGUID() : ObjectGuid::Empty; if (victim.IsEmpty() || !IsBanned(victim)) { WorldPackets::Channel::ChannelNotify notify; MakePlayerNotFound(notify, badname); player->SendDirectMessage(notify.Write()); return; } _bannedStore.erase(victim); WorldPackets::Channel::ChannelNotify notify; MakePlayerUnbanned(notify, victim, good); SendToAll(notify.Write()); UpdateChannelInDB(); }