noisiv 1
noisiv
Manwe Work 1
Manwe Work
farkmt2official 1
farkmt2official
mavzermete 1
mavzermete
dreamstone 1
dreamstone
Fethi Polat 1
Fethi Polat
Bvural41 1
Bvural41
Hikaye Ekle

APPLY_MAX_NUM'u --"4"-- e TAŞIMAK

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Öncelikle sistemi tamamalamaya yardımcı olan bütün herekese teşekkürler Soru-Cevap Bölümündeki
Özellikle @sourisincii arkadaşıma çok teşekkür ediyorum ve konuya gelelim

Sistem özelliği APPLY_MAX_NUM'u 3'ten 4'e taşımaktır

Bu sayede questten özellik verme yerine protodan kolayca halledilebilecektir uzatmadan anlatıma geçelim



ITEM_APPLY_MAX_NUM = 3,

//Değiştir

ITEM_APPLY_MAX_NUM = 4,

//Ekle

#define ENABLE4APPLY

// Bul
bool CClientManager::MirrorItemTableIntoDB()

// Değiştir

bool CClientManager::MirrorItemTableIntoDB()
{
for (itertype(m_vec_itemTable) it = m_vec_itemTable.begin(); it != m_vec_itemTable.end(); it++)
{
if (g_stLocaleNameColumn != "name")
{
const TItemTable& t = *it;
char query[4096];
snprintf(query, sizeof(query),
"replace into item_proto%s ("
"vnum, type, subtype, name, %s, gold, shop_buy_price, weight, size, "
"flag, wearflag, antiflag, immuneflag, "
"refined_vnum, refine_set, magic_pct, socket_pct, addon_type, "
"limittype0, limitvalue0, limittype1, limitvalue1, "
"applytype0, applyvalue0, applytype1, applyvalue1, applytype2, applyvalue2, "
#ifdef ENABLE4APPLY
"applytype3, applyvalue3,"
#endif
"value0, value1, value2, value3, value4, value5 ) "
"values ("
"%d, %d, %d, \"%s\", \"%s\", %d, %d, %d, %d, "
"%d, %d, %d, %d, "
"%d, %d, %d, %d, %d, "
"%d, %d, %d, %d, "
"%d, %d, %d, %d, %d, %d, "
"%d, %d, %d, %d, %d, %d )",
GetTablePostfix(), g_stLocaleNameColumn.c_str(),
t.dwVnum, t.bType, t.bSubType, t.szName, t.szLocaleName, t.dwGold, t.dwShopBuyPrice, t.bWeight, t.bSize,
t.dwFlags, t.dwWearFlags, t.dwAntiFlags, t.dwImmuneFlag,
t.dwRefinedVnum, t.wRefineSet, t.bAlterToMagicItemPct, t.bGainSocketPct, t.sAddonType,
t.aLimits[0].bType, t.aLimits[0].lValue, t.aLimits[1].bType, t.aLimits[1].lValue,
t.aApplies[0].bType, t.aApplies[0].lValue, t.aApplies[1].bType, t.aApplies[1].lValue, t.aApplies[2].bType, t.aApplies[2].lValue,
t.alValues[0], t.alValues[1], t.alValues[2], t.alValues[3], t.alValues[4], t.alValues[5]);
CDBManager::instance().AsyncQuery(query);
}
else
{
const TItemTable& t = *it;
char query[4096];
snprintf(query, sizeof(query),
"replace into item_proto%s ("
"vnum, type, subtype, name, gold, shop_buy_price, weight, size, "
"flag, wearflag, antiflag, immuneflag, "
"refined_vnum, refine_set, magic_pct, socket_pct, addon_type, "
"limittype0, limitvalue0, limittype1, limitvalue1, "
"applytype0, applyvalue0, applytype1, applyvalue1, applytype2, applyvalue2, "
#ifdef ENABLE4APPLY
"applytype3, applyvalue3,"
#endif
"value0, value1, value2, value3, value4, value5 ) "
"values ("
"%d, %d, %d, \"%s\", %d, %d, %d, %d, "
"%d, %d, %d, %d, "
"%d, %d, %d, %d, %d, "
"%d, %d, %d, %d, "
"%d, %d, %d, %d, %d, %d, "
"%d, %d, %d, %d, %d, %d )",
GetTablePostfix(),
t.dwVnum, t.bType, t.bSubType, t.szName, t.dwGold, t.dwShopBuyPrice, t.bWeight, t.bSize,
t.dwFlags, t.dwWearFlags, t.dwAntiFlags, t.dwImmuneFlag,
t.dwRefinedVnum, t.wRefineSet, t.bAlterToMagicItemPct, t.bGainSocketPct, t.sAddonType,
t.aLimits[0].bType, t.aLimits[0].lValue, t.aLimits[1].bType, t.aLimits[1].lValue,
t.aApplies[0].bType, t.aApplies[0].lValue, t.aApplies[1].bType, t.aApplies[1].lValue, t.aApplies[2].bType, t.aApplies[2].lValue,
t.alValues[0], t.alValues[1], t.alValues[2], t.alValues[3], t.alValues[4], t.alValues[5]);
CDBManager::instance().AsyncQuery(query);
}
}
return true;
}

//Bul
bool CClientManager::InitializeItemTableSQL()
//Değiştir
bool CClientManager::InitializeItemTableSQL()
{
char query[4096];
snprintf(query, sizeof(query),
"SELECT vnum, vnum_range, name, %s, type, subtype, gold, shop_buy_price, weight, size, flag, wearflag, "
"antiflag, immuneflag+0, refined_vnum, refine_set, magic_pct, socket_pct, addon_type, "
"limittype0, limitvalue0, limittype1, limitvalue1, "
"applytype0, applyvalue0, applytype1, applyvalue1, applytype2, applyvalue2, "
#ifdef ENABLE4APPLY
"applytype3, applyvalue3,"
#endif
"value0, value1, value2, value3, value4, value5 "
"FROM item_proto%s ORDER BY vnum",
g_stLocaleNameColumn.c_str(), GetTablePostfix());

std::auto_ptr<SQLMsg> pkMsg(CDBManager::instance().DirectQuery(query));
SQLResult * pRes = pkMsg->Get();

if (!pRes->uiNumRows)
{
sys_err("Could not load item_proto. No results!");
return false;
}

sys_log(0, "ITEM_PROTO loading...");

if (!m_vec_itemTable.empty())
{
sys_log(0, "RELOAD: item_proto");
m_vec_itemTable.clear();
m_map_itemTableByVnum.clear();
}

m_vec_itemTable.resize(pRes->uiNumRows);
memset(&m_vec_itemTable[0], 0, sizeof(TItemTable) * m_vec_itemTable.size());
TItemTable * item_table = &m_vec_itemTable[0];

MYSQL_ROW data;
int col;

while ((data = mysql_fetch_row(pRes->pSQLResult)))
{
col = 0;

str_to_number(item_table->dwVnum, data[col++]);
str_to_number(item_table->dwVnumRange, data[col++]);
strlcpy(item_table->szName, data[col++], sizeof(item_table->szName));
strlcpy(item_table->szLocaleName, data[col++], sizeof(item_table->szLocaleName));
str_to_number(item_table->bType, data[col++]);
str_to_number(item_table->bSubType, data[col++]);
str_to_number(item_table->dwGold, data[col++]);
str_to_number(item_table->dwShopBuyPrice, data[col++]);
str_to_number(item_table->bWeight, data[col++]);
str_to_number(item_table->bSize, data[col++]);
str_to_number(item_table->dwFlags, data[col++]);
str_to_number(item_table->dwWearFlags, data[col++]);
str_to_number(item_table->dwAntiFlags, data[col++]);
str_to_number(item_table->dwImmuneFlag, data[col++]);
str_to_number(item_table->dwRefinedVnum, data[col++]);
str_to_number(item_table->wRefineSet, data[col++]);
str_to_number(item_table->bAlterToMagicItemPct, data[col++]);
str_to_number(item_table->bGainSocketPct, data[col++]);
str_to_number(item_table->sAddonType, data[col++]);

item_table->cLimitRealTimeFirstUseIndex = -1;
item_table->cLimitTimerBasedOnWearIndex = -1;

int i;
for (i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)
{
str_to_number(item_table->aLimits.bType, data[col++]);
str_to_number(item_table->aLimits.lValue, data[col++]);

if (LIMIT_REAL_TIME_START_FIRST_USE == item_table->aLimits.bType)
item_table->cLimitRealTimeFirstUseIndex = (char)i;

if (LIMIT_TIMER_BASED_ON_WEAR == item_table->aLimits.bType)
item_table->cLimitTimerBasedOnWearIndex = (char)i;
}

for (i = 0; i < ITEM_APPLY_MAX_NUM; ++i)
{
str_to_number(item_table->aApplies.bType, data[col++]);
str_to_number(item_table->aApplies.lValue, data[col++]);
}

for (i = 0; i < ITEM_VALUES_MAX_NUM; ++i)
str_to_number(item_table->alValues, data[col++]);

sys_log(1, "ITEM: #%-5lu %-24s %-24s VAL: %ld %ld %ld %ld %ld %ld WEAR %lu ANTI %lu IMMUNE %lu REFINE %lu REFINE_SET %u MAGIC_PCT %u",
item_table->dwVnum,item_table->szName,item_table->szLocaleName,
item_table->alValues[0],item_table->alValues[1],item_table->alValues[2],
item_table->alValues[3],item_table->alValues[4],item_table->alValues[5],
item_table->dwWearFlags,item_table->dwAntiFlags,item_table->dwImmuneFlag,
item_table->dwRefinedVnum,item_table->wRefineSet,item_table->bAlterToMagicItemPct);

m_map_itemTableByVnum.insert(std::map<DWORD, TItemTable *>::value_type(item_table->dwVnum, item_table));
++item_table;
}

sort(m_vec_itemTable.begin(), m_vec_itemTable.end(), FCompareVnum());
sys_log(0, "CClientManager::InitializeMobTable:: %d items loaded.n", m_vec_itemTable.size());
return true;
}

ITEM_APPLY_MAX_NUM = 3,

//Değiştir

ITEM_APPLY_MAX_NUM = 4,

Ek olarak locale/triçindeki item proto içine

ADDON_TYPE2 ADDON_VALUE2 VALUE0

kısımlarını değiştirip

ADDON_TYPE2 ADDON_VALUE2 ADDON_TYPE3 ADDON_VALUE3 VALUE0

hepsine APPLY_NONE 0 eklemen gerekiyor

client tarafındaki item proto için noTXT değil ise üsttekileri yapman lazım NoTXT ise

Navicat/query kısmına
alter table player.item_proto add (applytype3 TINYINT(4), applyvalue3 INT(11));
yaz satırlar eklensin


UtPnVp.png
asd.png
hiç bir sorun yok lakin nacivat item proto da kayma var nasıl yaparım

Screenshot_1.jpg
 
Son düzenleme:
dostlar herkese merhabalar, konuyu hortlatıcam. bütün herşey okey src taraflı v.s protoda problem yok 5 efsun olarak güncelledim ben aynı işlemleri 5 efsun olarak yaptım dediğim gibi herşey sorunsuz tek problem en fazla 3ü karaktere işliyo bunu nasıl yapıcaz çözemedim pack kısmı gözüküyo navicat item proto kayma vardı düzelttim yine aynı bilgisi olan varmı ?
 

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

Geri
Üst