Item usage count

isthambul1453

Premium Üye
Premium Üye
Üye
Mesaj
80
Beğeni
65
Puan
331
Ticaret Puanı
0
Her bir öğenin kaç kez kullanıldığını saklamak için yeni bir SQL tablosu oluşturularak manuel büyüleme yerine kullanıma dayalı bonuslar sağlandı

Kullanım sayılarını otomatik olarak yüklemek, kaydetmek ve artırmak için öğe sınıfına kullanım izleme işlevleri eklendi

Mevcut öğeler için kullanım sayılarını yeni tablodan yüklemek üzere öğe oluşturma güncellendi

Her başarılı kullanımın kullanım sayısını artırması ve eşik değerlere ulaşıldığında bir özellik uygulanması için öğe kullanımı değiştirildi

o geliştirme enerji ve progressbar sistemini yapmak için buradaki kısımdan faydalanabilirsiniz.

item.cpp aç ve ekle en alta

C++:
Genişlet Daralt Kopyala
void CItem::IncreaseUsageCount()
{
        ++m_dwUsageCount;
        if (m_dwUsageCount >= 100)
        {
                AddAttribute();
                m_dwUsageCount = 0;
        }
        SaveUsageCount();
}

void CItem::LoadUsageCount()
{
        if (!m_dwID)
        {
                m_dwUsageCount = 0;
                return;
        }
        char szQuery[128];
        snprintf(szQuery, sizeof(szQuery),
                "SELECT usage_count FROM item_usage WHERE item_id=%u",
                m_dwID);
        std::auto_ptr<SQLMsg> pmsg(DBManager::instance().DirectQuery(szQuery));
        SQLResult* pRes = pmsg->Get();
        if (pRes->uiNumRows > 0)
        {
                MYSQL_ROW row = mysql_fetch_row(pRes->pSQLResult);
                str_to_number(m_dwUsageCount, row[0]);
        }
}

void CItem::SaveUsageCount()
{
        if (!m_dwID)
                return;
        char szQuery[128];
        snprintf(szQuery, sizeof(szQuery),
                "REPLACE INTO item_usage (item_id, usage_count) VALUES (%u, %u)",
                m_dwID, m_dwUsageCount);
        DBManager::instance().DirectQuery(szQuery);
}

initialize kısmında bul

C++:
Genişlet Daralt Kopyala
memset(&m_alSockets, 0, sizeof(m_alSockets));

altına ekle

C++:
Genişlet Daralt Kopyala
m_dwUsageCount = 0;

item.h içerisinde arat

C++:
Genişlet Daralt Kopyala
void        ApplyAddon(int iAddonType);

alta ekle

void            IncreaseUsageCount();
void            LoadUsageCount();
void            SaveUsageCount();
void            SetUsageCount(DWORD dw) { m_dwUsageCount = dw; }
DWORD           GetUsageCount() const { return m_dwUsageCount; }

tekrar arat

LPEVENT        m_pkOwnershipEvent;

altına ekle

DWORD           m_dwUsageCount;

item_manager.cpp de bul ve değiştir

C++:
Genişlet Daralt Kopyala
    else if (!bIsNewItem)
    {
        item->SetID(id);
        item->SetSkipSave(true);

    }

to

    else if (!bIsNewItem)
    {
        item->SetID(id);
        item->SetSkipSave(true);
        item->LoadUsageCount();
    }

item.cpp en üste includelara ekle


char_item.cpp içerisinde bul

return UseItemEx(item, DestCell);

değiştir

bool ret2 = UseItemEx(item, DestCell);
if (ret2)
item->IncreaseUsageCount();
return ret2;

arat

bool ret = UseItemEx(item, DestCell);

altına ekle

if (ret)
item->IncreaseUsageCount();

sql

CREATE TABLE IF NOT EXISTS `item_usage` (
`item_id` INT UNSIGNED NOT NULL,
`usage_count` INT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
Geri
Üst