Hikayeler

Reklam vermek için turkmmo@gmail.com

TC Offlineshop Efsun Bozulması Fix

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

Teşekkürler.
 
teşşekürler atakan reboot atınca alan kişinin efsunu bozulma fixi dimi ?
 
4 taş ekledikten sonra yüksek ihtimalle yaşayacağınız bir sorundur sorundan kısaca bahsedecek olursak eğer ; 5 efsun 4 taş item offlineshop'a koyulduktan sonra reboot çekilir ardından oyuna giriş yapılır ve iteminizin efsunları bozulmuş şekilde geri alınır. sorun offlineshopun kaybolduktan sonraki geri alma fonksiyonunda değerlerin olağandan düşük olarak belirlenmesinden kaynaklıdır.​

offlineshop_manager.cpp açılır ve bulunur​

Kod:
    MYSQL_ROW row;
    while (NULL != (row = mysql_fetch_row(pMsg->Get()->pSQLResult)))
    {
        TPlayerItem item;

        str_to_number(item.pos, row[0]);
        str_to_number(item.count, row[1]);
        str_to_number(item.vnum, row[2]);

        for (int i = 0, n = 3; i < ITEM_SOCKET_MAX_NUM; ++i, n++)
            str_to_number(item.alSockets[i], row[n]);

        for (int i = 0, iStartAttributeType = 6, iStartAttributeValue = ITEM_ATTRIBUTE_MAX_NUM; i < ITEM_ATTRIBUTE_MAX_NUM; ++i, iStartAttributeType += 2, iStartAttributeValue += 2)
        {
            str_to_number(item.aAttr[i].bType, row[iStartAttributeType]);
            str_to_number(item.aAttr[i].sValue, row[iStartAttributeValue]);
        }

        LPITEM pItem = ITEM_MANAGER::instance().CreateItem(item.vnum, item.count);

        if (pItem)
        {
            pItem->SetSockets(item.alSockets);
            pItem->SetAttributes(item.aAttr);

            int cell;
            cell = ch->GetEmptyInventory(pItem->GetSize());

            if (cell != -1)
            {
                pItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
            }
            else
            {
                pItem->AddToGround(ch->GetMapIndex(), ch->GetXYZ());
                pItem->StartDestroyEvent();
                pItem->SetOwnership(ch, 60);
            }

            // release DB
            DBManager::instance().DirectQuery("DELETE FROM %soffline_shop_item WHERE owner_id = %u AND pos = %d AND vnum = %d LIMIT 1", get_table_postfix(), ch->GetPlayerID(), item.pos, item.vnum);
          
            /* log for web */
            LogManager::instance().OfflineShopLog(ch->GetDesc()->GetAccountTable().id, pItem->GetName(), "FETCH");
            /* end log for web */
        }
    }

komple değiştirilir​

Kod:
    TPlayerItem item;
    int rows;
    if (!(rows = mysql_num_rows(pMsg->Get()->pSQLResult)))
        return;

    for (int i = 0; i < rows; ++i)
    {
        MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult);
        int cur = 0;

        str_to_number(item.pos, row[cur++]);
        str_to_number(item.count, row[cur++]);
        str_to_number(item.vnum, row[cur++]);
        for (BYTE a = 0; a < ITEM_SOCKET_MAX_NUM; a++)
            str_to_number(item.alSockets[a], row[cur++]);

        for (int j = 0; j < ITEM_ATTRIBUTE_MAX_NUM; j++)
        {
            str_to_number(item.aAttr[j].bType, row[cur++]);
            str_to_number(item.aAttr[j].sValue, row[cur++]);
        }
    }

    LPITEM pItem = ITEM_MANAGER::instance().CreateItem(item.vnum, item.count);

    if (pItem)
    {
        pItem->SetSockets(item.alSockets);
        pItem->SetAttributes(item.aAttr);

        int cell;
        cell = ch->GetEmptyInventory(pItem->GetSize());

        if (cell != -1)
        {
            pItem->AddToCharacter(ch, TItemPos(INVENTORY, cell));
        }
        else
        {
            pItem->AddToGround(ch->GetMapIndex(), ch->GetXYZ());
            pItem->StartDestroyEvent();
            pItem->SetOwnership(ch, 60);
        }

        // release DB
        DBManager::instance().DirectQuery("DELETE FROM %soffline_shop_item WHERE owner_id = %u AND pos = %d AND vnum = %d LIMIT 1", get_table_postfix(), ch->GetPlayerID(), item.pos, item.vnum);
          
        /* log for web */
        LogManager::instance().OfflineShopLog(ch->GetDesc()->GetAccountTable().id, pItem->GetName(), "FETCH");
        /* end log for web */
    }

lqb8AE.jpg
Paylaşım için teşekkürler.
 

Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)

Geri
Üst