Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
Исправлено Master Loot

Упомянутые в теме пользователи:

Показано с 1 по 3 из 3

Тема: Master Loot

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #2
    Местный Аватар для The Elusive Mastega
    Регистрация
    01.10.2024
    Сообщений
    48
    Поблагодарил(а)
    21
    Получено благодарностей: 10 (сообщений: 8).
    Репутация: 841
    Причина:
    В функции Group::MasterLoot (файл Group.cpp) сервер формирует список кандидатов через пакет SMSG_LOOT_MASTER_LIST. В коде есть фильтр по дистанции:

    if (looter->IsAtGroupRewardDistance(pLootedObject))

    Из-за него в список попадают только игроки, находящиеся рядом с трупом/сундуком. В результате мастер-лут не показывает всех участников рейда.

    Скорее всего надо:

    diff --git a/src/game/Group.cpp b/src/game/Group.cpp
    index 1234567..89abcde 100644
    --- a/src/game/Group.cpp
    +++ b/src/game/Group.cpp
    @@ -1450,13 +1450,17 @@ void Group::MasterLoot(Loot* loot, WorldObject* pLootedObject)
    WorldPacket data(SMSG_LOOT_MASTER_LIST, 1 + GetMembersCount() * 8);
    data << uint8(GetMembersCount());

    - for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next())
    - {
    - Player* looter = itr->GetSource();
    - if (!looter->IsInWorld())
    - continue;
    -
    - if (looter->IsAtGroupRewardDistance(pLootedObject))
    - {
    - data << uint64(looter->GetGUID());
    - ++real_count;
    - }
    - }
    -
    - data.put<uint8>(0, real_count);
    + for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next())
    + {
    + Player* looter = itr->GetSource();
    + if (!looter || !looter->IsInWorld())
    + continue;
    +
    + // Добавляем всех участников группы/рейда, без проверки дистанции
    + data << uint64(looter->GetGUID());
    + ++real_count;
    + }
    +
    + // Обновляем корректное количество игроков
    + data.put<uint8>(0, real_count);

  2. 1 пользователь сказал cпасибо The Elusive Mastega за это полезное сообщение:

    Toyota (23.09.2025)

Похожие темы

  1. Ответов: 6
    Последнее сообщение: 09.06.2020, 15:46
  2. Epgp Loot Master
    от Publ в разделе Корзина
    Ответов: 1
    Последнее сообщение: 19.12.2015, 15:10

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •