Я тоже переделал загрузку информации о RAF и вынес некоторые опции в конфиг, так же реализовал истечение времени услуги через 3 месяца, но выложить пока не могу, во-первых еще тестирую, во-вторых - сессия.
Отвечаю на вопросы :
- насчет нерациональности хранения и загрузки информации в курсе, моей целью было заложить основу, работу пакетов, основных аспектов, а уже потом дорабатывать для принятия в офф. репо. Там, кстати выставление дин. флагов тоже нерационально, их надо слать где-то в BuildUpdateBlockForPlayer
- фичи слинкованных аккаунтов и в клиенте работают только в пати, я на всякий случай вкрутил проверки против читеров
- в самом клиенте стоит ограничение в 60, опции отключаются после 60 уровня, мой код - проверки против читеров
- про приглашенного и приглашающего, скорей всего нет, я руководствовался этой статьей -
http://eu.blizzard.com/support/artic...rticleId=31211
- его бесполезно использовать, т.к если в пати например у нас 2 друга, при суммоне например через шарик во френд-листе, НЕ ВЫДЕЛЯЯ того, кого хотим суммонить, верный гуид отсылается ОДИН РАЗ через этот пакет (CMSG_SET_SELECTION), после чего тут же идет 0 гуид
ПС : там кстати краш возможен, при выделении моба
Код:
diff --git a/MiscHandler.cpp b/MiscHandler.cpp
index 5be3b1e..8da1110 100644
--- a/MiscHandler.cpp
+++ b/MiscHandler.cpp
@@ -408,6 +408,9 @@ void WorldSession::HandleSetSelectionOpcode( WorldPacket & recv_data )
if (!unit)
return;
+ if (_player->IsReferAFriendLinked(((Player*)unit)) && !_player->isSummonFriendNeedSelect())
+ _player->SetSummonFriendGuid(guid);
+
if(FactionTemplateEntry const* factionTemplateEntry = sFactionTemplateStore.LookupEntry(unit->getFaction()))
_player->GetReputationMgr().SetVisible(factionTemplateEntry);
}
надо
Код:
diff --git a/MiscHandler.cpp b/MiscHandler.cpp
index 5be3b1e..8da1110 100644
--- a/MiscHandler.cpp
+++ b/MiscHandler.cpp
@@ -408,6 +408,9 @@ void WorldSession::HandleSetSelectionOpcode( WorldPacket & recv_data )
if (!unit)
return;
+ if (unit->GetTypeId() == TYPEID_PLAYER)
+ {
+ if (_player->IsReferAFriendLinked(((Player*)unit)) && !_player->isSummonFriendNeedSelect())
+ _player->SetSummonFriendGuid(guid);
+ }
+
if(FactionTemplateEntry const* factionTemplateEntry = sFactionTemplateStore.LookupEntry(unit->getFaction()))
_player->GetReputationMgr().SetVisible(factionTemplateEntry);
}