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

📄 itemutil.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		case Item::ITEM_CLASS_BOMB_MATERIAL:		case Item::ITEM_CLASS_ETC:		case Item::ITEM_CLASS_KEY:		case Item::ITEM_CLASS_BOMB:		case Item::ITEM_CLASS_MINE:		case Item::ITEM_CLASS_LEARNINGITEM:		case Item::ITEM_CLASS_CORPSE:		case Item::ITEM_CLASS_SKULL:		case Item::ITEM_CLASS_SERUM:		case Item::ITEM_CLASS_VAMPIRE_ETC:		case Item::ITEM_CLASS_VAMPIRE_PORTAL_ITEM:		case Item::ITEM_CLASS_EVENT_GIFT_BOX:		case Item::ITEM_CLASS_EVENT_STAR:		case Item::ITEM_CLASS_MONEY:		case Item::ITEM_CLASS_VAMPIRE_AMULET:		case Item::ITEM_CLASS_QUEST_ITEM:		case Item::ITEM_CLASS_RELIC:		case Item::ITEM_CLASS_BLOOD_BIBLE:		case Item::ITEM_CLASS_CASTLE_SYMBOL:		case Item::ITEM_CLASS_COUPLE_RING:		case Item::ITEM_CLASS_VAMPIRE_COUPLE_RING:		case Item::ITEM_CLASS_EVENT_ITEM:		case Item::ITEM_CLASS_MOON_CARD:		case Item::ITEM_CLASS_SWEEPER://		case Item::ITEM_CLASS_PET_ITEM:		case Item::ITEM_CLASS_LUCKY_BAG:			return false;		default:			return true;	}	return true;}//////////////////////////////////////////////////////////////////////////////// 酒捞袍阑 荐府茄促.//////////////////////////////////////////////////////////////////////////////void repairItem(Item* pItem){	if (pItem != NULL		&& !pItem->isUnique())	{		Item::ItemClass IClass = pItem->getItemClass();		if (IClass == Item::ITEM_CLASS_SLAYER_PORTAL_ITEM)		{			SlayerPortalItem* pSlayerPortalItem = dynamic_cast<SlayerPortalItem*>(pItem);			pSlayerPortalItem->setCharge(pSlayerPortalItem->getMaxCharge());		}		else if ( IClass == Item::ITEM_CLASS_OUSTERS_SUMMON_ITEM )		{			OustersSummonItem* pOustersSummonItem = dynamic_cast<OustersSummonItem*>(pItem);			pOustersSummonItem->setCharge(pOustersSummonItem->getMaxCharge());		}		else		{			// 弥郴 郴备摹甫 掘绢郴辑			Durability_t maxDurability = computeMaxDurability(pItem);			// 荐府茄促.			pItem->setDurability(maxDurability);		}	}}//////////////////////////////////////////////////////////////////////////////// 酒捞袍狼 弥措 郴备档甫 掘绢辰促.//////////////////////////////////////////////////////////////////////////////Durability_t computeMaxDurability(Item* pItem){	if (pItem == NULL) return 0;//	ItemInfo*    pItemInfo     = g_pItemInfoManager->getItemInfo(pItem->getItemClass(), pItem->getItemType());//	unsigned long maxDurability = pItemInfo->getDurability();	unsigned long maxDurability = pItem->getMaxDurability();	// 100%俊辑 矫累	unsigned long plusPoint = 100;	const list<OptionType_t>& optionTypes = pItem->getOptionTypeList();	//OptionType_t OptionType = pItem->getOptionType();	list<OptionType_t>::const_iterator itr;	for (itr=optionTypes.begin(); itr!=optionTypes.end(); itr++)	{		OptionType_t OptionType = *itr;		if (OptionType != 0)		{			OptionInfo* pOptionInfo = g_pOptionInfoManager->getOptionInfo(OptionType);			if (pOptionInfo->getClass() == OPTION_DURABILITY)			{				plusPoint += (pOptionInfo->getPlusPoint()-100);			}		}	}	maxDurability = (maxDurability * plusPoint / 100);	// 65000 逞绢啊搁 秽荤府抄促 -_-;;;	maxDurability = min( (unsigned long)65000, maxDurability );	return (Durability_t)maxDurability;}//////////////////////////////////////////////////////////////////////////////// 藕芒阑 哎酒尝况霖促. //////////////////////////////////////////////////////////////////////////////Bullet_t reloadArmsItem(Item* pGun, Item* pMagazine){	Assert(pGun != NULL);	Assert(pMagazine != NULL);	// vivid magazine 眉农绰 咯扁 甸绢坷扁 傈俊 茄促. 捞 窃荐绰 公炼扒 reload秦霖促.	if (isSuitableMagazine(pGun, pMagazine, true) == false) return false;	Item::ItemClass IClass        = pGun->getItemClass();	ItemType_t      MagazineType  = pMagazine->getItemType();	ItemInfo*       pItemInfo     = g_pItemInfoManager->getItemInfo(Item::ITEM_CLASS_MAGAZINE, MagazineType);	MagazineInfo*   pMagazineInfo = dynamic_cast<MagazineInfo*>(pItemInfo);	Bullet_t        BulletCount   = pMagazineInfo->getMaxBullets();	Silver_t        Silver        = pMagazineInfo->getMaxSilver();	if (IClass == Item::ITEM_CLASS_AR)	{		AR* pAR = dynamic_cast<AR*>(pGun);		pAR->setBulletCount(BulletCount);		pAR->setSilver(Silver);		return pAR->getBulletCount();	}	else if (IClass == Item::ITEM_CLASS_SR)	{		SR* pSR = dynamic_cast<SR*>(pGun);		pSR->setBulletCount(BulletCount);		pSR->setSilver(Silver);		return pSR->getBulletCount();	}	else if (IClass == Item::ITEM_CLASS_SG)	{		SG* pSG = dynamic_cast<SG*>(pGun);		pSG->setBulletCount(BulletCount);		pSG->setSilver(Silver);		return pSG->getBulletCount();	}	else if (IClass == Item::ITEM_CLASS_SMG)	{		SMG* pSMG = dynamic_cast<SMG*>(pGun);		pSMG->setBulletCount(BulletCount);		pSMG->setSilver(Silver);		return pSMG->getBulletCount();	}	return 0;}//////////////////////////////////////////////////////////////////////////////// 醚舅阑 哗霖促.//////////////////////////////////////////////////////////////////////////////Bullet_t decreaseBullet(Item* pWeapon) 	throw(){	__BEGIN_TRY	if (pWeapon == NULL)	{		ofstream file("bulletBug.txt", ios::out | ios::app);		file << "decreaseBullet() : pWeapon is NULL" <<  endl;		return 0;	}	Item::ItemClass IClass = pWeapon->getItemClass();	Bullet_t        bullet = 0;	Silver_t        silver = 0;	// Gun class甫 眠啊沁促. by sigi. 2002.5.8	/*	if (IClass == Item::ITEM_CLASS_AR		|| IClass == Item::ITEM_CLASS_SMG		|| IClass == Item::ITEM_CLASS_SR		|| IClass == Item::ITEM_CLASS_SG)	{		Gun* pGun = dynamic_cast<Gun*>(pWeapon);		bullet = max(0, (int)(pGun->getBulletCount() - 1));		pGun->setBulletCount(bullet);		silver = max(0, (int)(pGun->getSilver() - 1));		pGun->setSilver(silver);	}	else	{		filelog("bulletBug.log", "decreaseBullet() : Invalid item class : %s\n", ItemClass2String[IClass].c_str());		throw ("decreaseBullet() : Invalid item class");	}	*/	///*	if (IClass == Item::ITEM_CLASS_AR)	{		AR* pAR = dynamic_cast<AR*>(pWeapon);		bullet = max(0, (int)(pAR->getBulletCount() - 1));		pAR->setBulletCount(bullet);		silver = max(0, (int)(pAR->getSilver() - 1));		pAR->setSilver(silver);	}	else if (IClass == Item::ITEM_CLASS_SR)	{		SR* pSR = dynamic_cast<SR*>(pWeapon);		bullet = max(0, (int)(pSR->getBulletCount() - 1));		pSR->setBulletCount(bullet);		silver = max(0, (int)(pSR->getSilver() - 1));		pSR->setSilver(silver);	}	else if (IClass == Item::ITEM_CLASS_SG)	{		SG* pSG = dynamic_cast<SG*>(pWeapon);		bullet = max(0, (int)(pSG->getBulletCount() - 1));		pSG->setBulletCount(bullet);		silver = max(0, (int)(pSG->getSilver() - 1));		pSG->setSilver(silver);	}	else if (IClass == Item::ITEM_CLASS_SMG)	{		SMG* pSMG = dynamic_cast<SMG*>(pWeapon);		bullet = max(0, (int)(pSMG->getBulletCount() - 1));		pSMG->setBulletCount(bullet);		silver = max(0, (int)(pSMG->getSilver() - 1));		pSMG->setSilver(silver);	}	else	{		filelog("bulletBug.log", "decreaseBullet() : Invalid item class : %s\n", ItemClass2String[IClass].c_str());		throw ("decreaseBullet() : Invalid item class");	}	//*/	return bullet;	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// 巢篮 醚舅狼 肮荐甫 府畔//////////////////////////////////////////////////////////////////////////////Bullet_t getRemainBullet(Item* pWeapon) 	throw(){	__BEGIN_TRY	if (pWeapon == NULL) 	{		return 0;	}	Item::ItemClass IClass = pWeapon->getItemClass();	// by sigi. 2002.5.16	/*	if (pWeapon->isGun())	{		Gun* pGun = dynamic_cast<Gun*>(pGun);		return pGun->getBulletCount();	}	*/	if (IClass == Item::ITEM_CLASS_AR)	{		AR* pAR = dynamic_cast<AR*>(pWeapon);		return pAR->getBulletCount();	}	else if (IClass == Item::ITEM_CLASS_SR)	{		SR* pSR = dynamic_cast<SR*>(pWeapon);		return pSR->getBulletCount();	}	else if (IClass == Item::ITEM_CLASS_SG)	{		SG* pSG = dynamic_cast<SG*>(pWeapon);		return pSG->getBulletCount();	}	else if (IClass == Item::ITEM_CLASS_SMG)	{		SMG* pSMG = dynamic_cast<SMG*>(pWeapon);		return pSMG->getBulletCount();	}	else	{		filelog("bullet.log", "getRemainBullet() : Invalid item class : %s\n", ItemClass2String[IClass].c_str());		throw ("getRemainBullet() : Invalid item class");	}	return 0;	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// 林阑 荐 乐绰 酒捞袍牢啊? //////////////////////////////////////////////////////////////////////////////bool isPortableItem(Item* pItem){	Assert(pItem != NULL);//	if ( pItem->isTimeLimitItem() ) return false;	switch (pItem->getItemClass())	{		case Item::ITEM_CLASS_CORPSE:		case Item::ITEM_CLASS_MOTORCYCLE:		case Item::ITEM_CLASS_COUPLE_RING:		case Item::ITEM_CLASS_VAMPIRE_COUPLE_RING:			return false;		default:			return true;	}	return false;}//////////////////////////////////////////////////////////////////////////////// 荤侩且 荐 乐绰 酒捞袍牢啊?// 咯扁辑狼 荤侩捞鄂, 荤侩秦辑 荤扼瘤绰 家葛己 酒捞袍阑 富茄促.//////////////////////////////////////////////////////////////////////////////bool isUsableItem(Item* pItem, Creature* pUser){	Assert(pItem != NULL);	Assert(pUser != NULL);	// 唱吝俊 鞍篮 努贰胶瘤父, 绢恫 巴篮 荤侩且 荐 乐绊,	// 绢恫 巴篮 荤侩且 荐 绝绰 巴捞 唱坷瘤 臼阑鳖?	//ItemType_t IType = pItem->getItemType();	switch (pItem->getItemClass())	{		case Item::ITEM_CLASS_POTION:			if (pUser->isSlayer()) return true;			break;		case Item::ITEM_CLASS_MAGAZINE:			if (pUser->isSlayer()) return true;			break;		case Item::ITEM_CLASS_KEY:			if (g_pVariableManager->isSummonMotorcycle() && pUser->isSlayer()) return true;			break;		case Item::ITEM_CLASS_ETC:			if (pUser->isSlayer() && pItem->getItemType() == 1) return true;			break;		case Item::ITEM_CLASS_SERUM:			if (pUser->isVampire()) return true;			break;		case Item::ITEM_CLASS_VAMPIRE_ETC:			if (pUser->isVampire()) return true;			break;		case Item::ITEM_CLASS_SLAYER_PORTAL_ITEM:			if (pUser->isSlayer()) return true;			break;		case Item::ITEM_CLASS_EVENT_TREE:			if ( pItem->getItemType() == 12 || ( pItem->getItemType() >= 26 && pItem->getItemType() <=28 ) ) return true;	// 肯己等 飘府			break;		case Item::ITEM_CLASS_EVENT_ETC:			return true;			break;		case Item::ITEM_CLASS_COUPLE_RING:			if ( pUser->isSlayer() ) return true;			break;		case Item::ITEM_CLASS_VAMPIRE_COUPLE_RING:			if ( pUser->isVampire() ) return true;			break;		case Item::ITEM_CLASS_DYE_POTION:			return true;		case Item::ITEM_CLASS_RESURRECT_ITEM:			if ( pUser->isFlag(Effect::EFFECT_CLASS_COMA) ) return true;			break;		case Item::ITEM_CLASS_PUPA:			if (pUser->isOusters()) return true;			break;		case Item::ITEM_CLASS_COMPOS_MEI:			if (pUser->isOusters()) return true;			break;		case Item::ITEM_CLASS_OUSTERS_SUMMON_ITEM:			if (pUser->isOusters()) return true;			break;		case Item::ITEM_CLASS_EFFECT_ITEM:		case Item::ITEM_CLASS_PET_ITEM:		case Item::ITEM_CLASS_PET_FOOD:		case Item::ITEM_CLASS_PET_ENCHANT_ITEM:			return true;			break;		case Item::ITEM_CLASS_EVENT_GIFT_BOX:			if ( pItem->getItemType() >= 6  && pItem->getItemType() <= 15 ) return true;			if ( pItem->getItemType() >= 19 && pItem->getItemType() <= 21 ) return true;			break;		default :			return false;	}	return false;}//////////////////////////////////////////////////////////////////////////////// 酒捞袍狼 箭磊甫 临牢促.//////////////////////////////////////////////////////////////////////////////ItemNum_t decreaseItemNum(Item* pItem, Inventory* pInventory, 	const string& OwnerID, Storage storage, StorageID_t storageID, BYTE x, BYTE y){	Assert(pItem != NULL);	Assert(pInventory != NULL);	Assert(OwnerID != "");	Assert(isStackable(pItem));	if (pItem->getNum() > 1)	{		pItem->setNum(pItem->getNum() - 1); // 酒捞袍狼 肮荐甫 窍唱 临牢促.		pInventory->decreaseItemNum(); // 牢亥配府 醚 肮荐甫 临牢促.		pInventory->decreaseWeight(pItem->getWeight()); // 牢亥配府 醚 公霸甫 临牢促.		//pItem->save(OwnerID, storage, storageID, x, y); // 酒捞袍 沥焊甫 历厘茄促.		// 酒捞袍 历厘 弥利拳. 2002.7.25 by sigi		char pField[80];		sprintf(pField, "Num=%d", pItem->getNum());		pItem->tinysave(pField);		return pItem->getNum();	}	else // 酒捞袍捞 1俺楼府看栏聪, 昏力茄促.	{		pInventory->deleteItem(x, y);		pItem->destroy();		SAFE_DELETE(pItem);		return 0;	}	return 0;}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void processItemBug(Creature* pCreature, Item* pItem){	PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature);	Assert(pPC != NULL);	Assert(pItem != NULL);	pPC->addItemToGarbage(pItem);}void processItemBugEx(Creature* pCreature, Item* pItem){	PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature);	Assert(pPC != NULL);	Assert(pItem != NULL);	pPC->addItemToGarbage(pItem);	pItem->save(pCreature->getName(), STORAGE_GARBAGE, 0, 0, 0);}bool hasOptionType(const list<OptionType_t>& optionTypes, OptionType_t optionType){	if (optionTypes.empty())		return false;	list<OptionType_t>::const_iterator itr;	for (itr=optionTypes.begin(); itr!=optionTypes.end(); itr++)	{		if (*itr==optionType)			return true;	}	return false;}bool hasOptionClass(const list<OptionType_t>& optionTypes, OptionType_t optionType){

⌨️ 快捷键说明

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