Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Game::playerModifyVipGroup(uint32_t playerId, VipGroupAction_t type, const std::string& name, uint8_t groupId)
- {
- Player* player = getPlayerByID(playerId);
- if (!player) {
- return;
- }
- if (type == VIPGROUP_ACTION_ADD) {
- int id = 0;
- auto& vipGroups = player->vipGroups;
- while (std::find_if(vipGroups.begin(), vipGroups.end(), [id](VIPGroup& vipGroup) {
- return vipGroup.id == id;
- }) != vipGroups.end()) {
- id++;
- }
- if (id <= 255) {
- player->addVipGroup(id, name);
- player->sendVIPGroupData();
- }
- } else if (type == VIPGROUP_ACTION_EDIT) {
- auto& vipGroups = player->vipGroups;
- auto it = std::find_if(vipGroups.begin(), vipGroups.end(), [groupId](VIPGroup& vipGroup) {
- return vipGroup.id == groupId;
- });
- if (it != vipGroups.end()) {
- (*it).name = name;
- player->sendVIPGroupData();
- }
- } else if (type == VIPGROUP_ACTION_REMOVE) {
- auto& vipGroups = player->vipGroups;
- auto it = std::find_if(vipGroups.begin(), vipGroups.end(), [groupId](VIPGroup& vipGroup) {
- return vipGroup.id == groupId;
- });
- if (it != vipGroups.end()) {
- vipGroups.erase(it);
- player->sendVIPGroupData();
- const std::forward_list<VIPEntry>& vipEntries = IOLoginData::getVIPEntries(player->getAccount());
- for (const VIPEntry& entry : vipEntries) {
- std::vector<int32_t> groups = entry.groups;
- auto itt = std::find(groups.begin(), groups.end(), static_cast<int32_t>(groupId));
- if (itt == groups.end()) {
- continue;
- }
- groups.erase(itt);
- VipStatus_t vipStatus = VIPSTATUS_ONLINE;
- Player* vipPlayer = g_game.getPlayerByGUID(entry.guid);
- if (!vipPlayer || vipPlayer->isInGhostMode() || player->isAccessPlayer()) {
- vipStatus = VIPSTATUS_OFFLINE;
- }
- player->editVIP(entry.guid, entry.description, entry.icon, entry.notify, groups);
- player->sendVIP(entry.guid, entry.name, entry.description, entry.icon, entry.notify, vipStatus, groups);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement