J'ai repris le code et appliqué au file 2016 V3 et il ne fonctionne pas.
Voila la version corrigé pour les fichiers 2016 V3 pour l'item proto
bool CClientManager::InitializeItemTable()
{
char query[2048];
fprintf(stderr,"Loading item_proto from MySQL");
snprintf(query, sizeof(query),
"SELECT vnum,name,%s,type,subtype,weight,size,antiflag,flag,wearflag,immuneflag+0,gold,shop_buy_price,refined_vnum,"
"refine_set,magic_pct,limittype0,limitvalue0,limittype1,limitvalue1,applytype0,applyvalue0,"
"applytype1,applyvalue1,applytype2,applyvalue2,value0,value1,value2,value3,value4,value5,socket_pct,addon_type 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)
return false;
int addNumber = pRes->uiNumRows;
if (!m_vec_itemTable.empty())
{
sys_log(0, "RELOAD: item_proto");
m_vec_itemTable.clear();
m_map_itemTableByVnum.clear();
}
m_vec_itemTable.resize(addNumber-1);
memset(&m_vec_itemTable[0], 0, sizeof(TItemTable) * m_vec_itemTable.size());
TItemTable * item_table = &m_vec_itemTable[0];
MYSQL_ROW data;
//return true;
set<int> vnumSet;
while ((data = mysql_fetch_row(pRes->pSQLResult)))
{
str_to_number(item_table->dwVnum, data[0]);
strlcpy(item_table->szName,data[1] , sizeof(item_table->szName));
strlcpy(item_table->szLocaleName, data[2], sizeof(item_table->szLocaleName));
str_to_number(item_table->bType, data[3]);
str_to_number(item_table->bSubType, data[4]);
str_to_number(item_table->bWeight, data[5]);
str_to_number(item_table->bSize, data[6]);
str_to_number(item_table->dwAntiFlags, data[7]);
str_to_number(item_table->dwFlags, data[8]);
str_to_number(item_table->dwWearFlags, data[9]);
str_to_number(item_table->dwImmuneFlag, data[10]);
str_to_number(item_table->dwGold, data[11]);
str_to_number(item_table->dwShopBuyPrice, data[12]);
str_to_number(item_table->dwRefinedVnum, data[13]);
str_to_number(item_table->wRefineSet, data[14]);
str_to_number(item_table->bAlterToMagicItemPct, data[15]);
item_table->cLimitRealTimeFirstUseIndex = -1;
item_table->cLimitTimerBasedOnWearIndex = -1;
str_to_number(item_table->aLimits[0].bType, data[16]);
str_to_number(item_table->aLimits[0].lValue, data[17]);
if (LIMIT_REAL_TIME_START_FIRST_USE == item_table->aLimits[0].bType)
item_table->cLimitRealTimeFirstUseIndex = (char)0;
if (LIMIT_TIMER_BASED_ON_WEAR == item_table->aLimits[0].bType)
item_table->cLimitTimerBasedOnWearIndex = (char)0;
str_to_number(item_table->aLimits[1].bType, data[18]);
str_to_number(item_table->aLimits[1].lValue, data[19]);
if (LIMIT_REAL_TIME_START_FIRST_USE == item_table->aLimits[1].bType)
item_table->cLimitRealTimeFirstUseIndex = (char)1;
if (LIMIT_TIMER_BASED_ON_WEAR == item_table->aLimits[1].bType)
item_table->cLimitTimerBasedOnWearIndex = (char)1;
str_to_number(item_table->aApplies[0].bType, data[20]);
str_to_number(item_table->aApplies[0].lValue, data[21]);
str_to_number(item_table->aApplies[1].bType, data[22]);
str_to_number(item_table->aApplies[1].lValue, data[23]);
str_to_number(item_table->aApplies[2].bType, data[24]);
str_to_number(item_table->aApplies[2].lValue, data[25]);
str_to_number(item_table->alValues[0], data[26]);
str_to_number(item_table->alValues[1], data[27]);
str_to_number(item_table->alValues[2], data[28]);
str_to_number(item_table->alValues[3], data[29]);
str_to_number(item_table->alValues[4], data[30]);
str_to_number(item_table->alValues[5], data[31]);
str_to_number(item_table->bGainSocketPct, data[32]);
str_to_number(item_table->sAddonType, data[33]);
vnumSet.insert(item_table->dwVnum);
m_map_itemTableByVnum.insert(std::map<DWORD, TItemTable *>::value_type(item_table->dwVnum, item_table));
// test_map_mobTableByVnum.insert(std::map<DWORD, TMobTable *>::value_type(test_mob_table->dwVnum, test_mob_table));
sys_log(0, "ITEM: #%-5lu %-24s %-24s VAL: %d %ld %d %d %d %d WEAR %d ANTI %d IMMUNE %d 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);
item_table++;
}
fprintf(stderr,"Complete LOAD ITEM ! %d Items loaded.\r\n",addNumber);
return true;
}