Показать сообщение отдельно
Старый 08.01.2011, 16:08   #26
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

Дааа, похоже я ошибся и с шариком, и в общем, когда далеко френды друг от друга, дин. флаги не работают, и в листе шарика нету. Так что вышеприведенные правки весьма актуальны

Так же, мне удалось разыскать флаг 0x100, про который я знаю, что он является условием в пати/группе при отсутствии прямой видимости. Но только он не шлется в SMSG_GROUP_LIST, а шлется в SMSG_PARTY_MEMBER_STATS_FULL.

Код:
enum GroupMemberOnlineStatus
{
    MEMBER_STATUS_OFFLINE   = 0x0000,
    MEMBER_STATUS_ONLINE    = 0x0001,
    MEMBER_STATUS_PVP       = 0x0002,
    MEMBER_STATUS_UNK0      = 0x0004,                       // dead? (health=0)
    MEMBER_STATUS_UNK1      = 0x0008,                       // ghost? (health=1)
    MEMBER_STATUS_UNK2      = 0x0010,                       // never seen
    MEMBER_STATUS_UNK3      = 0x0020,                       // never seen
    MEMBER_STATUS_UNK4      = 0x0040,                       // appears with dead and ghost flags
    MEMBER_STATUS_UNK5      = 0x0080,                       // never seen
+   MEMBER_STATUS_2_RAF     = 0x0100                        // RAF status in party/raid, is correct status??? or flag???
};
Я его нашел почти сразу, но поле uint8 заставило меня усомнится, что он шлется в SMSG_GROUP_LIST, т.к этот флаг - 0x100 = 256 выходит за пределы uint8.
Покопав еще немного, я выяснил его истинное место
Код:
    data << uint32(mask1);                                  // group update mask
    data << uint16(MEMBER_STATUS_ONLINE);                   // member's online status
    data << uint32(player->GetHealth());                    // GROUP_UPDATE_FLAG_CUR_HP
    data << uint32(player->GetMaxHealth());                 // GROUP_UPDATE_FLAG_MAX_HP
    data << uint8(powerType);                               // GROUP_UPDATE_FLAG_POWER_TYPE
    data << uint16(player->GetPower(powerType));            // GROUP_UPDATE_FLAG_CUR_POWER
    data << uint16(player->GetMaxPower(powerType));         // GROUP_UPDATE_FLAG_MAX_POWER
    data << uint16(player->getLevel());                     // GROUP_UPDATE_FLAG_LEVEL
    data << uint16(player->GetZoneId());                    // GROUP_UPDATE_FLAG_ZONE
    data << uint16(player->GetPositionX());                 // GROUP_UPDATE_FLAG_POSITION
    data << uint16(player->GetPositionY());                 // GROUP_UPDATE_FLAG_POSITION
Причем как я понял, это дополнение к основному статусу, ведь там всегда слалась единица, ну с RAF будет 1 | 256(0x01 | 0x100)


ПС - насчет селекшн я пока все равно не понимаю, сохранить корректный селект гуид для последующей активации эффекта 152 и эффекта суммона невозможно в текущих условиях, имхо

Последний раз редактировалось MaS0n; 08.01.2011 в 16:11.
MaS0n вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
rsa (08.01.2011)