void CClientManager::QUERY_BOOT (CPeer* peer, TPacketGDBoot* p)
bu void altında
peer->EncodeWORD (0xffff);
bu kodun üzerine ekledim
tam hali
void CClientManager::QUERY_BOOT (CPeer* peer, TPacketGDBoot* p)
{
const BYTE bPacketVersion = 6; // BOOT 패킷이 바뀔때마다 번호를 올리도록 한다.
std::vector<tAdminInfo> vAdmin;
std::vector<std::string> vHost;
__GetHostInfo (vHost);
__GetAdminInfo (p->szIP, vAdmin);
sys_log (0, "QUERY_BOOT : AdminInfo (Request ServerIp %s) ", p->szIP);
DWORD dwPacketSize =
sizeof (DWORD) +
sizeof (BYTE) +
sizeof (WORD) + sizeof (WORD) + sizeof (TMobTable) * m_vec_mobTable.size() +
sizeof (WORD) + sizeof (WORD) + sizeof (TItemTable) * m_vec_itemTable.size() +
sizeof (WORD) + sizeof (WORD) + sizeof (TShopTable) * m_iShopTableSize +
sizeof (WORD) + sizeof (WORD) + sizeof (TSkillTable) * m_vec_skillTable.size() +
sizeof (WORD) + sizeof (WORD) + sizeof (TRefineTable) * m_iRefineTableSize +
sizeof (WORD) + sizeof (WORD) + sizeof (TItemAttrTable) * m_vec_itemAttrTable.size() +
sizeof (WORD) + sizeof (WORD) + sizeof (TItemAttrTable) * m_vec_itemRareTable.size() +
sizeof (WORD) + sizeof (WORD) + sizeof (TBanwordTable) * m_vec_banwordTable.size() +
sizeof (WORD) + sizeof (WORD) + sizeof (building::TLand) * m_vec_kLandTable.size() +
sizeof (WORD) + sizeof (WORD) + sizeof (building::TObjectProto) * m_vec_kObjectProto.size() +
sizeof (WORD) + sizeof (WORD) + sizeof (building::TObject) * m_map_pkObjectTable.size() +
sizeof (time_t) +
sizeof (WORD) + sizeof (WORD) + sizeof (TItemIDRangeTable)*2 +
//ADMIN_MANAGER
sizeof (WORD) + sizeof (WORD) + 16 * vHost.size() +
sizeof (WORD) + sizeof (WORD) + sizeof (tAdminInfo) * vAdmin.size() +
//END_ADMIN_MANAGER
#ifdef WJ_OFFLINE_SHOP_SYSTEM
sizeof(WORD) + sizeof(WORD) + sizeof(TOfflineShopTable) * m_map_OfflineShopTable.size() +
#endif
sizeof (WORD);
peer->EncodeHeader (HEADER_DG_BOOT, 0, dwPacketSize);
peer->Encode (&dwPacketSize, sizeof (DWORD));
peer->Encode (&bPacketVersion, sizeof (BYTE));
sys_log (0, "BOOT: PACKET: %d", dwPacketSize);
sys_log (0, "BOOT: VERSION: %d", bPacketVersion);
sys_log (0, "sizeof(TMobTable) = %d", sizeof (TMobTable));
sys_log (0, "sizeof(TItemTable) = %d", sizeof (TItemTable));
sys_log (0, "sizeof(TShopTable) = %d", sizeof (TShopTable));
sys_log (0, "sizeof(TSkillTable) = %d", sizeof (TSkillTable));
sys_log (0, "sizeof(TRefineTable) = %d", sizeof (TRefineTable));
sys_log (0, "sizeof(TItemAttrTable) = %d", sizeof (TItemAttrTable));
sys_log (0, "sizeof(TItemRareTable) = %d", sizeof (TItemAttrTable));
sys_log (0, "sizeof(TBanwordTable) = %d", sizeof (TBanwordTable));
sys_log (0, "sizeof(TLand) = %d", sizeof (building::TLand));
sys_log (0, "sizeof(TObjectProto) = %d", sizeof (building::TObjectProto));
sys_log (0, "sizeof(TObject) = %d", sizeof (building::TObject));
//ADMIN_MANAGER
sys_log (0, "sizeof(tAdminInfo) = %d * %d ", sizeof (tAdminInfo) * vAdmin.size());
//END_ADMIN_MANAGER
#ifdef WJ_OFFLINE_SHOP_SYSTEM
sys_log(0, "sizeof(TOfflineShopTable) = %u", sizeof(TOfflineShopTable));
#endif
peer->EncodeWORD (sizeof (TMobTable));
peer->EncodeWORD (m_vec_mobTable.size());
peer->Encode (&m_vec_mobTable[0], sizeof (TMobTable) * m_vec_mobTable.size());
peer->EncodeWORD (sizeof (TItemTable));
peer->EncodeWORD (m_vec_itemTable.size());
peer->Encode (&m_vec_itemTable[0], sizeof (TItemTable) * m_vec_itemTable.size());
peer->EncodeWORD (sizeof (TShopTable));
peer->EncodeWORD (m_iShopTableSize);
peer->Encode (m_pShopTable, sizeof (TShopTable) * m_iShopTableSize);
peer->EncodeWORD (sizeof (TSkillTable));
peer->EncodeWORD (m_vec_skillTable.size());
peer->Encode (&m_vec_skillTable[0], sizeof (TSkillTable) * m_vec_skillTable.size());
peer->EncodeWORD (sizeof (TRefineTable));
peer->EncodeWORD (m_iRefineTableSize);
peer->Encode (m_pRefineTable, sizeof (TRefineTable) * m_iRefineTableSize);
peer->EncodeWORD (sizeof (TItemAttrTable));
peer->EncodeWORD (m_vec_itemAttrTable.size());
peer->Encode (&m_vec_itemAttrTable[0], sizeof (TItemAttrTable) * m_vec_itemAttrTable.size());
peer->EncodeWORD (sizeof (TItemAttrTable));
peer->EncodeWORD (m_vec_itemRareTable.size());
peer->Encode (&m_vec_itemRareTable[0], sizeof (TItemAttrTable) * m_vec_itemRareTable.size());
peer->EncodeWORD (sizeof (TBanwordTable));
peer->EncodeWORD (m_vec_banwordTable.size());
peer->Encode (&m_vec_banwordTable[0], sizeof (TBanwordTable) * m_vec_banwordTable.size());
peer->EncodeWORD (sizeof (building::TLand));
peer->EncodeWORD (m_vec_kLandTable.size());
peer->Encode (&m_vec_kLandTable[0], sizeof (building::TLand) * m_vec_kLandTable.size());
peer->EncodeWORD (sizeof (building::TObjectProto));
peer->EncodeWORD (m_vec_kObjectProto.size());
peer->Encode (&m_vec_kObjectProto[0], sizeof (building::TObjectProto) * m_vec_kObjectProto.size());
peer->EncodeWORD (sizeof (building::TObject));
peer->EncodeWORD (m_map_pkObjectTable.size());
itertype (m_map_pkObjectTable) it = m_map_pkObjectTable.begin();
while (it != m_map_pkObjectTable.end())
{
peer->Encode ((it++)->second, sizeof (building::TObject));
}
time_t now = time (0);
peer->Encode (&now, sizeof (time_t));
TItemIDRangeTable itemRange = CItemIDRangeManager::instance().GetRange();
TItemIDRangeTable itemRangeSpare = CItemIDRangeManager::instance().GetRange();
peer->EncodeWORD (sizeof (TItemIDRangeTable));
peer->EncodeWORD (1);
peer->Encode (&itemRange, sizeof (TItemIDRangeTable));
peer->Encode (&itemRangeSpare, sizeof (TItemIDRangeTable));
peer->SetItemIDRange (itemRange);
peer->SetSpareItemIDRange (itemRangeSpare);
//ADMIN_MANAGER
peer->EncodeWORD (16);
peer->EncodeWORD (vHost.size());
for (size_t n = 0; n < vHost.size(); ++n)
{
peer->Encode (vHost[n].c_str(), 16);
sys_log (0, "GMHosts %s", vHost[n].c_str());
}
peer->EncodeWORD (sizeof (tAdminInfo));
peer->EncodeWORD (vAdmin.size());
for (size_t n = 0; n < vAdmin.size(); ++n)
{
peer->Encode (&vAdmin[n], sizeof (tAdminInfo));
sys_log (0, "Admin name %s ConntactIP %s", vAdmin[n].m_szName, vAdmin[n].m_szContactIP);
}
//END_ADMIN_MANAGER
#ifdef WJ_OFFLINE_SHOP_SYSTEM
peer->EncodeWORD(sizeof(TOfflineShopTable));
peer->EncodeWORD(m_map_OfflineShopTable.size());
auto it2 = m_map_OfflineShopTable.begin();
while (it2 != m_map_OfflineShopTable.end())
peer->Encode(&(it2++)->second, sizeof(TOfflineShopTable));
#endif
peer->EncodeWORD (0xffff);
}