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

📄 itemutil.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		Level_t	CLevel = pOusters->getLevel();		// gamble且 荐 乐绰 茄拌甫 粱 歹 臭囚夯促.		CLevel += 3;		// level力茄		if (maxLevel!=0)		{			CLevel = min((int)maxLevel, (int)CLevel);		}		Attr_t    ReqLevel, ReqLevel2;		// 10锅父 倒妨夯促.		int i = 10;		do		{			itemType = pInfoClass->getRandomItemType();			// 捞 itemType阑 积己秦档 登绰 level牢瘤 犬牢茄促.			pItemInfo = g_pItemInfoManager->getItemInfo(itemClass, itemType);			ReqLevel2 = ReqLevel  = pItemInfo->getReqLevel();			// 饭骇 力茄捞 绝芭唱 力茄 饭骇捞 臭绊			// 己喊捞 嘎酒具 茄促.			if ((ReqLevel <= 0 || CLevel >= ReqLevel))			{				break;			}		} while (--i);		if (i==0)		{			itemType = 0;		}		// 酒捞袍捞 可记阑 啊瘤绊 乐促搁, 		// 可记狼 辆幅俊 蝶扼辑 瓷仿摹 力茄阑 棵妨霖促.		int maxOptionLevel = max(1, min(100, (int)CLevel));		const vector<OptionType_t>& optionVector = g_pOptionInfoManager->getPossibleGambleOptionVector((Item::ItemClass)itemClass, maxOptionLevel);		vector<OptionType_t>::const_iterator iOption;		// Total OptionRatio甫 备茄促.		int itemOptionRatio = g_pOptionInfoManager->getTotalGambleRatio((Item::ItemClass)itemClass, maxOptionLevel);		/*		cout << "optionVector[" << (int)itemClass << "][" << (int)maxOptionLevel << "] = (" << optionVector.size() << ") = ";		for (iOption=optionVector.begin(); iOption!=optionVector.end(); iOption++)		{			cout << (int)*iOption << "  ";		}		cout << endl;		*/		if (optionVector.size()>0 && itemOptionRatio>0			&& (pItemInfo==NULL || !pItemInfo->isUnique()))		{			// 10锅父 倒妨夯促.			int i = 10;						do {				// random栏肺 option阑 急琶茄促.				int optionRatio = random()%itemOptionRatio;				int ratioSum      = 0;				//cout << "Ratio = " << optionRatio << "/" << itemOptionRatio << endl;				OptionInfo* pOptionInfo = NULL;				for (iOption=optionVector.begin(); iOption!=optionVector.end(); iOption++)				{					optionType = *iOption;					pOptionInfo = g_pOptionInfoManager->getOptionInfo( optionType );					ratioSum += pOptionInfo->getRatio();					if (optionRatio < ratioSum)					{						// 捞 option阑 急琶茄促.						break;					}				}				// option狼 夸备 瓷仿摹甫 歹秦辑				ReqLevel = ReqLevel2 + pOptionInfo->getReqLevel();				// player狼 瓷仿摹俊 嘎绰 酒捞袍牢瘤 犬牢茄促.				if (ReqLevel <= 0 || CLevel >= ReqLevel)				{					// 捞 option type栏肺 搬沥茄促.					break;				}			} while (--i);			if (i==0)			{				optionType = 0;//(rand()%3==0? 1: (rand()%2? 6:11));			}		}		// 公可!  // 利例茄霸 绝栏搁 STR+1, DEX+1, INT+1 吝俊辑 鞠芭唱..		else optionType = 0;//(rand()%3==0? 1: (rand()%2? 6:11));	}	// item阑 积己秦辑 逞败霖促.	list<OptionType_t> optionTypes;	if (optionType!=0)		optionTypes.push_back( optionType );	Item* pItem = g_pItemFactoryManager->createItem(itemClass, itemType, optionTypes);	pItem->setGrade( min(6,ItemGradeManager::Instance().getRandomGambleGrade()) );	return pItem;	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// 可记捞 嘿阑 荐 乐绰 酒捞袍牢啊?//////////////////////////////////////////////////////////////////////////////bool isPossibleOptionItemClass(Item::ItemClass IClass){	switch (IClass)	{		case Item::ITEM_CLASS_HELM :		case Item::ITEM_CLASS_NECKLACE :		case Item::ITEM_CLASS_RING :		case Item::ITEM_CLASS_BRACELET :		case Item::ITEM_CLASS_SHIELD :		case Item::ITEM_CLASS_GLOVE :		case Item::ITEM_CLASS_COAT :		case Item::ITEM_CLASS_BELT :		case Item::ITEM_CLASS_TROUSER :		case Item::ITEM_CLASS_SHOES :		case Item::ITEM_CLASS_SWORD :		case Item::ITEM_CLASS_BLADE :		case Item::ITEM_CLASS_CROSS :		case Item::ITEM_CLASS_MACE :		case Item::ITEM_CLASS_AR :		case Item::ITEM_CLASS_SR :		case Item::ITEM_CLASS_SG :		case Item::ITEM_CLASS_SMG :		case Item::ITEM_CLASS_VAMPIRE_NECKLACE :		case Item::ITEM_CLASS_VAMPIRE_RING :		case Item::ITEM_CLASS_VAMPIRE_BRACELET :		case Item::ITEM_CLASS_VAMPIRE_EARRING :		case Item::ITEM_CLASS_VAMPIRE_COAT :		case Item::ITEM_CLASS_VAMPIRE_WEAPON :		case Item::ITEM_CLASS_VAMPIRE_AMULET :		case Item::ITEM_CLASS_OUSTERS_ARMSBAND:		case Item::ITEM_CLASS_OUSTERS_BOOTS:		case Item::ITEM_CLASS_OUSTERS_CHAKRAM:		case Item::ITEM_CLASS_OUSTERS_CIRCLET:		case Item::ITEM_CLASS_OUSTERS_COAT:		case Item::ITEM_CLASS_OUSTERS_PENDENT:		case Item::ITEM_CLASS_OUSTERS_RING:		case Item::ITEM_CLASS_OUSTERS_STONE:		case Item::ITEM_CLASS_OUSTERS_WRISTLET:			return true;		default :			return false;	}	return false;}//////////////////////////////////////////////////////////////////////////////// 促澜 窜拌肺 诀弊饭捞靛瞪 荐 乐绰 ItemType牢啊//////////////////////////////////////////////////////////////////////////////bool isPossibleUpgradeItemType(Item::ItemClass IClass){	switch (IClass)	{		case Item::ITEM_CLASS_HELM :		case Item::ITEM_CLASS_NECKLACE :		case Item::ITEM_CLASS_RING :		case Item::ITEM_CLASS_BRACELET :		case Item::ITEM_CLASS_SHIELD :		case Item::ITEM_CLASS_GLOVE :		case Item::ITEM_CLASS_COAT :		case Item::ITEM_CLASS_BELT :		case Item::ITEM_CLASS_TROUSER :		case Item::ITEM_CLASS_SHOES :		case Item::ITEM_CLASS_SWORD :		case Item::ITEM_CLASS_BLADE :		case Item::ITEM_CLASS_CROSS :		case Item::ITEM_CLASS_MACE :		case Item::ITEM_CLASS_AR :		case Item::ITEM_CLASS_SR :		case Item::ITEM_CLASS_SG :		case Item::ITEM_CLASS_SMG :		case Item::ITEM_CLASS_VAMPIRE_NECKLACE :		case Item::ITEM_CLASS_VAMPIRE_RING :		case Item::ITEM_CLASS_VAMPIRE_BRACELET :		case Item::ITEM_CLASS_VAMPIRE_EARRING :		case Item::ITEM_CLASS_VAMPIRE_COAT :		case Item::ITEM_CLASS_VAMPIRE_WEAPON :		case Item::ITEM_CLASS_VAMPIRE_AMULET :		case Item::ITEM_CLASS_OUSTERS_ARMSBAND:		case Item::ITEM_CLASS_OUSTERS_BOOTS:		case Item::ITEM_CLASS_OUSTERS_CHAKRAM:		case Item::ITEM_CLASS_OUSTERS_CIRCLET:		case Item::ITEM_CLASS_OUSTERS_COAT:		case Item::ITEM_CLASS_OUSTERS_PENDENT:		case Item::ITEM_CLASS_OUSTERS_RING:		case Item::ITEM_CLASS_OUSTERS_STONE:		case Item::ITEM_CLASS_OUSTERS_WRISTLET:			return true;		default :			return false;	}	return false;}ItemType_t getUpgradeItemType(Item::ItemClass IClass, ItemType_t itemType, ItemType_t upgradeCount){	if (upgradeCount==0)		return itemType;	InfoClassManager* pInfoClass = g_pItemInfoManager->getInfoManager(IClass);	Assert(pInfoClass!=NULL);	// 酒捞袍 诀弊饭捞靛 沥焊啊 DB俊 甸绢埃促. 咯扁辑绰 林绢柳 雀荐父怒 促澜 ItemType栏肺 颗败埃促.	ItemType_t newItemType = itemType;	for ( int i=0; i<upgradeCount; i++ )	{		ItemInfo* pItemInfo = pInfoClass->getItemInfo( newItemType );		Assert(pItemInfo!=NULL);		newItemType = pItemInfo->getNextItemType();	}	//cout << "ItemType Upgrade By Luck: " << itemType << " --[+" << upgradeCount << "]--> ";/*	int maxItemType = pInfoClass->getInfoCount()-1;	// 捞固 弥绊 酒捞袍牢 版快	if (itemType==maxItemType)	{		//cout << itemType << "(max)" << endl;		return itemType;	}	int itemTypeGap = 1;	// 酒捞袍 窜拌 鉴辑啊 2窜拌究 登绢 乐绰 酒捞袍	if (IClass==Item::ITEM_CLASS_COAT		|| IClass==Item::ITEM_CLASS_TROUSER		|| IClass==Item::ITEM_CLASS_VAMPIRE_COAT)	{		itemTypeGap = 2;	}	int newItemType = min(maxItemType, itemType + upgradeCount*itemTypeGap);	// 2窜拌究 扒呈剁绢具且 版快	if (itemTypeGap==2		&& (itemType & 0x01)!=(newItemType & 0x01)) newItemType -= 1;	// 弥绊 酒捞袍捞 蜡聪农老 荐档 乐绰单.. 捞扒 哗林磊..	while (newItemType > itemType)	{		ItemInfo* pItemInfo = pInfoClass->getItemInfo( newItemType );		Assert(pItemInfo!=NULL);		// 蜡聪农扼搁.. 茄 窜拌究 撤苗霖促.		if (pItemInfo->isUnique()) newItemType-=itemTypeGap;		else break;	}	//cout << newItemType << endl;*/	return newItemType;}ItemType_t getDowngradeItemType(Item::ItemClass IClass, ItemType_t itemType){	InfoClassManager* pInfoClass = g_pItemInfoManager->getInfoManager(IClass);	Assert(pInfoClass!=NULL);	for ( int i=0; i<pInfoClass->getInfoCount(); ++i )	{		ItemInfo* pItemInfo = pInfoClass->getItemInfo( i );		Assert(pItemInfo!=NULL);		if ( pItemInfo->getNextItemType() == itemType ) return i;	}	return itemType;}/*//////////////////////////////////////////////////////////////////////////////// 农府胶付胶 飘府 捞亥飘侩//////////////////////////////////////////////////////////////////////////////// 飘府 炼阿阑 八祸TPOINT checkEventTree( PlayerCreature* pPC, CoordInven_t iX, CoordInven_t iY ){	__BEGIN_TRY	Assert( pPC != NULL );	TPOINT pt;	pt.x = -1;	pt.y = -1;	Inventory*		pInventory		= pPC->getInventory();	Item*			pCurItem		= pInventory->getItem( iX, iY );	if ( pCurItem == NULL )		return pt;	ItemType_t		itemType		= pCurItem->getItemType();	CoordInven_t	startX = iX - itemType % 3; 	CoordInven_t	startY = iY - itemType / 3;	if ( pInventory->getWidth() - 3 < startX )		return pt;	if ( pInventory->getHeight() - 4 < startY )		return pt;	CoordInven_t curIX = 0, curIY = 0;	ItemType_t compType = 0;	// 飘府 炼阿捞 力措肺 嘎苗廉 乐绰瘤 犬牢茄促.	for ( curIY = startY; curIY < startY + 4; curIY++ )	{		for ( curIX = startX; curIX < startX + 3; curIX++ )		{			pCurItem = pInventory->getItem( curIX, curIY );			if ( pCurItem == NULL )				return pt;			if ( pCurItem->getItemClass() != Item::ITEM_CLASS_EVENT_TREE || 				 pCurItem->getItemType() != compType )				return pt;			compType++;		}	}	pt.x = startX;	pt.y = startY;	return pt;	__END_CATCH}// 绊措巩清TPOINT checkEventDocument( PlayerCreature* pPC, CoordInven_t iX, CoordInven_t iY ){	__BEGIN_TRY	Assert( pPC != NULL );	TPOINT pt;	pt.x = -1;	pt.y = -1;	Inventory*		pInventory		= pPC->getInventory();	Item*			pCurItem		= pInventory->getItem( iX, iY );	if ( pCurItem == NULL )		return pt;	ItemType_t		itemType		= pCurItem->getItemType();	// 绊措巩清 炼阿篮 13何磐 矫累茄促	itemType = itemType - 13;	CoordInven_t	startX = iX - itemType % 3; 	CoordInven_t	startY = iY - itemType / 3;	if ( pInventory->getWidth() - 3 < startX )		return pt;	if ( pInventory->getHeight() - 4 < startY )		return pt;	CoordInven_t curIX = 0, curIY = 0;	// 绊措巩清 炼阿篮 13何磐 矫累茄促	ItemType_t compType = 13;	// 绊措 公清 炼阿捞 力措肺 嘎苗廉 乐绰瘤 犬牢茄促.	for ( curIY = startY; curIY < startY + 4; curIY++ )	{		for ( curIX = startX; curIX < startX + 3; curIX++ )		{			pCurItem = pInventory->getItem( curIX, curIY );			if ( pCurItem == NULL )				return pt;			if ( pCurItem->getItemClass() != Item::ITEM_CLASS_EVENT_TREE || 				 pCurItem->getItemType() != compType )				return pt;			compType++;		}	}	pt.x = startX;	pt.y = startY;	return pt;	__END_CATCH}// 牢屈 -_-;; 捞芭 老馆拳 陛规 矫懦 巴 鞍篮单 ;; 牢磊父 窍唱 歹 罐档废 窍搁 -_-;// 淬俊 涅胶飘 锭绰 老馆拳 矫虐档废 窍磊. ぱ.ぱaTPOINT checkEventDoll( PlayerCreature* pPC, CoordInven_t iX, CoordInven_t iY ){	__BEGIN_TRY	Assert( pPC != NULL );	TPOINT pt;	pt.x = -1;	pt.y = -1;	Inventory*		pInventory		= pPC->getInventory();	Item*			pCurItem		= pInventory->getItem( iX, iY );	if ( pCurItem == NULL )		return pt;	ItemType_t		itemType		= pCurItem->getItemType();	// 牢屈 炼阿篮 29何磐 矫累茄促	itemType = itemType - 29;	CoordInven_t	startX = iX - itemType % 3; 	CoordInven_t	startY = iY - itemType / 3;	if ( pInventory->getWidth() - 3 < startX )		return pt;	if ( pInventory->getHeight() - 4 < startY )		return pt;	CoordInven_t curIX = 0, curIY = 0;	// 牢屈 炼阿篮 29何磐 矫累茄促	ItemType_t compType = 29;	// 绊措 公清 炼阿捞 力措肺 嘎苗廉 乐绰瘤 犬牢茄促.	for ( curIY = startY; curIY < startY + 4; curIY++ )	{		for ( curIX = startX; curIX < startX + 3; curIX++ )		{			pCurItem = pInventory->getItem( curIX, curIY );			if ( pCurItem == NULL )				return pt;			if ( pCurItem->getItemClass() != Item::ITEM_CLASS_EVENT_TREE || 				 pCurItem->getItemType() != compType )				return pt;			compType++;		}	}	pt.x = startX;	pt.y = startY;	return pt;	__END_CATCH}*/// 老馆拳 矫挪 芭 checkEventTree 尔 checkEventDocument 尔 checkEventDoll 篮 瘤快磊TPOINT checkEventPuzzle( PlayerCreature* pPC, CoordInven_t iX, CoordInven_t iY, int start){

⌨️ 快捷键说明

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