void WorldSession::HandleGuildAddRankOpcode(WorldPacket& recvPacket) { DEBUG_LOG("WORLD: Received opcode CMSG_GUILD_ADD_RANK"); recvPacket >> Unused<uint32>(); // rank id std::string rankname = recvPacket.ReadString(recvPacket.ReadBits(7)); Guild* guild = sGuildMgr.GetGuildById(GetPlayer()->GetGuildId()); if (!guild) { SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD); return; } if (GetPlayer()->GetObjectGuid() != guild->GetLeaderGuid()) { SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS); return; } if (guild->GetRanksSize() >= GUILD_RANKS_MAX_COUNT) // client not let create more 10 than ranks return; guild->CreateRank(rankname, GR_RIGHT_GCHATLISTEN | GR_RIGHT_GCHATSPEAK); guild->Query(this); guild->QueryRanks(this); guild->Roster(); // broadcast for tab rights update }
bool ChatHandler::CreateGuildCommand(const char* args, WorldSession *m_session) { if(!*args) return false; Player * ptarget = m_session->GetPlayer()->GetMapMgr()->GetPlayer(m_session->GetPlayer()->GetSelection()); if(ptarget == 0) { ptarget = m_session->GetPlayer(); } if(strlen((char*)args)>75) { // send message to user char buf[256]; snprintf((char*)buf,256,"The name was too long by %i", strlen((char*)args)-75); SystemMessage(m_session, buf); return true; } for (uint32 i = 0; i < strlen(args); i++) { if(!isalpha(args[i]) && args[i]!=' ') { SystemMessage(m_session, "Error, name can only contain chars A-Z and a-z."); return true; } } if(objmgr.GetGuildByGuildName(args)) { WorldPacket data(SMSG_GUILD_COMMAND_RESULT, 100); data << uint32(0); data << args; data << uint32(C_R_GUILD_NAME_EXISTS); m_session->SendPacket(&data); return true; } Guild *pGuild = new Guild; uint32 guildId = pGuild->GetFreeGuildIdFromDb(); if(guildId == 0) { printf("Error Getting Free Guild ID"); delete pGuild; return false; } //Guild Setup pGuild->SetGuildId( guildId ); pGuild->SetGuildName( args ); pGuild->CreateRank("Guild Master", GR_RIGHT_ALL); pGuild->CreateRank("Officer", GR_RIGHT_ALL); pGuild->CreateRank("Veteran", GR_RIGHT_GCHATLISTEN | GR_RIGHT_GCHATSPEAK); pGuild->CreateRank("Member", GR_RIGHT_GCHATLISTEN | GR_RIGHT_GCHATSPEAK); pGuild->CreateRank("Initiate", GR_RIGHT_GCHATLISTEN | GR_RIGHT_GCHATSPEAK); pGuild->SetGuildEmblemStyle( 0xFFFF ); pGuild->SetGuildEmblemColor( 0xFFFF ); pGuild->SetGuildBorderStyle( 0xFFFF ); pGuild->SetGuildBorderColor( 0xFFFF ); pGuild->SetGuildBackgroundColor( 0xFFFF ); objmgr.AddGuild(pGuild); //Guild Leader Setup ptarget->SetGuildId( pGuild->GetGuildId() ); ptarget->SetUInt32Value(PLAYER_GUILDID, pGuild->GetGuildId() ); ptarget->SetGuildRank(GUILDRANK_GUILD_MASTER); ptarget->SetUInt32Value(PLAYER_GUILDRANK,GUILDRANK_GUILD_MASTER); pGuild->SetGuildLeaderGuid( ptarget->GetGUID() ); pGuild->AddNewGuildMember( ptarget ); pGuild->SaveToDb(); pGuild->SaveRanksToDb(); return true; }