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

📄 ousters.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	// 角力 利侩登绰 酒捞袍父 汗厘阑 官槽促. by sigi. 2002.10.30	if (m_pRealWearingCheck[Part])	{		if ( pItem->getItemClass() == Item::ITEM_CLASS_OUSTERS_COAT			|| pItem->getItemClass() == Item::ITEM_CLASS_OUSTERS_WRISTLET			|| pItem->getItemClass() == Item::ITEM_CLASS_OUSTERS_CHAKRAM			|| pItem->getItemClass() == Item::ITEM_CLASS_OUSTERS_BOOTS ) 		{			Color_t color = getItemShapeColor( pItem );			// 渴阑 哎酒涝菌栏聪, 林困俊促啊 渴 哎酒涝菌促绊 沥焊甫 朝赴促.			GCChangeShape pkt;			pkt.setObjectID(getObjectID());			pkt.setItemClass(pItem->getItemClass());			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);			// PCOustersInfo3 沥焊甫 官层霖促.			switch ( pItem->getItemClass() )			{				case Item::ITEM_CLASS_OUSTERS_COAT:					// item type阑 汲沥秦霖促. 					m_OustersInfo.setCoatType( getOustersCoatType( pItem->getItemType() ) );					m_OustersInfo.setCoatColor( color );					break;				case Item::ITEM_CLASS_OUSTERS_CHAKRAM:					m_OustersInfo.setArmType( OUSTERS_ARM_CHAKRAM );					m_OustersInfo.setArmColor( color );					break;				case Item::ITEM_CLASS_OUSTERS_WRISTLET:					m_OustersInfo.setArmType( OUSTERS_ARM_GAUNTLET );					m_OustersInfo.setArmColor( color );					break;				case Item::ITEM_CLASS_OUSTERS_BOOTS:					m_OustersInfo.setBootsColor( color );					break;				default:					break;			}		}	}	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}//----------------------------------------------------------------------//// Ousters::takeOffItem()////----------------------------------------------------------------------void Ousters::takeOffItem(WearPart Part, bool bAddOnMouse, bool bSendModifyInfo)	throw(){	__BEGIN_TRY	OUSTERS_RECORD prev;	// 厘馒芒俊 乐绰 酒捞袍阑 罐酒柯促.	Item* pItem = m_pWearItem[Part];	Assert(pItem != NULL);	// 厘馒芒俊 乐绰 酒捞袍阑 罐酒柯促.	//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)	{		getOustersRecord(prev);		initAllStat();		sendRealWearingInfo();		sendModifyInfo(prev);	}	else	{		initAllStat();	}	//---------------------------------------------	// 乐绢急 救瞪 眉农 -_-; 烙矫 东户	// 酒捞袍阑 付快胶 目辑俊促 崔酒霖寸.	//---------------------------------------------	if (bAddOnMouse) 	{		addItemToExtraInventorySlot(pItem);		// item历厘 弥利拳. by sigi. 2002.5.13		char pField[80];        sprintf(pField, "Storage=%d, Durability=%d", STORAGE_EXTRASLOT, pItem->getDurability());        pItem->tinysave(pField);	}	switch ( pItem->getItemClass() )	{		case Item::ITEM_CLASS_OUSTERS_COAT:			{				m_OustersInfo.setCoatType( OUSTERS_COAT_BASIC );				m_OustersInfo.setCoatColor( 377 );				GCTakeOff pkt;				pkt.setObjectID(getObjectID());				pkt.setSlotID((SlotID_t)ADDON_COAT);				m_pZone->broadcastPacket(getX(), getY(), &pkt, this);			}			break;		case Item::ITEM_CLASS_OUSTERS_CHAKRAM:			{				m_OustersInfo.setArmType( OUSTERS_ARM_GAUNTLET );				m_OustersInfo.setArmColor( 377 );				GCTakeOff pkt;				pkt.setObjectID(getObjectID());				pkt.setSlotID((SlotID_t)ADDON_LEFTHAND);				m_pZone->broadcastPacket(getX(), getY(), &pkt, this);			}			break;		case Item::ITEM_CLASS_OUSTERS_WRISTLET:			{				m_OustersInfo.setArmType( OUSTERS_ARM_GAUNTLET );				m_OustersInfo.setArmColor( 377 );				GCTakeOff pkt;				pkt.setObjectID(getObjectID());				pkt.setSlotID((SlotID_t)ADDON_LEFTHAND);				m_pZone->broadcastPacket(getX(), getY(), &pkt, this);			}			break;		case Item::ITEM_CLASS_OUSTERS_BOOTS:			{				m_OustersInfo.setBootsColor( 377 );				GCTakeOff pkt;				pkt.setObjectID(getObjectID());				pkt.setSlotID((SlotID_t)ADDON_TROUSER);				m_pZone->broadcastPacket(getX(), getY(), &pkt, this);			}			break;		default:			break;	}	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 Ousters::destroyGears() 	throw (){	__BEGIN_TRY	__BEGIN_DEBUG	for (int j = 0; j < OUSTERS_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 Ousters::isRealWearing(WearPart part) const	throw(){	__BEGIN_TRY	if (part >= OUSTERS_WEAR_MAX) throw("Ousters::isRealWearing() : invalid wear point!");	if (m_pWearItem[part] == NULL) return false;	return isRealWearing(m_pWearItem[part]);	__END_CATCH}//----------------------------------------------------------------------//----------------------------------------------------------------------bool Ousters::isRealWearing(Item* pItem) const	throw(){	__BEGIN_TRY	if (pItem == NULL) return false;	// 矫埃力茄酒捞袍篮 饭绢唱 蜡聪农唱 公丰荤侩磊档 镜 荐 乐促....... 2003.5.4	if ( pItem->isTimeLimitItem() )	{		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_OUSTERS_COUPLE_RING))	{		GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(getPlayer());		if (!pGamePlayer->isPayPlaying() 			&& !pGamePlayer->isPremiumPlay())		{			return false;		}	}	Item::ItemClass IClass    = pItem->getItemClass();	ItemInfo*       pItemInfo = g_pItemInfoManager->getItemInfo(IClass, pItem->getItemType());	Level_t         ReqLevel  = pItemInfo->getReqLevel();	Attr_t			ReqSTR    = pItemInfo->getReqSTR();	Attr_t			ReqDEX    = pItemInfo->getReqDEX();	Attr_t			ReqINT    = pItemInfo->getReqINT();	Attr_t			ReqSum    = pItemInfo->getReqSum();	// 酒捞袍捞 可记阑 啊瘤绊 乐促搁,	// 可记狼 辆幅俊 蝶扼辑 瓷仿摹 力茄阑 棵妨霖促.	const list<OptionType_t>& optionTypes = pItem->getOptionTypeList();	list<OptionType_t>::const_iterator itr;	for (itr=optionTypes.begin(); itr!=optionTypes.end(); itr++)	{		OptionInfo* pOptionInfo = g_pOptionInfoManager->getOptionInfo( *itr );		if (ReqLevel != 0) ReqLevel += pOptionInfo->getReqLevel();		if (ReqSTR != 0) ReqSTR += (pOptionInfo->getReqSum() * 2);		if (ReqDEX != 0) ReqDEX += (pOptionInfo->getReqSum() * 2);		if (ReqINT != 0) ReqINT += (pOptionInfo->getReqSum() * 2);		if (ReqSum != 0) ReqSum += pOptionInfo->getReqSum();	}	ReqLevel = min(ReqLevel, MAX_OUSTERS_LEVEL );//	ReqSum = min((int)ReqSum, OUSTERS_MAX_SUM);//	ReqSTR = min((int)ReqSTR, OUSTERS_MAX_ATTR);//	ReqDEX = min((int)ReqDEX, OUSTERS_MAX_ATTR);//	ReqINT = min((int)ReqINT, OUSTERS_MAX_ATTR);	// 瓷仿摹 力茄捞 窍唱扼档 乐促搁,	// 弊 瓷仿阑 父练矫虐绰瘤 八荤秦具 茄促.	Attr_t CSTR = m_STR[ATTR_CURRENT];	Attr_t CDEX = m_DEX[ATTR_CURRENT];	Attr_t CINT = m_INT[ATTR_CURRENT];	Attr_t CSUM = CSTR + CDEX + CINT;	if ( CSTR < ReqSTR || CDEX < ReqDEX || CINT < ReqINT || CSUM < ReqSum || m_Level < ReqLevel )	{		return false;	}	return true;	__END_CATCH}//----------------------------------------------------------------------//----------------------------------------------------------------------bool Ousters::isRealWearingEx(WearPart part) const{	if (part >= OUSTERS_WEAR_MAX) return false;	return m_pRealWearingCheck[part];}DWORD Ousters::sendRealWearingInfo(void) const	throw(){	__BEGIN_TRY	DWORD info = 0;	DWORD flag = 1;	for (int i=0; i<OUSTERS_WEAR_MAX; i++)	{		if (isRealWearing((Ousters::WearPart)i)) info |= flag;		flag <<= 1;	}	GCRealWearingInfo pkt;	pkt.setInfo(info);	m_pPlayer->sendPacket(&pkt);	return info;	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////// 牢器 包访 窃荐////////////////////////////////////////////////////////////////////////////////////PCOustersInfo2* Ousters::getOustersInfo2 ()	throw (){	__BEGIN_TRY	__BEGIN_DEBUG	PCOustersInfo2* pInfo = new PCOustersInfo2();	pInfo->setObjectID(m_ObjectID);	pInfo->setName(m_Name);	pInfo->setLevel(m_Level);	pInfo->setSex(m_Sex);	pInfo->setHairColor(m_HairColor);    // 己氢	pInfo->setAlignment(m_Alignment);	// 瓷仿摹	pInfo->setSTR(m_STR[ATTR_CURRENT], ATTR_CURRENT);	pInfo->setSTR(m_STR[ATTR_MAX], ATTR_MAX);	pInfo->setSTR(m_STR[ATTR_BASIC], ATTR_BASIC);	pInfo->setDEX(m_DEX[ATTR_CURRENT], ATTR_CURRENT);	pInfo->setDEX(m_DEX[ATTR_MAX], ATTR_MAX);	pInfo->setDEX(m_DEX[ATTR_BASIC], ATTR_BASIC);	pInfo->setINT(m_INT[ATTR_CURRENT], ATTR_CURRENT);	pInfo->setINT(m_INT[ATTR_MAX], ATTR_MAX);	pInfo->setINT(m_INT[ATTR_BASIC], ATTR_BASIC);		pInfo->setHP(m_HP[ATTR_CURRENT] , m_HP[ATTR_MAX]);	pInfo->setMP(m_MP[ATTR_CURRENT] , m_MP[ATTR_MAX]);	pInfo->setSilverDamage( m_SilverDamage );	pInfo->setFame(m_Fame);	pInfo->setExp(m_GoalExp);	pInfo->setGold(m_Gold);	pInfo->setSight(m_Sight);	pInfo->setBonus(m_Bonus);	pInfo->setSkillBonus(m_SkillBonus);	// by sigi. 2002.8.30	pInfo->setRank(getRank());	pInfo->setRankExp(getRankGoalExp());	pInfo->setCompetence(m_CompetenceShape);	pInfo->setGuildID(m_GuildID);	pInfo->setGuildName( getGuildName() );	pInfo->setGuildMemberRank( getGuildMemberRank() );	return pInfo;	__END_DEBUG	__END_CATCH}//----------------------------------------------------------------------// Ousters Outlook Information//----------------------------------------------------------------------PCOustersInfo3 Ousters::getOustersInfo3 () const 	throw (){	__BEGIN_TRY	__BEGIN_DEBUG	m_OustersInfo.setObjectID(m_ObjectID);	m_OustersInfo.setX(m_X);	m_OustersInfo.setY(m_Y);	m_OustersInfo.setDir(m_Dir);	m_OustersInfo.setCurrentHP(m_HP[ATTR_CURRENT]);	m_OustersInfo.setMaxHP(m_HP[ATTR_MAX]);	m_OustersInfo.setAttackSpeed(m_AttackSpeed[ATTR_CURRENT]);	m_OustersInfo.setAlignment(m_Alignment);	m_OustersInfo.setGuildID(m_GuildID);	// by sigi. 2002.9.10	m_OustersInfo.setRank(getRank());    m_OustersInfo.setHairColor(m_HairColor);	return m_OustersInfo;	__END_DEBUG	__END_CATCH}//----------------------------------------------------------------------//// get Extra Info////----------------------------------------------------------------------ExtraInfo* Ousters::getExtraInfo() const	throw(){	__BEGIN_TRY	__BEGIN_DEBUG	BYTE ItemCount = 0;	ExtraInfo* pExtraInfo = new ExtraInfo();

⌨️ 快捷键说明

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