Jump to content

[Problem]Item Stackable


Recommended Posts

Hello devs,
This is about item stackable .. When i drop an item and take it stacking but when get any item from boxes its not stacking..
Moreover this moonlight box which drops from mobs its not stacking.when i got from monster,it occupies single slot every item.when i drag to another moonlight its stacking.. 
what i must do in source or DB to make it stack.
i tried everything in db like Flag value change to 4 and 21 everything.. nothing works...
Give me a solution for it 
thanks in advance 

Human

Link to comment
Share on other sites

  • Replies 6
  • Created
  • Last Reply

Top Posters In This Topic

ClientManagerBoot.cpp

 

bool CClientManager::InitializeItemTable()
{
	char query[4096];
	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, vnum_range "
		"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());
	sys_log(0, "CClientManager::InitializeMobTable:: %d items loaded.\n", m_vec_itemTable.size());
	fprintf(stderr,"Database load complete! %d items loaded.\r\n", m_vec_itemTable.size());
	
	const char* sMessage_1 = "Database -----";
	const char* sMessage_2 = "rev. perforce 40250";
	fprintf(stderr,"-- %s || %s --\r\n", sMessage_1, sMessage_2);
	
	return true;
}

 

Link to comment
Share on other sites

  • 2 years later...
  • 3 years later...

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.