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

📄 slayer.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 5 页
字号:
PhoneNumber_t Slayer::getPhoneSlotNumber(SlotID_t SlotID)	throw(){	__BEGIN_TRY	Assert(SlotID <= MAX_PHONE_SLOT);	return m_PhoneSlot[SlotID];	__END_CATCH}void Slayer::setPhoneSlotNumber(SlotID_t SlotID, PhoneNumber_t PhoneNumber)	throw(){	__BEGIN_TRY	__ENTER_CRITICAL_SECTION(m_Mutex)	m_PhoneSlot[SlotID] = PhoneNumber;	__LEAVE_CRITICAL_SECTION(m_Mutex)	__END_CATCH}bool Slayer::isSlotByPhoneNumber(PhoneNumber_t PhoneNumber)	throw(){	__BEGIN_TRY	bool isFind = false;	for (int i = 0; i < MAX_PHONE_SLOT; i++) 	{		if (m_PhoneSlot[i] == PhoneNumber) isFind = true;	}	return isFind;	__END_CATCH}SlotID_t Slayer::getSlotWithPhoneNumber(PhoneNumber_t PhoneNumber)	throw(){	__BEGIN_TRY	for (int i = 0; i < MAX_PHONE_SLOT; i++) {		if (m_PhoneSlot[i] == PhoneNumber) return i;	}	return MAX_PHONE_SLOT;	__END_CATCH}SlotID_t Slayer::findEmptyPhoneSlot()	throw(){	__BEGIN_TRY	for (int i = 0; i < MAX_PHONE_SLOT; i++) 	{		if (m_PhoneSlot[i] == 0) 		{			return i;		}	}	return MAX_PHONE_SLOT;	__END_CATCH}bool Slayer::isEmptyPhoneSlot()	throw(){	__BEGIN_TRY	bool Success = false;	for (int i = 0; i < MAX_PHONE_SLOT; i++) 	{		if (m_PhoneSlot[i] == 0) 		{			// 后 浇儿阑 茫疽促.			Success = true;		}	}	return Success;	__END_CATCH}// 漂沥 Skill捞 粮犁窍绰瘤 炼荤窍绊 SkillSlot阑 府畔茄促.SkillSlot* Slayer::getSkill(SkillType_t SkillType) const	throw(){	__BEGIN_TRY	hash_map<SkillType_t, SkillSlot*>::const_iterator itr = m_SkillSlot.find(SkillType);	if (itr != m_SkillSlot.end())	{		return itr->second;	}	return NULL;	__END_CATCH}// 漂沥 SkillSlot阑 磊悼栏肺 后 浇儿阑 茫酒 持绰促.void Slayer::addSkill(SkillSlot* pSkillSlot)	throw(){	__BEGIN_TRY	SkillType_t SkillType = pSkillSlot->getSkillType();	switch (SkillType)	{		case SKILL_UN_BURROW:		case SKILL_UN_TRANSFORM:		case SKILL_UN_INVISIBILITY:		case SKILL_THROW_HOLY_WATER:		case SKILL_EAT_CORPSE:		case SKILL_HOWL:			filelog("SlayerError.log", "SkillType[%d], %s", SkillType, toString().c_str());			Assert(false);			break;		default:			break;	}	hash_map<SkillType_t, SkillSlot*>::iterator itr = m_SkillSlot.find(pSkillSlot->getSkillType());		if (itr == m_SkillSlot.end())	{		m_SkillSlot[pSkillSlot->getSkillType()] = pSkillSlot;	}	// 2002.1.16 by sigi	// 2003.3.30 by Sequoia 炼扒 眠啊窃	else	{		if ( pSkillSlot != itr->second ) SAFE_DELETE(pSkillSlot);	}	__END_CATCH}// 扁贱阑 硅匡锭父 静绰 窃荐捞促. 促弗 镑俊辑 静搁 俺 等促.void Slayer::addSkill(SkillType_t SkillType)	throw(){	__BEGIN_TRY	switch (SkillType)	{		case SKILL_UN_BURROW:		case SKILL_UN_TRANSFORM:		case SKILL_UN_INVISIBILITY:		case SKILL_THROW_HOLY_WATER:		case SKILL_EAT_CORPSE:		case SKILL_HOWL:			filelog("SlayerError.log", "2 SkillType[%d], %s", SkillType, toString().c_str());			Assert(false);			break;		default:			break;	}	hash_map<SkillType_t, SkillSlot*>::iterator itr = m_SkillSlot.find(SkillType);		if (itr == m_SkillSlot.end())	{		SkillInfo* pSkillInfo = g_pSkillInfoManager->getSkillInfo(SkillType);		Turn_t Delay = pSkillInfo->getMaxDelay();		SkillSlot* pSkillSlot = new SkillSlot();		pSkillSlot->setName(m_Name);		pSkillSlot->setSkillType(SkillType);		pSkillSlot->setInterval(Delay);		pSkillSlot->setExpLevel(0);		pSkillSlot->setExp(1);		pSkillSlot->setRunTime();		pSkillSlot->create(m_Name);		m_SkillSlot[SkillType] = pSkillSlot;	}	__END_CATCH}// 己瘤胶懦阑 瘤况林绰 窃荐促.void Slayer::removeCastleSkill(SkillType_t SkillType)	throw(){	__BEGIN_TRY	// 己瘤 胶懦父 瘤匡 荐 乐促.	if ( g_pCastleSkillInfoManager->getZoneID( SkillType ) == 0 ) return;	hash_map<SkillType_t, SkillSlot*>::iterator itr = m_SkillSlot.find(SkillType);		if (itr != m_SkillSlot.end())	{		CastleSkillSlot* pCastleSkillSlot = dynamic_cast<CastleSkillSlot*>(itr->second);		SAFE_DELETE( pCastleSkillSlot );		m_SkillSlot.erase( itr );	}	__END_CATCH}// 爱绊 乐绰 葛电 己瘤胶懦阑 瘤况林绰 窃荐捞促.void Slayer::removeAllCastleSkill()	throw(){	__BEGIN_TRY	hash_map<SkillType_t, SkillSlot*>::iterator itr = m_SkillSlot.begin();	while ( itr != m_SkillSlot.end() )	{		if ( itr->second != NULL )		{			SkillSlot* pSkillSlot = itr->second;			if ( g_pCastleSkillInfoManager->getZoneID( pSkillSlot->getSkillType() ) == 0 )			{				// 己瘤胶懦捞 酒聪搁 促澜铂肺 逞绢埃促.				++itr;				continue;			}			// 己瘤胶懦捞搁 瘤况霖促. 馆汗磊 荤侩俊 林狼			SAFE_DELETE( pSkillSlot );			hash_map<SkillType_t, SkillSlot*>::iterator prevItr = itr;						++itr;			m_SkillSlot.erase( prevItr );		}		else		{			// 捞扒 钢鳖.... Assert 秦具 登瘤 臼唱 -_-;			Assert(false);		}	}	__END_CATCH}// Slayer::wearItem()// Item阑 厘馒芒俊 厘馒矫虐绊 瓷仿摹甫 拌魂茄促.// 捞 皋家靛绰 立加且锭 Item阑 Loading 窍搁辑 静绰 wearItem捞促.// 捞 皋家靛 救俊急 Broadcast甫 窍瘤 臼绰 巴捞 亮促.void Slayer::wearItem(WearPart Part, Item* pItem)	throw (Error){	__BEGIN_TRY	__BEGIN_DEBUG	Assert(pItem != NULL);	Item::ItemClass IClass    = pItem->getItemClass();	Item*           pLeft     = NULL;	Item*           pRight    = NULL;	Item*           pPrevItem = NULL;	OptionInfo*     pOptionInfo = NULL;	// 霉锅掳 可记狼 祸彬阑 瘤沥茄促.	if (pItem->getFirstOptionType() != 0)		pOptionInfo = g_pOptionInfoManager->getOptionInfo(pItem->getFirstOptionType());	// 泅犁 扁裙俊辑绰...瓷仿摹啊 葛磊扼歹扼档 酒捞袍阑 公炼扒 荤侩且 荐绰	// 乐促. 窍瘤父 酒捞袍俊 狼茄 瓷仿摹啊 利侩捞 登瘤 臼绰促. 	// 弊矾骨肺 老窜 酒捞袍阑 秦寸窍绰 厘馒芒俊促 笼绢持绰促.	// 剧颊 公扁老 版快俊绰 剧颊 厘馒芒俊促 窍唱狼 酒捞袍 器牢磐甫 且寸...	if (isTwohandWeapon(pItem))	{		// 剧颊俊 酒捞袍阑 甸绊 乐阑 版快		if (isWear(WEAR_RIGHTHAND) && isWear(WEAR_LEFTHAND))		{			pLeft  = getWearItem(WEAR_RIGHTHAND);			pRight = getWearItem(WEAR_LEFTHAND);						// 剧颊 公扁甫 甸绊 乐阑 版快			if (pLeft == pRight)			{				// 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绊,				m_pWearItem[WEAR_RIGHTHAND] = pItem;				m_pWearItem[WEAR_LEFTHAND]  = 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(pLeft);				//pLeft->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0);				sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT);				pLeft->tinysave(pField);			}			// 八苞 规菩甫 甸绊 乐阑 版快			else			{				// 剧颊俊 八苞 规菩甫 甸绊 乐菌绰单...剧颊 公扁甫 甸妨绊 窍搁,				// 八篮 付快胶 器牢磐俊 崔酒临 荐 乐瘤父, 规菩绰 绢痘霸 且 荐啊 绝促.				// 牢亥配府俊 持绢拎具 且 刨单, 瘤陛 寸厘篮 绢痘霸 且 瘤甫 葛福摆匙...				// 傲 涝阑 荐 绝促绰 菩哦阑 焊郴林磊...				cerr << "剧颊俊 漠苞 规菩甫 甸绊 乐绢辑, 剧颊 公扁甫 厘馒且 荐 绝嚼聪促." << endl;				return;			}		}		// 剧颊俊 酒捞袍阑 甸绊 乐瘤 臼阑 版快		else 		{			char pField[80];			// 坷弗率俊 酒捞袍阑 甸绊 乐阑 版快			if (isWear(WEAR_RIGHTHAND))			{				pRight = getWearItem(WEAR_RIGHTHAND);				// 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促.				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);				// 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促.				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);				// 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促.				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);				// 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促.				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;				// 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	{		char pField[80];		if (isWear(Part))		{			pPrevItem = getWearItem(Part);			// 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促.			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);			// 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促.			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;			//pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0);			sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part);			pItem->tinysave(pField);		}	}	ItemType_t IType = pItem->getItemType();	// 绢恫 公扁甫 棱绊 乐促绰 沥焊甫 历厘茄促. 	// SlayerInfo俊 悸泼阑 秦 初酒具 促澜 穿焙啊啊 杭锭 朝妨霖促.	Color_t color = getItemShapeColor( pItem, pOptionInfo ); 	switch (IClass)	{		case Item::ITEM_CLASS_MACE:			//m_SlayerInfo.setWeaponType(WEAPON_MACE);			m_SlayerInfo.setWeaponType(WEAPON_MACE);			m_SlayerInfo.setWeaponColor( color );			break;		case Item::ITEM_CLASS_CROSS:			m_SlayerInfo.setWeaponType(WEAPON_CROSS);			m_SlayerInfo.setWeaponColor( color );			break;		case Item::ITEM_CLASS_BLADE:			m_SlayerInfo.setWeaponType(WEAPON_BLADE);			m_SlayerInfo.setWeaponColor( color );			break;		case Item::ITEM_CLASS_AR:			m_SlayerInfo.setWeaponType(WEAPON_AR);			m_SlayerInfo.setWeaponColor( color );			break;		case Item::ITEM_CLASS_SR:			m_SlayerInfo.setWeaponType(WEAPON_SR);			m_SlayerInfo.setWeaponColor( color );			break;		case Item::ITEM_CLASS_SMG:			m_SlayerInfo.setWeaponType(WEAPON_SMG);			m_SlayerInfo.setWeaponColor( color );

⌨️ 快捷键说明

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