Çözüldü Pazar süresi kaldırmada sorun?

  • Konuyu açan Konuyu açan melihalbayrak
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 2
  • Gösterim Gösterim 529
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

melihalbayrak

Geliştirici
Geliştirici
Yardımsever Üye
Usta Üye
Mesaj
1.241
Çözümler
81
Beğeni
677
Puan
1.109
Ticaret Puanı
0
Selamlar arkadaşlar pazar sistemindeki süre limitini kaldırdım sorun yok pazar süresiz açılıyor fakat şu kısımdaki mantığı çözemedim. UNIX_TIMESTAMP(date_close), kısmı sql tablosuna pazarın ne kadar süresinin kaldığının bilgisini almaya yarıyor kodların devamında da insert kısmında yine "shop_id, owner_id, owner_name, map_index, x, y, z, race, count, name" şeklinde devam ediyor ama date_close kısmını oradan kaldırdığım için sql tablosuna değer girmiyor varsayılan 0 değeri var. Soruna gelecek olursak arkadaşlar " auto pMsg(DBManager::instance().DirectQuery("SELECT shop_id, owner_id, owner_name, map_index, x, y, z, UNIX_TIMESTAMP(date_close), race, count, name FROM" bu kısımdaki UNIX_TIMESTAMP(date_close), bu kısımı sildiğimde pazarlar oyunda gözükmüyor pazar açık ama fiziki olarak haritada yok. Sonrasında bu kod bloğundaki şu kısımı;

C++:
Genişlet Daralt Kopyala
        uint32_t dwShopVid = 0, dwPlayerId = 0, dwRace = 0;

        int32_t map_index = 0, x = 0, y = 0, z = 0;

        uint8_t bItemCount = 0;

        str_to_number(dwShopVid, row[0]);

        str_to_number(dwPlayerId, row[1]);

        str_to_number(map_index, row[3]);

        str_to_number(x, row[4]);

        str_to_number(y, row[5]);

        str_to_number(z, row[6]);

        str_to_number(dwRace, row[8]);

        str_to_number(bItemCount, row[9]);

        LPSECTREE sectree = SECTREE_MANAGER::instance().Get(map_index, x, y);

Buradaki row değerleri 4 5 6 vs diye gidiyor buradaki dwRace değerini 8'den 7 yaptığımda oyunda pazarlar geliyor ama bu defada pazarların isimleri gözükmüyor. Buradaki mantığı anlamadım gitti bu row değerlerini 1 2 3 4 5 6 7 8 vs diye sıralayarak da yaptım ama sonuç yine pazarlar gözükmüyor dwRace 7 yaptığımda yine pazarlar geliyor isimleri gözükmüyor. Sql tablosundaki sıralama şu şekilde. Şuan date_close tabloda var ama sourceden date_close kaldırdığımda bu tablodanda kaldırıyorum.

Ekran görüntüsü 2022-04-05 190157.webp


C++:
Genişlet Daralt Kopyala
void CShopManager::BuildPremiumPrivateShop()
{
    auto pMsg(DBManager::instance().DirectQuery("SELECT shop_id, owner_id, owner_name, map_index, x, y, z, UNIX_TIMESTAMP(date_close), race, count, name FROM player.player_shop WHERE status = 1"));
    SQLResult * pRes = pMsg->Get();
    MYSQL_ROW row;

    if (!pRes || !pRes->uiNumRows)
    {
        return;
    }

    while ((row = mysql_fetch_row(pRes->pSQLResult)))
    {
        uint32_t dwShopVid = 0, dwPlayerId = 0, dwRace = 0;
        int32_t map_index = 0, x = 0, y = 0, z = 0;
        uint8_t bItemCount = 0;
        str_to_number(dwShopVid, row[0]);
        str_to_number(dwPlayerId, row[1]);
        str_to_number(map_index, row[3]);
        str_to_number(x, row[4]);
        str_to_number(y, row[5]);
        str_to_number(z, row[6]);
        str_to_number(dwRace, row[8]);
        str_to_number(bItemCount, row[9]);
        LPSECTREE sectree = SECTREE_MANAGER::instance().Get(map_index, x, y);

        if (!sectree)
        {
            sys_log(0, "cannot find sectree by %dx%d mapindex %d", x, y, map_index);
            return;
        }

        LPSHOP pkShop = NULL;
        char queryStr[1024];
        snprintf(queryStr, sizeof(queryStr),
            "SELECT id, owner_id, `window`+0,pos,count,vnum,socket0,socket1,socket2,attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6,price,shop_id "
            "FROM player.item WHERE shop_id=%u", dwShopVid);

        auto pMsg2(DBManager::instance().DirectQuery(queryStr));
        SQLResult * pRes2 = pMsg2->Get();

        if (pRes2->uiNumRows > 0)
        {
            pkShop = M2_NEW CShop;
            pkShop->SetPremiumPrivateShop(true);

            static std::vector<TPlayerItem> s_items;
            CreateItemTableFromRes(pRes2->pSQLResult, &s_items);
            for (uint32_t i = 0; i < s_items.size(); ++i)
            {
                TPlayerItem & p = s_items.at(i);
                LPITEM item = ITEM_MANAGER::instance().CreateItem(p.vnum, p.count, p.id);

                if (!item)
                {
                    sys_err("cannot create item by vnum %u id %u", p.vnum, p.id);
                    continue;
                }

                item->SetSkipSave(true);
                item->SetOwnerPID(p.owner);
                item->SetOwnerName(row[2]);
                item->SetCell(nullptr, p.pos);
                item->SetSockets(p.alSockets);
                item->SetAttributes(p.aAttr);
                item->SetPremiumPrivateShopVid(p.shop_id);
                item->SetPremiumPrivateShopPrice(p.price);
                item->SetSkipSave(false);

                if (!p.owner && !p.pos)
                {
                    item->SetOwnerPID(dwPlayerId);
                }

                pkShop->SetPremiumPrivateShopItem(item);
            }
        }
        else
        {
            auto pMsg(DBManager::instance().DirectQuery("UPDATE player.player_shop SET status = 0 WHERE shop_id = %d and owner_id = %d", dwShopVid, dwPlayerId));

            if(pMsg->Get()->uiAffectedRows == 0)
            {
                sys_err("Update Fail Build Premium Private Shop");
                return;
            }
        }

        if(pkShop)
        {
            LPOFFSHOP pkPremiumPrivateShop = M2_NEW CPremiumPrivateShop(pkShop, dwRace);

            if(!pkPremiumPrivateShop)
            {
                sys_err("Fail to create Build Premium Private Shop: %d", dwShopVid);
                return;
            }

            pkPremiumPrivateShop->SetMapIndex(map_index);
            pkPremiumPrivateShop->SetXYZ(x, y, z);
            pkPremiumPrivateShop->SetOwnerName(row[2]);
            pkPremiumPrivateShop->SetSign(row[10]);
            pkPremiumPrivateShop->SetPlayerID(dwPlayerId);
            sectree->InsertEntity(pkPremiumPrivateShop);
            pkPremiumPrivateShop->UpdateSectree();
            pkPremiumPrivateShop->SetShopVid(dwShopVid);
            m_map_pkPrivateOfflineShop.insert(TOfflinePrivateShopMap::value_type(pkPremiumPrivateShop->GetShopVid(), pkPremiumPrivateShop));
        }
    }
}
 
Son düzenleme:
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst