void WorldSession::HandleGuildAccept(WorldPacket & recv_data) { PlayerPointer plyr = GetPlayer(); if(!plyr) return; PlayerPointer inviter = objmgr.GetPlayer( plyr->GetGuildInvitersGuid() ); plyr->UnSetGuildInvitersGuid(); if(!inviter) { return; } Guild *pGuild = inviter->m_playerInfo->guild; if(!pGuild) { return; } if(pGuild->GetNumMembers() >= MAX_GUILD_MEMBERS) { return; } pGuild->AddGuildMember(plyr->m_playerInfo, NULL); }
void WorldSession::HandleInviteToGuild(WorldPacket & recv_data) { CHECK_PACKET_SIZE(recv_data, 1); std::string inviteeName; recv_data >> inviteeName; PlayerPointer plyr = objmgr.GetPlayer( inviteeName.c_str() , false); Guild *pGuild = _player->m_playerInfo->guild; if(!plyr) { Guild::SendGuildCommandResult(this, GUILD_INVITE_S,inviteeName.c_str(),GUILD_PLAYER_NOT_FOUND); return; } else if(!pGuild) { Guild::SendGuildCommandResult(this, GUILD_CREATE_S,"",GUILD_PLAYER_NOT_IN_GUILD); return; } if( plyr->GetGuildId() ) { Guild::SendGuildCommandResult(this, GUILD_INVITE_S,plyr->GetName(),ALREADY_IN_GUILD); return; } else if( plyr->GetGuildInvitersGuid()) { Guild::SendGuildCommandResult(this, GUILD_INVITE_S,plyr->GetName(),ALREADY_INVITED_TO_GUILD); return; } else if(!_player->m_playerInfo->guildRank->CanPerformCommand(GR_RIGHT_INVITE)) { Guild::SendGuildCommandResult(this, GUILD_INVITE_S,"",GUILD_PERMISSIONS); return; } else if(plyr->GetTeam()!=_player->GetTeam() && _player->GetSession()->GetPermissionCount() == 0 && !sWorld.cross_faction_world) { Guild::SendGuildCommandResult(this, GUILD_INVITE_S,"",GUILD_NOT_ALLIED); return; } else if(pGuild->GetNumMembers() >= MAX_GUILD_MEMBERS) { // We can't handle >= 500 members, or WoW will #132. I don't have the proper error code, so just throw the internal one. Guild::SendGuildCommandResult(this, GUILD_INVITE_S,"",GUILD_INTERNAL); return; } Guild::SendGuildCommandResult(this, GUILD_INVITE_S,inviteeName.c_str(),GUILD_U_HAVE_INVITED); //41 WorldPacket data(SMSG_GUILD_INVITE, 100); data << _player->GetName(); data << pGuild->GetGuildName(); plyr->GetSession()->SendPacket(&data); plyr->SetGuildInvitersGuid( _player->GetLowGUID() ); }
void WorldSession::HandleGuildDecline(WorldPacket & recv_data) { WorldPacket data; PlayerPointer plyr = GetPlayer(); if(!plyr) return; PlayerPointer inviter = objmgr.GetPlayer( plyr->GetGuildInvitersGuid() ); plyr->UnSetGuildInvitersGuid(); if(!inviter) return; data.Initialize(SMSG_GUILD_DECLINE); data << plyr->GetName(); inviter->GetSession()->SendPacket(&data); }