ИМХО, недостаточность проверок количества участников в файле Group.cpp в функции Group::CanJoinBattleGroundQueue
Код:
// check for min / max count
uint32 memberscount = GetMembersCount();
if(memberscount < MinPlayerCount)
return BG_JOIN_ERR_GROUP_NOT_ENOUGH;
Необходимо учесть, что функция GetMembersCount() возвращает общее количество участников, в том числе и offline-участников. Таким образом, проверка if(memberscount < MinPlayerCount) проходит на ура.
Логично предположить, что необходимо добавить ещё одну проверку на количество online-участников, и, если их не достаточно, возвращать ошибку типа BG_JOIN_ERR_OFFLINE_MEMBER
P.S. Моё ИМХО.
Добавлено:
Вот это меня вводит в заблуждение:
Код:
Player *member = itr->getSource();
// offline member? don't let join
if(!member)
return BG_JOIN_ERR_OFFLINE_MEMBER;
Попробуйте добавить условие
или !member->IsInWorld()
Код:
Player *member = itr->getSource();
// offline member? don't let join
if(!member || !member->IsInWorld())
return BG_JOIN_ERR_OFFLINE_MEMBER;
может быть баг уйдёт.