static bool HandleGuildRankCommand(ChatHandler* handler, char const* args) { char* nameStr; char* rankStr; handler->extractOptFirstArg((char*)args, &nameStr, &rankStr); if (!rankStr) return false; Player* target; uint64 targetGuid; std::string target_name; if (!handler->extractPlayerTarget(nameStr, &target, &targetGuid, &target_name)) return false; uint32 guildId = target ? target->GetGuildId() : Player::GetGuildIdFromDB(targetGuid); if (!guildId) return false; Guild* targetGuild = sGuildMgr->GetGuildById(guildId); if (!targetGuild) return false; uint8 newRank = uint8(atoi(rankStr)); return targetGuild->ChangeMemberRank(targetGuid, newRank); }
static bool HandleGuildRankCommand(ChatHandler* handler, char const* args) { char* nameStr; char* rankStr; handler->extractOptFirstArg((char*)args, &nameStr, &rankStr); if (!rankStr) return false; Player* target; ObjectGuid targetGuid; std::string target_name; if (!handler->extractPlayerTarget(nameStr, &target, &targetGuid, &target_name)) return false; ObjectGuid::LowType guildId = target ? target->GetGuildId() : sCharacterCache->GetCharacterGuildIdByGuid(targetGuid); if (!guildId) return false; Guild* targetGuild = sGuildMgr->GetGuildById(guildId); if (!targetGuild) return false; uint8 newRank = uint8(atoi(rankStr)); SQLTransaction trans(nullptr); return targetGuild->ChangeMemberRank(trans, targetGuid, newRank); }
void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket) { uint32 BankStacks[GUILD_BANK_MAX_TABS]; for (uint32 i = 0; i < GUILD_BANK_MAX_TABS; i++) recvPacket >> BankStacks[i]; uint32 new_rights; recvPacket >> new_rights; uint32 new_rankId; recvPacket >> new_rankId; uint32 old_rankId; recvPacket >> old_rankId; uint32 BankRights[GUILD_BANK_MAX_TABS]; for (uint32 i = 0; i < GUILD_BANK_MAX_TABS; i++) recvPacket >> BankRights[i]; uint64 guildId; recvPacket >> guildId; uint32 old_rights; recvPacket >> old_rights; uint32 money; recvPacket >> money; uint64 playerGuid; recvPacket >> playerGuid; std::string rankName; recvPacket >> rankName; sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Received CMSG_GUILD_RANK"); if (GetPlayer()->GetGUID() != playerGuid) { printf("CMSG_GUILD_RANK: The playerGUID in the packet does not match the current player!\n"); recvPacket.rpos(recvPacket.wpos()); Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_PLAYER_NOT_IN_GUILD); return; } if (GetPlayer()->GetGuildId() != GUID_LOPART(guildId)) { printf("CMSG_GUILD_RANK: This player is not in the guild.\n"); recvPacket.rpos(recvPacket.wpos()); Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_PLAYER_NOT_IN_GUILD); return; } Guild* guild = _GetPlayerGuild(this, true); if (!guild) { recvPacket.rpos(recvPacket.wpos()); return; } GuildBankRightsAndSlotsVec rightsAndSlots(GUILD_BANK_MAX_TABS); if (old_rankId != GR_GUILDMASTER) { for (uint8 tabId = 0; tabId < GUILD_BANK_MAX_TABS; ++tabId) { rightsAndSlots[tabId] = GuildBankRightsAndSlots(BankRights[tabId], BankStacks[tabId]); } guild->HandleSetRankInfo(this, new_rankId, rankName, new_rights, money, rightsAndSlots); } if (old_rankId != new_rankId && old_rankId != GR_GUILDMASTER && new_rankId != GR_GUILDMASTER) guild->ChangeMemberRank(old_rankId, new_rankId); }