Показать сообщение отдельно
Старый 14.03.2010, 11:02   #6
Ranger
Новичок
 
Регистрация: 07.03.2010
Сообщений: 13
Сказал(а) спасибо: 100
Поблагодарили 9 раз(а) в 6 сообщениях
Ranger На верном пути
По умолчанию

ИМХО, недостаточность проверок количества участников в файле 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;
может быть баг уйдёт.

Последний раз редактировалось Ranger; 15.03.2010 в 02:35.
Ranger вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Dimitrius (14.03.2010), Limpnau (15.03.2010)