Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Poradnik dla tych, którzy posiadają moje pliki serwerowe bądź mój przełącznik czytania bazy "bez/ z txt" */
- // Znajdź całą strukturę bool:
- bool CClientManager::InitializeItemTable()
- {
- ...
- }
- // Zamień na:
- bool CClientManager::InitializeItemTable()
- {
- char query[4096];
- fprintf(stderr, "Ładuję item_proto z MySQL\r\n");
- snprintf(query, sizeof(query),
- "SELECT vnum, 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, "
- "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++]);
- 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[i].bType, data[col++]);
- str_to_number(item_table->aLimits[i].lValue, data[col++]);
- if (LIMIT_REAL_TIME_START_FIRST_USE == item_table->aLimits[i].bType)
- item_table->cLimitRealTimeFirstUseIndex = (char)i;
- if (LIMIT_TIMER_BASED_ON_WEAR == item_table->aLimits[i].bType)
- item_table->cLimitTimerBasedOnWearIndex = (char)i;
- }
- for (i = 0; i < ITEM_APPLY_MAX_NUM; ++i)
- {
- str_to_number(item_table->aApplies[i].bType, data[col++]);
- str_to_number(item_table->aApplies[i].lValue, data[col++]);
- }
- for (i = 0; i < ITEM_VALUES_MAX_NUM; ++i)
- str_to_number(item_table->alValues[i], 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());
- fprintf(stderr, " Gotowe! Załadowano: %d itemów.\r\n", m_vec_itemTable.size());
- //sys_log(0, " Załadowano: %d itemów.", m_vec_itemTable.size());
- return true;
- }
- // Jeśli kompilujesz z nowszym gcc niż 4.2, to znajdź w powyższym kodzie:
- auto_ptr
- // Zamień na:
- unique_ptr
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement