Yardım offline shop syseer hk

  • Konuyu açan Konuyu açan enes turan
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 7
  • Gösterim Gösterim 45
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

enes turan

Yardımsever Üye
Yardımsever Üye
MT Üye
Mesaj
519
Çözümler
32
Beğeni
232
Puan
609
Ticaret Puanı
0
merhabalar konudaki shopu geliştirdiğim filese ekledim fakat oyuna girişte şöyle bir syseer atıyor ve oyun aılmıyor ne sebep olabilir bilgisi olan varmı

syseer
Kod:
Genişlet Daralt Kopyala
CInputDB::Boot: boot packet end check error [c0c]!=0xffff


yazdıran kod

input_db.cpp:
Genişlet Daralt Kopyala
    WORD endCheck=decode_2bytes (data);
    if (endCheck != 0xffff)
    {
        sys_err ("boot packet end check error [%x]!=0xffff", endCheck);
        thecore_shutdown();
        return;
    }
    else
    {
        sys_log (0, "boot packet end check ok [%x]==0xffff", endCheck);
    }
    data +=2;
 
Merhaba,
Hataya göre endCheck değeri 0xffff ile eşleşmediği için if koşulunun çalıştığını göstermiş. decode_2bytes(data) fonksiyonunun yanlış değer döndürdüğünü veya data verisinin bozulduğunu işaret ediyor sanki. Veri nerden geliyo doğru değerlermi geliyo. decode_2bytes fonksiyonunun doğru çalıştığına emin olmalısın. Data yıda incelesen iyi olur nerden geliyo, nasıl tanımlanmış vs.
 
Yardım için daha fazla koda ihtiyaç var. Ama görünen o ki client-server arası iletişim kurulamıyor.

Merhaba,
Hataya göre endCheck değeri 0xffff ile eşleşmediği için if koşulunun çalıştığını göstermiş. decode_2bytes(data) fonksiyonunun yanlış değer döndürdüğünü veya data verisinin bozulduğunu işaret ediyor sanki. Veri nerden geliyo doğru değerlermi geliyo. decode_2bytes fonksiyonunun doğru çalıştığına emin olmalısın. Data yıda incelesen iyi olur nerden geliyo, nasıl tanımlanmış vs.


input_db.cpp:
Genişlet Daralt Kopyala
#ifdef WJ_OFFLINE_SHOP_SYSTEM
    if (decode_2bytes(data) != sizeof(TOfflineShopTable))
    {
        sys_err("offline shop table size error");
        thecore_shutdown();
        return;
    }

    data += 2;
    size = decode_2bytes(data);
    data += 2;

    TOfflineShopTable *pOfflineShopTable = (TOfflineShopTable*) data;
    WORD offlineShopTableSize = size;

    data += size * sizeof(TOfflineShopTable);
#endif

böyle blok ekletiyor belki bu yardımcı olur veya hangi kaynaklar gerekliyse konuya dahil edebilirim
 
db build ettin mi? etmediysen db build et ve tekrar dene.
db başarıyla build aldım

db/clientmanager.cpp:
Genişlet Daralt Kopyala
//ARA :
        sys_log(0, "MONARCHCandidacy Size %d", CMonarch::instance().MonarchCandidacySize());

//ALTINA EKLE :
#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

şöyle bir kod eklettiriyor bende ara dediği kod olmadığı için eklemem gereken kodu
şuraya ekledim acaba burasımı yanlış
db/clientmanager.cpp:
Genişlet Daralt Kopyala
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);
}
 
db başarıyla build aldım

db/clientmanager.cpp:
Genişlet Daralt Kopyala
//ARA :
        sys_log(0, "MONARCHCandidacy Size %d", CMonarch::instance().MonarchCandidacySize());

//ALTINA EKLE :
#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

şöyle bir kod eklettiriyor bende ara dediği kod olmadığı için eklemem gereken kodu
şuraya ekledim acaba burasımı yanlış
db/clientmanager.cpp:
Genişlet Daralt Kopyala
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);
}
Burayı doğru eklemişsin. Hangi offline shopu ekliyosun. Paylaşılan felan mı ?
Ha birde defineyi eklediğin yerlere include olarak service.h eklesene hepsi service.ha bağlı olsun belki görmediği yerler vardır.
 
Burayı doğru eklemişsin. Hangi offline shopu ekliyosun. Paylaşılan felan mı ?
Ha birde defineyi eklediğin yerlere include olarak service.h eklesene hepsi service.ha bağlı olsun belki görmediği yerler vardır.
konudaki shop

define olarak sadece db deki dosyalara mı yoksa komple eklediğim dosyalara mı yapayım
 
Üst