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

📄 gameplayer.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	{		if ((*ritr)->getPacketID() == packetID) {			pPacket = (*ritr);			break;		}		}	if (pPacket == NULL)		throw NoSuchElementException("packet history is empty");	return pPacket;	__END_CATCH}//--------------------------------------------------------------------------------////--------------------------------------------------------------------------------void GamePlayer::addEvent (Event* pEvent)	throw (Error){	__BEGIN_TRY	m_EventManager.addEvent(pEvent);	__END_CATCH}//--------------------------------------------------------------------------------////--------------------------------------------------------------------------------void GamePlayer::deleteEvent (Event::EventClass EClass)	throw (Error){	__BEGIN_TRY	m_EventManager.deleteEvent(EClass);	__END_CATCH}//--------------------------------------------------------------------------------////--------------------------------------------------------------------------------Event* GamePlayer::getEvent (Event::EventClass EClass)	throw (Error){	__BEGIN_TRY	return m_EventManager.getEvent(EClass);	__END_CATCH}////////////////////////////////////////////////////////////////////////// get debug string////////////////////////////////////////////////////////////////////////string GamePlayer::toString () const       throw (Error){	__BEGIN_TRY			StringStream msg;		//////////////////////////////////////////////////	// enter critical section	//////////////////////////////////////////////////	__ENTER_CRITICAL_SECTION(m_Mutex)		msg << "GamePlayer(SocketID:" << m_pSocket->getSOCKET() << ",Host:" << m_pSocket->getHost() << ")" ;	//////////////////////////////////////////////////	// leave critical section	//////////////////////////////////////////////////	__LEAVE_CRITICAL_SECTION(m_Mutex)		return msg.toString();	__END_CATCH}////////////////////////////////////////////////////////////////////////// verifySpeed////////////////////////////////////////////////////////////////////////bool GamePlayer::verifySpeed(Packet* pPacket)	throw (Error){	__BEGIN_TRY	bool SpeedCheck = false;	Timeval CurrentTime;	getCurrentTime( CurrentTime );	if( m_SpeedVerify.tv_sec == 0 )	{//		getCurrentTime( m_SpeedVerify );//		m_SpeedVerify.tv_sec += SpeedCheckDelay;		// m_SpeedVerify 甫 泅犁 矫埃栏肺 被捞 罐酒棵 鞘夸绝捞		// 窃荐 霉 何盒俊辑 罐酒 初篮 吧 傲 敬促.		// 2002.1.7 by bezz		m_SpeedVerify.tv_sec = CurrentTime.tv_sec + SpeedCheckDelay;		SpeedCheck = true;	}	else	{		// 盔贰 朝酒客具瞪 距沥 矫埃俊辑 5檬 弧府 朝酒坷搁 胶乔靛琴捞促.		if( CurrentTime.tv_sec > m_SpeedVerify.tv_sec - maxTimeGap )		{			// 胶乔靛 琴 烹苞甫 沁促搁 促澜 朝酒棵 距沥 矫埃阑 悸泼 秦具 茄促.//			getCurrentTime( m_SpeedVerify );//			m_SpeedVerify.tv_sec += SpeedCheckDelay;			// m_SpeedVerify 甫 泅犁 矫埃栏肺 被捞 罐酒棵 鞘夸绝捞			// 窃荐 霉 何盒俊辑 罐酒 初篮 吧 傲 敬促.			// 2002.1.7 by bezz			m_SpeedVerify.tv_sec = CurrentTime.tv_sec + SpeedCheckDelay;			SpeedCheck = true;			m_VerifyCount = max(0, m_VerifyCount-1);		}		else		{//			getCurrentTime( m_SpeedVerify );//			m_SpeedVerify.tv_sec += SpeedCheckDelay;			// m_SpeedVerify 甫 泅犁 矫埃栏肺 被捞 罐酒棵 鞘夸绝捞			// 窃荐 霉 何盒俊辑 罐酒 初篮 吧 傲 敬促.			// 2002.1.7 by bezz			m_SpeedVerify.tv_sec = CurrentTime.tv_sec + SpeedCheckDelay;			if( m_VerifyCount > maxVerifyCount )			{				SpeedCheck = false;			}			else			{				SpeedCheck = true;			}			m_VerifyCount++;		}	}	/*	// 农府贸狼 胶乔靛甫 罐酒柯促.	if (m_pCreature == NULL || pPacket == NULL) {		return true;	}	// 痹沥 矫埃 捞傈俊 度 鞍篮 菩哦捞 荐绞锅 朝酒坷搁 立加阑 楼弗促.	Timeval VerifyTime;	getCurrentTime(VerifyTime);	PacketID_t PacketID = pPacket->getPacketID();	bool SpeedCheck = true;	if (m_pCreature->isSlayer()) {		Slayer* pSlayer = dynamic_cast<Slayer*>(m_pCreature);		Speed_t AttackSpeed = pSlayer->getAttackSpeed();		BYTE Speed = 0;		if (AttackSpeed < 33) {			Speed = 0;		} else if (AttackSpeed < 67) {			Speed = 1;		} else {			Speed = 2;		}		if (PacketID == Packet::PACKET_CG_MOVE) {			// 捞傈 矫埃捞尔 泅犁 矫埃捞尔 眉农秦辑 歹 狐弗 矫埃俊 菩哦捞 朝酒吭栏搁 捞扒 摹磐促.			if (VerifyTime <= m_MoveSpeedVerify) {				SpeedCheck = false;			}			getCurrentTime(m_MoveSpeedVerify);			getCurrentTime(m_AttackSpeedVerify);			// 促澜俊 公宏啊 啊厘 弧府 朝酒棵 荐 乐绰 啊瓷茄 矫埃阑 历厘秦 敌促.			// 葛配 荤捞努阑 鸥绊 乐促搁 捞悼加档啊 临绢电促.			BYTE RealSpeed = 0;			if (pSlayer->hasRideMotorcycle()) 			{				//RealSpeed = 2;				RealSpeed = 1;			} 			else // 葛配荤捞努捞 酒聪促.			{				//RealSpeed = 4;				RealSpeed = 2;			}			// 促澜 镜 荐 乐绰 矫埃阑 悸泼茄促.			m_MoveSpeedVerify.tv_sec += RealSpeed / 10;			m_MoveSpeedVerify.tv_usec += RealSpeed* 100000;			m_AttackSpeedVerify.tv_sec += RealSpeed / 10;			m_AttackSpeedVerify.tv_usec += RealSpeed* 100000;		} 		else if (PacketID == Packet::PACKET_CG_ATTACK) 		{			if (VerifyTime <= m_AttackSpeedVerify) 			{				SpeedCheck = false;			}			// 公扁甫 公均阑 甸绊 乐绰瘤 眉农茄促.			Item* pItem = pSlayer->getWearItem(Slayer::WEAR_RIGHTHAND);			Item::ItemClass IClass = Item::ITEM_CLASS_SKULL;			if (pItem != NULL) {				IClass = pItem->getItemClass();			} 			getCurrentTime(m_AttackSpeedVerify);			getCurrentTime(m_MoveSpeedVerify);			BYTE RealSpeed = 0;			// 浇肺快 胶乔靛			if (Speed == 0) 			{				switch (IClass) 				{					// 937					case Item::ITEM_CLASS_SWORD :						RealSpeed = 9;						break;					// 1187					case Item::ITEM_CLASS_BLADE :					case Item::ITEM_CLASS_CROSS :					case Item::ITEM_CLASS_MACE :						RealSpeed = 11;						break;					// 1250					case Item::ITEM_CLASS_AR :						RealSpeed = 12;						break;					// 1000					case Item::ITEM_CLASS_SG :						RealSpeed = 10;						break;					// 1375					case Item::ITEM_CLASS_SR :						RealSpeed = 13;						break;					// 1000					case Item::ITEM_CLASS_SMG :						RealSpeed = 10;						break;					// 扁夯 傍拜 875					default :						RealSpeed = 8;						break;				}			} 			else if (Speed == 1) // 畴钢 胶乔靛			{				switch (IClass) 				{					// 812					case Item::ITEM_CLASS_SWORD :						RealSpeed = 8;						break;					// 1062					case Item::ITEM_CLASS_BLADE :					case Item::ITEM_CLASS_CROSS :					case Item::ITEM_CLASS_MACE :						RealSpeed = 10;						break;					// 875					case Item::ITEM_CLASS_AR :						RealSpeed = 8;						break;					// 1125					case Item::ITEM_CLASS_SG :						RealSpeed = 11;						break;					// 1250					case Item::ITEM_CLASS_SR :						RealSpeed = 12;						break;					// 875					case Item::ITEM_CLASS_SMG :						RealSpeed = 8;						break;					// 扁夯 傍拜 875					default :						RealSpeed = 8;						break;				}			} 			else // 菩胶飘 胶乔靛			{				switch (IClass) 				{					// 687					case Item::ITEM_CLASS_SWORD :						RealSpeed = 6;						break;					// 938					case Item::ITEM_CLASS_BLADE :					case Item::ITEM_CLASS_CROSS :					case Item::ITEM_CLASS_MACE :						RealSpeed = 9;						break;					// 750					case Item::ITEM_CLASS_AR :						RealSpeed = 7;						break;					// 1000					case Item::ITEM_CLASS_SG :						RealSpeed = 10;						break;					// 1125					case Item::ITEM_CLASS_SR :						RealSpeed = 11;						break;					// 750					case Item::ITEM_CLASS_SMG :						RealSpeed = 7;						break;					// 875					default :						RealSpeed = 8;						break;				}			}			// 胶乔靛 肯拳 沥氓			RealSpeed -= 2;			m_AttackSpeedVerify.tv_sec += RealSpeed / 10;			m_AttackSpeedVerify.tv_usec += ((RealSpeed % 10)* 100000);			m_MoveSpeedVerify.tv_sec += RealSpeed / 10;			m_MoveSpeedVerify.tv_usec += ((RealSpeed % 10)* 100000);		} else if (PacketID == Packet::PACKET_CG_SKILL_TO_OBJECT || PacketID == Packet::PACKET_CG_SKILL_TO_SELF || PacketID == Packet::PACKET_CG_SKILL_TO_TILE) {		} else {			SpeedCheck = true;		}	} 	else if (m_pCreature->isVampire()) 	{		Vampire* pVampire = dynamic_cast<Vampire*>(m_pCreature);		Speed_t AttackSpeed = pVampire->getAttackSpeed();		BYTE Speed = 0;		if (AttackSpeed < 33) 		{			Speed = 0;		} 		else if (AttackSpeed < 67) 		{			Speed = 1;		} 		else 		{			Speed = 2;		}		if (PacketID == Packet::PACKET_CG_MOVE) 		{			// 捞傈 矫埃捞尔 泅犁 矫埃捞尔 眉农秦辑 歹 狐弗 矫埃俊 菩哦捞 朝酒吭栏搁 捞扒 摹磐促.			if (VerifyTime <= m_MoveSpeedVerify) 			{				SpeedCheck = false;			}			getCurrentTime(m_MoveSpeedVerify);			getCurrentTime(m_AttackSpeedVerify);			BYTE RealSpeed = 0;			// 促澜俊 公宏啊 啊厘 弧府 朝酒棵 荐 乐绰 啊瓷茄 矫埃阑 历厘秦 敌促.			// 冠零 函脚阑 窍绊 乐促搁 加档啊 弧扼柳促. 檬寸 匙 鸥老阑 捞悼 茄促.			if (pVampire->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_BAT)) 			{				//RealSpeed = 2;				RealSpeed = 1;			} 			else // 畴钢 惑怕俊急 檬寸 滴鸥老阑 捞悼茄促.			{				//RealSpeed = 4;				RealSpeed = 2;			}			m_MoveSpeedVerify.tv_sec += (RealSpeed / 10);			m_AttackSpeedVerify.tv_sec += (RealSpeed / 10);			m_MoveSpeedVerify.tv_usec += (RealSpeed* 100000);			m_AttackSpeedVerify.tv_usec += (RealSpeed* 100000);		} 		else if (PacketID == Packet::PACKET_CG_ATTACK) 		{			if (VerifyTime <= m_AttackSpeedVerify) 			{				SpeedCheck = false;			}			getCurrentTime(m_AttackSpeedVerify);			getCurrentTime(m_MoveSpeedVerify);			BYTE RealSpeed = 0;			if (Speed == 0) // 浇肺快 胶乔靛 875			{				RealSpeed = 8;			} 			else if (Speed == 1) // 畴钢 胶乔靛 875			{				RealSpeed = 8;			} 			else // 菩胶飘 胶乔靛 812			{				RealSpeed = 8;			}			// 胶乔靛 肯拳 沥氓			RealSpeed -= 2;			m_AttackSpeedVerify.tv_sec += RealSpeed / 10;			m_AttackSpeedVerify.tv_usec += ((RealSpeed % 10)* 100000);			m_MoveSpeedVerify.tv_sec += RealSpeed / 10;			m_MoveSpeedVerify.tv_usec += ((RealSpeed % 10)* 100000);		} 		else if (PacketID == Packet::PACKET_CG_SKILL_TO_OBJECT || 				  PacketID == Packet::PACKET_CG_SKILL_TO_SELF   || 				  PacketID == Packet::PACKET_CG_SKILL_TO_TILE) 		{		} 		else 		{			SpeedCheck = true;		}	} 	else 	{

⌨️ 快捷键说明

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