- 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
initialize kısmında bul
altına ekle
item.h içerisinde arat
item_manager.cpp de bul ve değiştir
item.cpp en üste includelara ekle
char_item.cpp içerisinde bul
değiştir
arat
altına ekle
sql
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++:
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++:
memset(&m_alSockets, 0, sizeof(m_alSockets));
altına ekle
C++:
m_dwUsageCount = 0;
item.h içerisinde arat
C++:
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++:
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
#include "db.h"
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;