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

📄 masterlairmanager.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			int remainMin = remainSec/60;			uint param = (remainMin << 16) | ((int)m_pZone->getZoneID());			gcNoticeEvent.setParameter( param );			g_pZoneGroupManager->broadcast( &gcNoticeEvent );			m_EventValue = remainSec;		}	}	__END_CATCH}//////////////////////////////////////////////////////////////////////////////////// process EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::processEventMinionCombat() 	throw (Error){	__BEGIN_TRY	Timeval currentTime;	getCurrentTime(currentTime);	// 措扁 矫埃捞 场唱搁..	// 各阑 代 磷看促绰 狼固捞骨肺..	// 碍力眠规茄促.	if (currentTime >= m_EventTime)	{		GCNoticeEvent gcNoticeEvent;		gcNoticeEvent.setCode( NOTICE_EVENT_MASTER_COMBAT_END );		m_pZone->broadcastPacket( &gcNoticeEvent );		activeEventWaitingKickOut();	}	// 家券等 各捞 促 磷篮 版快扼搁..	// 付胶磐啊 唱客辑 轿款促.	//if (m_nSummonedMonster >= m_nMaxSummonMonster	if (m_bMasterReady		// 粮俊 付胶磐 去磊父 巢篮 版快		&& m_pZone->getMonsterManager()->getSize()==1)	{		activeEventMasterCombat();	}	// 敲饭捞绢甸捞 促 磷篮 版快	if (m_pZone->getPCManager()->getSize()==0)	{		activeEventWaitingRegen();	}	__END_CATCH}//////////////////////////////////////////////////////////////////////////////////// process EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::processEventMasterCombat() 	throw (Error){	__BEGIN_TRY	Timeval currentTime;	getCurrentTime(currentTime);	Creature* pMaster = m_pZone->getMonsterManager()->getCreature( m_MasterID );	if (pMaster==NULL)	{		// 付胶磐 绢叼艾唱?		StringStream msg;		msg << "付胶磐啊 绝绢脸促. zoneID = " << (int)m_pZone->getZoneID();		filelog("masterLairBug.txt", "%s", msg.toString().c_str());					//throw Error(msg.toString());	}	else	{		// 泅犁 付胶磐狼 困摹		m_MasterX = pMaster->getX();		m_MasterY = pMaster->getY();	}	// 付胶磐啊 磷菌芭唱	// 措扁 矫埃捞 场唱搁..	// 碍力眠规 葛靛肺 官槽促.	if (pMaster==NULL || pMaster->isDead() )	{		killAllMonsters();		giveKillingReward();		activeEventWaitingKickOut();	}	else if (currentTime >= m_EventTime)	{		activeEventWaitingKickOut();	}	// 敲饭捞绢甸捞 促 磷篮 版快	if (m_pZone->getPCManager()->getSize()==0)	{		activeEventWaitingRegen();	}	__END_CATCH}//////////////////////////////////////////////////////////////////////////////////// process EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::processEventWaitingKickOut() 	throw (Error){	__BEGIN_TRY	Timeval currentTime;	getCurrentTime(currentTime);	// 措扁 矫埃捞 场唱搁 	//   荤侩磊甸阑 kickOut 矫虐绊	//   Regen登扁甫 扁促赴促.	if (currentTime >= m_EventTime)	{		kickOutPlayers();		activeEventWaitingRegen();	}	__END_CATCH}//////////////////////////////////////////////////////////////////////////////////// process EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::processEventWaitingRegen() 	throw (Error){	__BEGIN_TRY	Timeval currentTime;	getCurrentTime(currentTime);	// 府哩 矫埃捞 登搁 	//   荤侩磊甸阑 扁促赴促.	if (currentTime >= m_RegenTime)	{		if (g_pVariableManager->isActiveMasterLair())		{			activeEventWaitingPlayer();		}		else		{			// 酒聪搁 促澜 府哩 矫埃鳖瘤 措扁茄促.			MasterLairInfo* pInfo = g_pMasterLairInfoManager->getMasterLairInfo( m_pZone->getZoneID() );			Assert(pInfo!=NULL);			m_RegenTime.tv_sec += pInfo->getRegenDelay();		}	}	__END_CATCH}//////////////////////////////////////////////////////////////////////////////////// active EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::activeEventWaitingPlayer() 	throw (Error){	__BEGIN_TRY	MasterLairInfo* pInfo = g_pMasterLairInfoManager->getMasterLairInfo( m_pZone->getZoneID() );	Assert(pInfo!=NULL);	deleteAllMonsters();	m_bMasterReady = false;	//m_nSummonedMonster = 0;	m_nPassPlayer = 0;	// 5盒 措扁 矫埃	getCurrentTime( m_RegenTime );	m_EventTime.tv_sec = m_RegenTime.tv_sec + pInfo->getStartDelay();	m_EventTime.tv_usec = m_RegenTime.tv_usec;	m_EventValue = 0;	// 官蹿俊辑 拌加 阂采捞 稼酒坷弗促.	// 3檬付促	int lairAttackTick = pInfo->getLairAttackTick();	int lairAttackMinNumber = pInfo->getLairAttackMinNumber();	int lairAttackMaxNumber = pInfo->getLairAttackMaxNumber();	//cout << "EffectCon: " << (int)m_pZone->getZoneID() << ", " << lairAttackTick << ", " << lairAttackMinNumber << ", " << lairAttackMaxNumber << endl;	if (lairAttackMinNumber>0 && lairAttackMaxNumber>0)	{		// 扁粮俊 乐带 傍拜 Effect甫 葛滴 瘤款促.		for (int i=0; i<10; i++) // 公茄风橇 规瘤 -_-;		{			Effect* pOldEffect = m_pZone->findEffect( Effect::EFFECT_CLASS_CONTINUAL_GROUND_ATTACK );			if (pOldEffect==NULL)				break;			m_pZone->deleteEffect( pOldEffect->getObjectID() );		}		EffectContinualGroundAttack* pEffect = new EffectContinualGroundAttack(m_pZone, Effect::EFFECT_CLASS_GROUND_ATTACK, lairAttackTick);		//EffectContinualGroundAttack* pEffect = new EffectContinualGroundAttack(m_pZone, Effect::EFFECT_CLASS_METEOR_STRIKE, lairAttackTick);		pEffect->setDeadline( pInfo->getStartDelay()*10 );		pEffect->setNumber( lairAttackMinNumber, lairAttackMaxNumber );		ObjectRegistry & objectregister = m_pZone->getObjectRegistry();		objectregister.registerObject(pEffect);		// 粮俊促啊 捞棋飘甫 眠啊茄促.		m_pZone->addEffect( pEffect );		// 阂扁嫡		GCNoticeEvent gcNoticeEvent;		gcNoticeEvent.setCode( NOTICE_EVENT_CONTINUAL_GROUND_ATTACK );		gcNoticeEvent.setParameter( pInfo->getStartDelay() );	// 檬		m_pZone->broadcastPacket( &gcNoticeEvent );	}	// 付胶磐 饭绢啊 凯啡促绊 荤恩甸俊霸 舅妨霖促.//	ZoneInfo* pZoneInfo = g_pZoneInfoManager->getZoneInfo( m_pZone->getZoneID() );//	Assert(pZoneInfo!=NULL);//	StringStream msg;//	msg << "付胶磐 饭绢(" << pZoneInfo->getFullName().c_str() << ")啊 凯啡嚼聪促.";//    char msg[50]; //   sprintf( msg, g_pStringPool->c_str( STRID_MASTER_LAIR_OPENED ),  //                  pZoneInfo->getFullName().c_str() );// //   string sMsg( msg );////	GCSystemMessage gcSystemMessage;//	gcSystemMessage.setType(SYSTEM_MESSAGE_MASTER_LAIR);//	gcSystemMessage.setMessage( sMsg );//	g_pZoneGroupManager->broadcast( &gcSystemMessage );	GCNoticeEvent gcNoticeEvent;	gcNoticeEvent.setCode(NOTICE_EVENT_MASTER_LAIR_OPEN);	gcNoticeEvent.setParameter( m_pZone->getZoneID() );	g_pZoneGroupManager->broadcast( &gcNoticeEvent );	// 促澜 府哩 矫埃 汲沥	m_RegenTime.tv_sec += pInfo->getRegenDelay();	m_Event = EVENT_WAITING_PLAYER;	//cout << "[" << (int)m_pZone->getZoneID() << "] MasterLairManager::activeEventWaitingPlayer" << endl;	__END_CATCH}//////////////////////////////////////////////////////////////////////////////////// active EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::activeEventMinionCombat() 	throw (Error){	__BEGIN_TRY	MasterLairInfo* pInfo = g_pMasterLairInfoManager->getMasterLairInfo( m_pZone->getZoneID() );	Assert(pInfo!=NULL);	// 阂扁嫡 场车促绰 脚龋	GCNoticeEvent gcNoticeEvent;	gcNoticeEvent.setCode( NOTICE_EVENT_CONTINUAL_GROUND_ATTACK_END );	m_pZone->broadcastPacket( &gcNoticeEvent );	gcNoticeEvent.setCode( NOTICE_EVENT_MASTER_COMBAT_TIME );	gcNoticeEvent.setParameter( pInfo->getEndDelay() );	m_pZone->broadcastPacket( &gcNoticeEvent );	// tile俊辑绰 瘤快绊 packet篮 救 焊辰促.	deleteAllMonsters();	// 付胶磐 积己	Monster* pMaster = new Monster( pInfo->getMasterNotReadyMonsterType() );	Assert(pMaster != NULL);	// 矫眉俊辑 酒捞袍捞 救 唱坷档废 茄促.	pMaster->setTreasure( false );	// 公利 惑怕肺 汲沥	pMaster->setFlag(Effect::EFFECT_CLASS_NO_DAMAGE);	// 付胶磐甫 积己秦 初栏搁	// 付胶磐啊 舅酒辑 阁胶磐甫 家券窍霸 等促.	try	{		m_pZone->addCreature(pMaster, pInfo->getMasterX(), pInfo->getMasterY(), pInfo->getMasterDir());		// ObjectID甫 扁撅秦滴绊 佬绢辑 荤侩茄促.		m_MasterID = pMaster->getObjectID();	}	catch (EmptyTileNotExistException&)	{		// 付胶磐啊 甸绢哎 磊府啊 绝促绊? -_-;		SAFE_DELETE(pMaster);	}	//m_nSummonedMonster = 0;  // 付胶磐啊 家券茄 阁胶磐 荐 	m_Event = EVENT_MINION_COMBAT;	m_EventValue = 0;	// 攫力鳖瘤 轿匡鳖?	getCurrentTime( m_EventTime );	m_EventTime.tv_sec += pInfo->getEndDelay();	//cout << "[" << (int)m_pZone->getZoneID() << "] MasterLairManager::activeEventMinionCombat" << endl;	__END_CATCH}//////////////////////////////////////////////////////////////////////////////////// active EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::activeEventMasterCombat() 	throw (Error){	__BEGIN_TRY	Creature* pMaster = m_pZone->getMonsterManager()->getCreature( m_MasterID );	// 咯扁辑 付胶磐 包访 窍靛内爹阑 秦档 登摆瘤. - -;	if (pMaster!=NULL)	{		MasterLairInfo* pInfo = g_pMasterLairInfoManager->getMasterLairInfo( m_pZone->getZoneID() );		Assert(pInfo!=NULL);		Monster* pMasterMonster = dynamic_cast<Monster*>(pMaster);		// 家券 窜拌狼 付胶磐 措脚俊 流立 轿快绰 付胶磐 阁胶磐肺 官槽促.		if (pInfo->getMasterMonsterType()!=pMasterMonster->getMonsterType())		{		  	// 付胶磐 积己			Monster* pNewMaster = new Monster( pInfo->getMasterMonsterType() );			Assert(pNewMaster != NULL);			// 矫眉俊辑 酒捞袍捞 救 唱坷档废 茄促.			pNewMaster->setTreasure( false );			try			{				m_pZone->addCreature(pNewMaster, pInfo->getSummonX(), pInfo->getSummonY(), pMaster->getDir());				// ObjectID甫 扁撅秦滴绊 佬绢辑 荤侩茄促.				m_MasterID = pNewMaster->getObjectID();			}			catch (EmptyTileNotExistException&)			{				m_MasterID = 0;				// 付胶磐啊 甸绢哎 磊府啊 绝促绊? -_-;				SAFE_DELETE(pNewMaster);			}			// NotReady惑怕狼 Master甫 弊成 巢败 滴绰 版快			if (pInfo->isMasterRemainNotReady())			{				ZoneCoord_t cx = pMasterMonster->getX();				ZoneCoord_t cy = pMasterMonster->getY();			 	// 刚历 官蹿俊 静矾哆府扼绊, 捞棋飘甫 谎赴促.			   	GCAddEffect gcAddEffect;			    gcAddEffect.setObjectID(pMasterMonster->getObjectID());			    gcAddEffect.setEffectID(Effect::EFFECT_CLASS_COMA);				gcAddEffect.setDuration(0);			    m_pZone->broadcastPacket(cx, cy, &gcAddEffect);				// AI父 力芭窍绊 弊措肺 敌促.				pMasterMonster->removeBrain();				/*				// 酒捞袍栏肺 巢败笛法绰单.. AI力芭窍绊 弊成 滴绰霸 唱阑芭 鞍酒辑				m_pZone->deleteCreature( pMaster, pMaster->getX(), pMaster->getY() );				ZoneCoord_t cx = pMasterMonster->getX();				ZoneCoord_t cy = pMasterMonster->getY();				Tile& tile = m_pZone->getTile( cx, cy );				bool bCreateCorpse = true;				// 矫眉甫 鸥老俊 眠啊茄促. 泅犁 鸥老俊 酒捞袍捞 粮犁茄促搁,				if (tile.hasItem())				{					bCreateCorpse = false;				}				// Zone俊 矫眉(包)甫 眠啊茄促.				if (bCreateCorpse)				{					Timeval currentTime;					getCurrentTime(currentTime);					int timeGap = m_EventTime.tv_sec - currentTime.tv_sec;					Turn_t decayTurn = timeGap * 10;					MonsterCorpse* pMonsterCorpse = new MonsterCorpse(pMasterMonster);					TPOINT pt = m_pZone->addItem(pMonsterCorpse, cx, cy, true, decayTurn);					if (pt.x == -1)					{						SAFE_DELETE(pMonsterCorpse);

⌨️ 快捷键说明

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