⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 optioninfo.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	} catch (Throwable& t) {		cerr << t.toString().c_str() << endl;		throw;	}		__END_CATCH}void OptionInfoManager::addOptionInfo(OptionInfo* pOptionInfo)	throw (DuplicatedException, Error){	__BEGIN_TRY	// OptionType栏肺 备盒登绰 秦浆甘俊促 笼绢持绰促.	hash_map<OptionType_t, OptionInfo*>::iterator itr = m_OptionInfos.find(pOptionInfo->getType());	if (itr != m_OptionInfos.end())	{		StringStream msg;		msg << "DupOptionType: OptionType=" << (int)pOptionInfo->getType()			<< ", Nickname=" << pOptionInfo->getNickname();		throw DuplicatedException(msg.toString());	}	m_OptionInfos[pOptionInfo->getType()] = pOptionInfo;	// Nickname栏肺 备盒登绰 秦浆甘俊促 笼绢持绰促.	hash_map<string, OptionInfo*>::iterator itr2 = m_NicknameOptionInfos.find(pOptionInfo->getNickname());	if (itr2 != m_NicknameOptionInfos.end())	{		StringStream msg;		msg << "DupNickname: OptionType=" << (int)pOptionInfo->getType()			<< ", Nickname=" << pOptionInfo->getNickname();		throw DuplicatedException(msg.toString().c_str());	}	m_NicknameOptionInfos[pOptionInfo->getNickname()] = pOptionInfo;		__END_CATCH}OptionInfo* OptionInfoManager::getOptionInfo(OptionType_t OptionType)	throw (NoSuchElementException, Error){	__BEGIN_TRY	//cout << "getOptionInfo(" << (int)OptionType << ") " << endl;	hash_map<OptionType_t, OptionInfo*>::iterator itr = m_OptionInfos.find(OptionType);	if (itr == m_OptionInfos.end())	{		//cerr << "OptionInfoManager::getOptionInfo() : No Such Element Exception. OptionType=" << (int)OptionType << endl;		//throw NoSuchElementException();		// nosuch力芭. 2002.8.23. by sigi		return NULL;	}	return itr->second;		__END_CATCH}OptionInfo* OptionInfoManager::getOptionInfo(const string& nickname)	throw (NoSuchElementException, Error){	__BEGIN_TRY	hash_map<string, OptionInfo*>::iterator itr = m_NicknameOptionInfos.find(nickname);	if (itr == m_NicknameOptionInfos.end())	{		//cerr << "OptionInfoManager::getOptionInfo() : No Such Element Exception" << endl;		//throw NoSuchElementException();		// nosuch力芭. 2002.8.23. by sigi		return NULL;	}	return itr->second;		__END_CATCH}OptionType_t OptionInfoManager::getOptionType(const string& nickname)	throw (NoSuchElementException, Error){	__BEGIN_TRY	hash_map<string, OptionInfo*>::iterator itr = m_NicknameOptionInfos.find(nickname);	if (itr == m_NicknameOptionInfos.end())	{		cerr << "OptionInfoManager::getOptionInfo() : No Such Element Exception" << endl;		throw NoSuchElementException();	}	OptionInfo* pInfo = itr->second;	return pInfo->getType();		__END_CATCH}string OptionInfoManager::getOptionName(const list<OptionType_t>& optionTypes)	throw (NoSuchElementException, Error){	__BEGIN_TRY	StringStream optionName;	list<OptionType_t>::const_iterator itr;	for (itr = optionTypes.begin() ; itr != optionTypes.end() ; itr++)	{		OptionInfo* pOptionInfo = getOptionInfo( *itr );		optionName << pOptionInfo->getName() << " ";	}	return optionName.toString();	__END_CATCH}vector<OptionType_t> OptionInfoManager::getPossibleOptionVector(Item::ItemClass IClass, uint minLevel, uint maxLevel)	throw(){	__BEGIN_TRY	vector<OptionType_t> temp;	switch (IClass)	{		// WEAPON		case Item::ITEM_CLASS_BLADE:		case Item::ITEM_CLASS_SWORD:		case Item::ITEM_CLASS_SG:		case Item::ITEM_CLASS_SMG:		case Item::ITEM_CLASS_AR:		case Item::ITEM_CLASS_SR:		case Item::ITEM_CLASS_CROSS:		case Item::ITEM_CLASS_MACE:		case Item::ITEM_CLASS_VAMPIRE_WEAPON:			m_OptionInfoSet[OPTION_STR].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DEX].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_INT].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_HP].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_HP_STEAL].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_MP_STEAL].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_TOHIT].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DAMAGE].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DURABILITY].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ATTACK_SPEED].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ALL_ATTR].getPossibleOptionTypes(minLevel, maxLevel, temp);			if ( IClass != Item::ITEM_CLASS_VAMPIRE_WEAPON )				m_OptionInfoSet[OPTION_MP].getPossibleOptionTypes(minLevel, maxLevel, temp);			break;		// ARMOR		case Item::ITEM_CLASS_HELM:		case Item::ITEM_CLASS_COAT:		case Item::ITEM_CLASS_TROUSER:		case Item::ITEM_CLASS_SHOES:		case Item::ITEM_CLASS_GLOVE:		case Item::ITEM_CLASS_BELT:		case Item::ITEM_CLASS_SHIELD:		case Item::ITEM_CLASS_VAMPIRE_COAT:			m_OptionInfoSet[OPTION_STR].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DEX].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_INT].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_HP].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DEFENSE].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_PROTECTION].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DURABILITY].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ALL_ATTR].getPossibleOptionTypes(minLevel, maxLevel, temp);			if ( IClass != Item::ITEM_CLASS_VAMPIRE_COAT )				m_OptionInfoSet[OPTION_MP].getPossibleOptionTypes(minLevel, maxLevel, temp);			break;		// ACCESSORY		case Item::ITEM_CLASS_RING:		case Item::ITEM_CLASS_BRACELET:		case Item::ITEM_CLASS_NECKLACE:		case Item::ITEM_CLASS_VAMPIRE_RING:		case Item::ITEM_CLASS_VAMPIRE_EARRING:		case Item::ITEM_CLASS_VAMPIRE_BRACELET:		case Item::ITEM_CLASS_VAMPIRE_NECKLACE:			m_OptionInfoSet[OPTION_STR].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DEX].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_INT].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_HP].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_HP_STEAL].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_MP_STEAL].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_HP_REGEN].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_MP_REGEN].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_TOHIT].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DAMAGE].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DEFENSE].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_PROTECTION].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DURABILITY].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_POISON].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ACID].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_CURSE].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_BLOOD].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_VISION].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ATTACK_SPEED].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ALL_RES].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ALL_ATTR].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_STR_TO_DEX].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_STR_TO_INT].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DEX_TO_STR].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DEX_TO_INT].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_INT_TO_STR].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_INT_TO_DEX].getPossibleOptionTypes(minLevel, maxLevel, temp);			if (IClass!=Item::ITEM_CLASS_VAMPIRE_EARRING)				m_OptionInfoSet[OPTION_LUCK].getPossibleOptionTypes(minLevel, maxLevel, temp);			if ( IClass != Item::ITEM_CLASS_VAMPIRE_RING &&			 	 IClass != Item::ITEM_CLASS_VAMPIRE_EARRING &&				 IClass != Item::ITEM_CLASS_VAMPIRE_BRACELET &&				 IClass != Item::ITEM_CLASS_VAMPIRE_NECKLACE )				m_OptionInfoSet[OPTION_MP].getPossibleOptionTypes(minLevel, maxLevel, temp);			break;		case Item::ITEM_CLASS_VAMPIRE_AMULET:			m_OptionInfoSet[OPTION_STR].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DEX].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_INT].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_HP].getPossibleOptionTypes(minLevel, maxLevel, temp);//			m_OptionInfoSet[OPTION_MP].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_HP_STEAL].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_MP_STEAL].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_HP_REGEN].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_MP_REGEN].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_TOHIT].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DAMAGE].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DURABILITY].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_POISON].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ACID].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_CURSE].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_BLOOD].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_VISION].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ATTACK_SPEED].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_LUCK].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ALL_RES].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ALL_ATTR].getPossibleOptionTypes(minLevel, maxLevel, temp);			break;		case Item::ITEM_CLASS_OUSTERS_CHAKRAM:		case Item::ITEM_CLASS_OUSTERS_WRISTLET:			m_OptionInfoSet[OPTION_STR].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DEX].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_INT].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_HP].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_MP].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_HP_STEAL].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_MP_STEAL].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_TOHIT].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DAMAGE].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DURABILITY].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ATTACK_SPEED].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_CRITICAL_HIT].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ALL_ATTR].getPossibleOptionTypes(minLevel, maxLevel, temp);			break;		case Item::ITEM_CLASS_OUSTERS_COAT:		case Item::ITEM_CLASS_OUSTERS_BOOTS:		case Item::ITEM_CLASS_OUSTERS_ARMSBAND:			m_OptionInfoSet[OPTION_STR].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DEX].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_INT].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_HP].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_MP].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DEFENSE].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_PROTECTION].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DURABILITY].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_POISON].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ACID].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_CURSE].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_BLOOD].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_LUCK].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ALL_RES].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ALL_ATTR].getPossibleOptionTypes(minLevel, maxLevel, temp);			break;		case Item::ITEM_CLASS_OUSTERS_CIRCLET:		case Item::ITEM_CLASS_OUSTERS_PENDENT:		case Item::ITEM_CLASS_OUSTERS_RING:			m_OptionInfoSet[OPTION_STR].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DEX].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_INT].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_HP].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_MP].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_HP_STEAL].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_MP_STEAL].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_TOHIT].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DAMAGE].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_DEFENSE].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_PROTECTION].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_POISON].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ACID].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_CURSE].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_BLOOD].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_VISION].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ATTACK_SPEED].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_CRITICAL_HIT].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_LUCK].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ALL_RES].getPossibleOptionTypes(minLevel, maxLevel, temp);			m_OptionInfoSet[OPTION_ALL_ATTR].getPossibleOptionTypes(minLevel, maxLevel, temp);			break;		default:			break;	}	return temp;	__END_CATCH}void OptionInfoManager::addGambleOption(Item::ItemClass itemClass, uint level, OptionType_t optionType) 	throw(DuplicatedException, Error){	m_GambleOptions[itemClass][level].push_back( optionType );}int OptionInfoManager::getRareUpgradeRatio( OptionType_t optionType, bool success ){	OptionInfo* pOI = getOptionInfo( optionType );	if ( pOI == NULL ) throw Error("OptionInfoManager::getRareUpgradeRatio() : 可记 牢器啊 绝嚼聪促.");	OptionClassInfo* pOCI = m_OptionClassInfos[pOI->getClass()];	if ( pOCI == NULL ) throw Error("OptionInfoManager::getRareUpgradeRatio() : 可记 努贰胶 牢器啊 绝嚼聪促.");	RareOptionUpgradeInfo* pROUI = m_RareEnchantInfo[pOCI->getKey()];	if ( pROUI == NULL ) throw Error("OptionInfoManager::getRareUpgradeRatio() : 饭绢 牢忙飘 牢器啊 绝嚼聪促.");	return pROUI->getRatio( pOI->getGrade(), success );}void OptionInfoManager::addPetEnchantOption(PetEnchantOption* pPetEnchantOption)	throw(){	__BEGIN_TRY	Assert( pPetEnchantOption != NULL);	m_PetEnchantOptionList.push_back(pPetEnchantOption);	__END_CATCH}string OptionInfoManager::toString() const	throw(){	__BEGIN_TRY	StringStream msg;	msg << "OptionInfoManager(\n";	for (uint i=0; i<OPTION_MAX; i++)		msg << m_OptionInfoSet[i].toString();	msg << "\n)";	return msg.toString();	__END_CATCH}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -