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

📄 vampire.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			{				// 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促.				m_pWearItem[WEAR_RIGHTHAND] = pItem;				m_pWearItem[WEAR_LEFTHAND]  = pItem;				// by sigi. 2002.5.15				//pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0);				sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part);				pItem->tinysave(pField);			}		}	}	else 	{		if (isWear(Part))		{			pPrevItem = getWearItem(Part);			m_pWearItem[Part] = pItem;			// by sigi. 2002.5.15			char pField[80];			//pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0);			sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part);			pItem->tinysave(pField);			addItemToExtraInventorySlot(pPrevItem);			//pPrevItem->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0);			sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT);			pPrevItem->tinysave(pField);		}		else		{			// 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促.			m_pWearItem[Part] = pItem;			// by sigi. 2002.5.15			char pField[80];			//pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0);			sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part);			pItem->tinysave(pField);		}	}	// 渴捞扼搁 渴俊 蝶弗 祸彬阑 沥秦霖促.	// 唱吝俊扼档 渴 鸥涝捞 咯矾 啊瘤啊 瞪 荐 乐栏府扼 积阿窍绰单,	// 泅犁肺辑绰 渴 鸥涝捞 窍唱捞骨肺, 祸彬父 技泼秦霖促.	if (pItem->getItemClass() == Item::ITEM_CLASS_VAMPIRE_COAT) 	{		m_VampireInfo.setCoatColor( getItemShapeColor( pItem ) );		// item type阑 汲沥秦霖促. 		m_VampireInfo.setCoatType( pItem->getItemType() );	}	__END_CATCH}//----------------------------------------------------------------------// Vampire::WearItem()// Item阑 厘馒芒俊 厘馒矫虐绊 瓷仿摹甫 拌魂茄促.//----------------------------------------------------------------------void Vampire::wearItem(WearPart Part)	throw(){	__BEGIN_TRY	// 厘馒 霖厚吝牢 酒捞袍阑 罐酒柯促.	Item* pItem = getExtraInventorySlotItem();	Assert(pItem != NULL);	Item* pPrevItem = NULL;	Item* pLeft = NULL;	Item* pRight = NULL;	// 刚历 渴阑 涝洒芭唱, 哈扁扁 傈俊 泅犁狼 瓷仿摹甫 滚欺俊促 历厘秦 敌促.	// 捞绰 唱吝俊 函茄 瓷仿摹父阑 傈价窍扁 困茄 巴捞促.	VAMPIRE_RECORD prev;	getVampireRecord(prev);	// 泅犁 扁裙俊辑绰...瓷仿摹啊 葛磊扼歹扼档 酒捞袍阑 公炼扒 荤侩且 荐绰	// 乐促. 窍瘤父 酒捞袍俊 狼茄 瓷仿摹啊 利侩捞 登瘤 臼绰促. 	// 弊矾骨肺 老窜 酒捞袍阑 秦寸窍绰 厘馒芒俊促 笼绢持绰促.	char pField[80];	// vampire 公扁 眠啊. 2002.8.16. by sigi	// 剧颊 公扁老 版快俊绰 剧颊 厘馒芒俊促 窍唱狼 酒捞袍 器牢磐甫 且寸...	if (isTwohandWeapon(pItem))	{		// 剧颊俊 酒捞袍阑 甸绊 乐阑 版快		if (isWear(WEAR_RIGHTHAND) && isWear(WEAR_LEFTHAND))		{			pLeft  = getWearItem(WEAR_RIGHTHAND);			pRight = getWearItem(WEAR_LEFTHAND);						// 剧颊 公扁甫 甸绊 乐阑 版快			if (pLeft == pRight)			{				takeOffItem(WEAR_LEFTHAND, false, false);				// 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绊,				m_pWearItem[WEAR_RIGHTHAND] = pItem;				m_pWearItem[WEAR_LEFTHAND]  = pItem;				// by sigi. 2002.5.15				//pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0);				sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part);				pItem->tinysave(pField);				// 夸备茄 酒捞袍阑 付快胶 器牢磐俊辑 力芭茄促.				deleteItemFromExtraInventorySlot();				// 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促.				addItemToExtraInventorySlot(pLeft);				//pLeft->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0);				sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT);				pLeft->tinysave(pField);			}			// 八苞 规菩甫 甸绊 乐阑 版快			else			{				// 剧颊俊 八苞 规菩甫 甸绊 乐菌绰单...剧颊 公扁甫 甸妨绊 窍搁,				// 八篮 付快胶 器牢磐俊 崔酒临 荐 乐瘤父, 规菩绰 绢痘霸 且 荐啊 绝促.				// 牢亥配府俊 持绢拎具 且 刨单, 瘤陛 寸厘篮 绢痘霸 且 瘤甫 葛福摆匙...				// 傲 涝阑 荐 绝促绰 菩哦阑 焊郴林磊...				return;			}		}		// 剧颊俊 酒捞袍阑 甸绊 乐瘤 臼阑 版快		else 		{			// by sigi. 2002.5.15			// 坷弗率俊 酒捞袍阑 甸绊 乐阑 版快			if (isWear(WEAR_RIGHTHAND))			{				pRight = getWearItem(WEAR_RIGHTHAND);				takeOffItem(WEAR_RIGHTHAND, false, false);				// 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促.				m_pWearItem[WEAR_RIGHTHAND] = pItem;				m_pWearItem[WEAR_LEFTHAND]  = pItem;				//pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0);				// by sigi. 2002.5.15				sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part);				pItem->tinysave(pField);				// 夸备茄 酒捞袍阑 付快胶 器牢磐俊辑 力芭茄促.				deleteItemFromExtraInventorySlot();				// 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促.				addItemToExtraInventorySlot(pRight);				//pRight->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0);				sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT);				pRight->tinysave(pField);							}			// 哭率俊 酒捞袍阑 甸绊 乐阑 版快			else if (isWear(WEAR_LEFTHAND))			{				pLeft = getWearItem(WEAR_LEFTHAND);								takeOffItem(WEAR_LEFTHAND, false, false);				// 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促.				m_pWearItem[WEAR_RIGHTHAND] = pItem;				m_pWearItem[WEAR_LEFTHAND]  = pItem;								// by sigi. 2002.5.15				//pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0);				sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part);				pItem->tinysave(pField);				// 夸备茄 酒捞袍阑 付快胶 器牢磐俊辑 力芭茄促.				deleteItemFromExtraInventorySlot();				// 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促.				addItemToExtraInventorySlot(pLeft);				//pLeft->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0);				sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT);				pLeft->tinysave(pField);			}			// 酒公率档 酒捞袍阑 甸绊 乐瘤 臼阑 版快			else			{				// 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促.				m_pWearItem[WEAR_RIGHTHAND] = pItem;				m_pWearItem[WEAR_LEFTHAND]  = pItem;				pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0);				// 夸备茄 酒捞袍阑 付快胶 器牢磐俊辑 力芭茄促.				deleteItemFromExtraInventorySlot();			}		}	}	else	{		if (isWear(Part))		{			pPrevItem = getWearItem(Part);			takeOffItem(Part, false, false);			m_pWearItem[Part] = pItem;			// by sigi. 2002.5.15			//pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0);			sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part);			pItem->tinysave(pField);			deleteItemFromExtraInventorySlot();			addItemToExtraInventorySlot(pPrevItem);			//pPrevItem->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0);			sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT);			pPrevItem->tinysave(pField);		}		else		{			m_pWearItem[Part] = pItem;			deleteItemFromExtraInventorySlot();			// by sigi. 2002.5.15			//pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0);			sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part);			pItem->tinysave(pField);		}	}	initAllStat();	sendRealWearingInfo();	sendModifyInfo(prev);	// 渴捞扼搁 渴俊 蝶弗 祸彬阑 沥秦霖促.	// 唱吝俊扼档 渴 鸥涝捞 咯矾 啊瘤啊 瞪 荐 乐栏府扼 积阿窍绰单,	// 泅犁肺辑绰 渴 鸥涝捞 窍唱捞骨肺, 祸彬父 技泼秦霖促.	// 角力 利侩登绰 酒捞袍父 汗厘阑 官槽促. by sigi. 2002.10.30	if (m_pRealWearingCheck[Part])	{		if (pItem->getItemClass() == Item::ITEM_CLASS_VAMPIRE_COAT) 		{			Color_t color = getItemShapeColor( pItem );			m_VampireInfo.setCoatColor( color );			m_VampireInfo.setCoatType( pItem->getItemType() );			// 渴阑 哎酒涝菌栏聪, 林困俊促啊 渴 哎酒涝菌促绊 沥焊甫 朝赴促.			GCChangeShape pkt;			pkt.setObjectID(getObjectID());			pkt.setItemClass(Item::ITEM_CLASS_VAMPIRE_COAT);			pkt.setItemType(pItem->getItemType());			pkt.setOptionType(pItem->getFirstOptionType());			pkt.setAttackSpeed(m_AttackSpeed[ATTR_CURRENT]);			if (color == QUEST_COLOR )				pkt.setFlag( SHAPE_FLAG_QUEST );			Zone* pZone = getZone();			pZone->broadcastPacket(m_X, m_Y , &pkt, this);		}	}	if (m_pZone != NULL)	{		GCOtherModifyInfo gcOtherModifyInfo;		makeGCOtherModifyInfo(&gcOtherModifyInfo, this, &prev);		if (gcOtherModifyInfo.getShortCount() != 0 || gcOtherModifyInfo.getLongCount() != 0)		{			m_pZone->broadcastPacket(m_X, m_Y, &gcOtherModifyInfo, this);		}	}		__END_CATCH}//----------------------------------------------------------------------//// Vampire::takeOffItem()////----------------------------------------------------------------------void Vampire::takeOffItem(WearPart Part, bool bAddOnMouse, bool bSendModifyInfo)	throw(){	__BEGIN_TRY	VAMPIRE_RECORD prev;	// 厘馒芒俊 乐绰 酒捞袍阑 罐酒柯促.	Item* pItem = m_pWearItem[Part];	Assert(pItem != NULL);	//m_pWearItem[Part] = NULL;	// vampire 公扁 眠啊. 2002.8.16. by sigi	// 厘馒芒俊 乐绰 酒捞袍阑 罐酒柯促.	//Item::ItemClass IClass = pItem->getItemClass();	if (Part == WEAR_LEFTHAND || Part == WEAR_RIGHTHAND)	{		if (m_pWearItem[WEAR_RIGHTHAND] && m_pWearItem[WEAR_LEFTHAND])		{			if (m_pWearItem[WEAR_RIGHTHAND] == m_pWearItem[WEAR_LEFTHAND])			{				m_pWearItem[WEAR_RIGHTHAND] = NULL;				m_pWearItem[WEAR_LEFTHAND] = NULL;			}		}	}	// 酒捞袍阑 厘馒器牢飘俊辑 力芭茄促.	if (isTwohandWeapon(pItem))	{		m_pWearItem[WEAR_RIGHTHAND] = NULL;		m_pWearItem[WEAR_LEFTHAND] = NULL;	}	else m_pWearItem[Part] = NULL;	// wearItem俊辑 瘤沥等 浇儿俊 渴阑 捞固 涝绊 乐绰 版快俊, 弊巴阑 哈扁绊	// 促矫 渴阑 涝洒绰单, 弊矾搁 哈辨 锭 菩哦阑 茄锅, 涝菌阑 锭 促矫 菩哦阑	// 茄锅, 醚 滴 锅狼 菩哦阑 焊郴霸 等促. 弊巴阑 规瘤窍扁 困秦辑	// bool 函荐甫 窍唱 笼绢持菌促. -- 2002.01.24 辫己刮	if (bSendModifyInfo)	{		getVampireRecord(prev);		initAllStat();		sendRealWearingInfo();		sendModifyInfo(prev);	}	else	{		initAllStat();	}	//---------------------------------------------	// 乐绢急 救瞪 眉农 -_-; 烙矫 东户	// 酒捞袍阑 付快胶 目辑俊促 崔酒霖寸.	//---------------------------------------------	if (bAddOnMouse) 	{		addItemToExtraInventorySlot(pItem);		//pItem->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0);		// item历厘 弥利拳. by sigi. 2002.5.13		char pField[80];        sprintf(pField, "Storage=%d, Durability=%d", STORAGE_EXTRASLOT, pItem->getDurability());        pItem->tinysave(pField);	}	if (pItem->getItemClass() == Item::ITEM_CLASS_VAMPIRE_COAT)	{		m_VampireInfo.setCoatColor(377);		m_VampireInfo.setCoatType( 0 );		GCTakeOff pkt;		pkt.setObjectID(getObjectID());		pkt.setSlotID((SlotID_t)ADDON_COAT);		m_pZone->broadcastPacket(getX(), getY(), &pkt, this);	}	if (m_pZone != NULL)	{		GCOtherModifyInfo gcOtherModifyInfo;		makeGCOtherModifyInfo(&gcOtherModifyInfo, this, &prev);		if (gcOtherModifyInfo.getShortCount() != 0 || gcOtherModifyInfo.getLongCount() != 0)		{			m_pZone->broadcastPacket(m_X, m_Y, &gcOtherModifyInfo, this);		}	}	__END_CATCH}//----------------------------------------------------------------------// destroyGears// 厘馒 酒捞袍阑 Delete 茄促.//----------------------------------------------------------------------void Vampire::destroyGears() 	throw (){	__BEGIN_TRY	__BEGIN_DEBUG	for (int j = 0; j < VAMPIRE_WEAR_MAX; j++) 	{		Item* pItem = m_pWearItem[j];		if (pItem != NULL)		{			Item::ItemClass IClass = pItem->getItemClass();			//-------------------------------------------------------------			// 浇饭捞绢侩 酒捞袍阑 涝绊 乐绰 捞惑茄 磊侥捞 乐栏搁 促 绢辑飘			//-------------------------------------------------------------			Assert(IClass != Item::ITEM_CLASS_AR);			Assert(IClass != Item::ITEM_CLASS_SR);			Assert(IClass != Item::ITEM_CLASS_SG);			Assert(IClass != Item::ITEM_CLASS_SMG);			Assert(IClass != Item::ITEM_CLASS_SWORD);			Assert(IClass != Item::ITEM_CLASS_BLADE);			Assert(IClass != Item::ITEM_CLASS_SHIELD);			Assert(IClass != Item::ITEM_CLASS_CROSS);			Assert(IClass != Item::ITEM_CLASS_MACE);			Assert(IClass != Item::ITEM_CLASS_HELM);			Assert(IClass != Item::ITEM_CLASS_GLOVE);			Assert(IClass != Item::ITEM_CLASS_TROUSER);			Assert(IClass != Item::ITEM_CLASS_COAT);			// 剧颊 公扁牢瘤甫 八荤秦辑 酒捞袍 窍唱甫 瘤快搁辑			// 剧颊阑 厚况霖促.			if (isTwohandWeapon(pItem))			{				m_pWearItem[WEAR_RIGHTHAND] = NULL;				m_pWearItem[WEAR_LEFTHAND]  = NULL;			}			else m_pWearItem[j] = NULL;			SAFE_DELETE(pItem);		}	}	__END_DEBUG	__END_CATCH}//----------------------------------------------------------------------//----------------------------------------------------------------------bool Vampire::isRealWearing(WearPart part) const	throw(){	__BEGIN_TRY	if (part >= VAMPIRE_WEAR_MAX) throw("Vampire::isRealWearing() : invalid wear point!");	if (m_pWearItem[part] == NULL) return false;	return isRealWearing(m_pWearItem[part]);	__END_CATCH}//----------------------------------------------------------------------//----------------------------------------------------------------------bool Vampire::isRealWearing(Item* pItem) const	throw(){	__BEGIN_TRY	if (pItem == NULL) return false;	ItemInfo*       pItemInfo = g_pItemInfoManager->getItemInfo(pItem->getItemClass(), pItem->getItemType());		if ( pItem->isTimeLimitItem() )	{		Attr_t    ReqGender = pItemInfo->getReqGender();		if ( ( m_Sex == MALE && ReqGender == GENDER_FEMALE ) ||			 ( m_Sex == FEMALE && ReqGender == GENDER_MALE ) ) return false;		return true;	}	// 橇府固决 粮俊辑绰 蜡丰荤侩磊父 蜡聪农/饭绢 酒捞袍捞 利侩等促.	// 目敲傅档 蜡丰荤侩磊父 镜 荐 乐促. by Sequoia 2003. 3. 5.	if (getZone()->isPremiumZone()		&& (pItem->isUnique() || pItem->getOptionTypeSize()>1 ||			pItem->getItemClass() == Item::ITEM_CLASS_COUPLE_RING || pItem->getItemClass() == Item::ITEM_CLASS_VAMPIRE_COUPLE_RING))

⌨️ 快捷键说明

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