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

📄 masterlairmanager.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 3 页
字号:
					}				}				else				{					SAFE_DELETE(pMaster);				}				*/			}			else			{				m_pZone->deleteCreature( pMaster, pMaster->getX(), pMaster->getY() );				SAFE_DELETE(pMaster);			}		}		else		{			// 公利 惑怕 秦力			// 盔贰 乐带 付胶磐啊 货 付胶磐肺 措眉登瘤 臼绊 流立 轿快霸 窍搁 弊傈俊 付胶磐啊 公利捞菌栏骨肺			// 公利阑 钱绢拎具 茄促. 货 付胶磐啊 轿快霸 窍妨搁 盔贰 付胶磐绰 NO_DAMAGE惑怕肺 巢酒乐绢具 茄促.			// 抛其令饭绢俊辑 盔贰 付胶磐啊 抛其令 包牢单 捞芭 呈公 老嘛 钱绢林绰 官恩俊 抛其令 包捞 NO_DAMAGE			// 啊 钱妨辑 抛其令 包阑 锭妨辑 版氰摹甫 掘阑 荐 乐霸 登绰 滚弊啊 乐菌促.			// 捞 if例 甸绢坷扁 傈俊 乐菌带 巴阑 else 例肺 颗变促. 2003. 1.16. by Sequoia			pMaster->removeFlag(Effect::EFFECT_CLASS_NO_DAMAGE);		}	}	m_Event = EVENT_MASTER_COMBAT;	m_EventValue = 0;	//cout << "[" << (int)m_pZone->getZoneID() << "[ MasterLairManager::activeEventMasterCombat" << endl;	__END_CATCH}//////////////////////////////////////////////////////////////////////////////////// active EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::activeEventWaitingKickOut() 	throw (Error){	__BEGIN_TRY	MasterLairInfo* pInfo = g_pMasterLairInfoManager->getMasterLairInfo( m_pZone->getZoneID() );	Assert(pInfo!=NULL);	// 付胶磐啊 救 磷菌促搁 皋技瘤 免仿	Creature* pMaster = m_pZone->getMonsterManager()->getCreature( m_MasterID );	if (pMaster!=NULL && pMaster->isAlive())	{		GCSay gcSay;		gcSay.setObjectID( pMaster->getObjectID() );		gcSay.setColor( MASTER_SAY_COLOR );		gcSay.setMessage( pInfo->getRandomMasterNotDeadSay() );		if (!gcSay.getMessage().empty())			m_pZone->broadcastPacket(pMaster->getX(), pMaster->getY(), &gcSay);	}	    // 救狼 荤侩磊甸阑 观栏肺 郴焊郴绰 矫埃 	m_Event = EVENT_WAITING_KICK_OUT;	m_EventValue = 0;	getCurrentTime( m_EventTime );	m_EventTime.tv_sec += pInfo->getKickOutDelay();	// Lair狼 蜡历甸俊霸 辆丰 矫埃阑 焊郴霖促.	GCNoticeEvent gcNoticeEvent;	gcNoticeEvent.setCode( NOTICE_EVENT_KICK_OUT_FROM_ZONE );	gcNoticeEvent.setParameter( pInfo->getKickOutDelay() );	m_pZone->broadcastPacket( &gcNoticeEvent );	//cout << "[" << (int)m_pZone->getZoneID() << "] MasterLairManager::activeEventKickOut" << endl;	__END_CATCH}//////////////////////////////////////////////////////////////////////////////////// active EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::activeEventWaitingRegen() 	throw (Error){	__BEGIN_TRY	deleteAllMonsters();	// EffectContinualGroundAttack甫 波霖促.	//m_nSummonedMonster = 0;	m_nPassPlayer = 0;	m_Event = EVENT_WAITING_REGEN;	m_EventValue = 0;	m_bMasterReady = false;	//cout << "[" << (int)m_pZone->getZoneID() << "] MasterLairManager::activeEventWaitingRegen" << endl;		__END_CATCH}//////////////////////////////////////////////////////////////////////////////////// delete All Monsters//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::deleteAllMonsters()	throw (Error){	__BEGIN_TRY	// Zone狼 MonsterManager俊辑 力芭茄 促澜俊 瘤况霖促.	//m_pZone->getMonsterManager()->deleteCreature( m_pMaster->getObjectID() );	//SAFE_DELETE(m_pMaster);	bool bDeleteFromZone = true;	m_pZone->getMonsterManager()->deleteAllMonsters( bDeleteFromZone );	m_MasterID = 0;	m_MasterX = 0;	m_MasterY = 0;	__END_CATCH}//////////////////////////////////////////////////////////////////////////////////// kill All Monsters//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::killAllMonsters()	throw (Error){	__BEGIN_TRY	// 捞 何盒俊 购啊 巩力啊 乐绰芭 鞍酒 力芭茄促.	/*	// 碍力肺 磷捞瘤 臼阑 阁胶磐	hash_map<ObjectID_t, ObjectID_t> exceptCreatures;	exceptCreatures[m_MasterID] = m_MasterID;	// 葛电 阁胶磐甫 磷牢促.	m_pZone->getMonsterManager()->killAllMonsters( exceptCreatures );	*/	__END_CATCH}//////////////////////////////////////////////////////////////////////////////////// increase SummonedMonster Number// /////////////////////////////////////////////////////////////////////////////////*void MasterLairManager::increaseSummonedMonsterNumber(int num) 	throw (Error){	__BEGIN_TRY	__ENTER_CRITICAL_SECTION(m_Mutex)	m_nSummonedMonster += num;	__LEAVE_CRITICAL_SECTION(m_Mutex)	__END_CATCH}*///////////////////////////////////////////////////////////////////////////////////// start Event//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::startEvent()	throw (Error){	__BEGIN_TRY	activeEventWaitingPlayer();	__END_CATCH}//////////////////////////////////////////////////////////////////////////////////// start Event//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::stopEvent()	throw (Error){	__BEGIN_TRY	kickOutPlayers();	activeEventWaitingRegen();	__END_CATCH}//////////////////////////////////////////////////////////////////////////////////// kickOut Players//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::kickOutPlayers()	throw (Error){	__BEGIN_TRY	MasterLairInfo* pInfo = g_pMasterLairInfoManager->getMasterLairInfo( m_pZone->getZoneID() );	Assert(pInfo!=NULL);	/*	ZoneID_t 	zoneID 	= pInfo->getKickZoneID();	ZoneCoord_t zoneX 	= pInfo->getKickZoneX();	ZoneCoord_t zoneY 	= pInfo->getKickZoneY();	//cout << "[kickOut] " << (int)zoneID << ": "<< (int)zoneX << ", " << (int)zoneY << endl;	// 粮狼 葛电 荤侩磊甸阑 促弗 镑栏肺 捞悼矫挪促.	PCManager* pPCManager = (PCManager*)(m_pZone->getPCManager());	pPCManager->transportAllCreatures( zoneID, zoneX, zoneY );	*/	// 眠规 矫埃 饶俊绰 皋抛坷 傍拜	int lairAttackTick = pInfo->getLairAttackTick();	int lairAttackMinNumber = pInfo->getLairAttackMinNumber();	int lairAttackMaxNumber = pInfo->getLairAttackMaxNumber();	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 );	__END_CATCH}//////////////////////////////////////////////////////////////////////////////////// give Killing Reward//////////////////////////////////////////////////////////////////////////////////// 付胶磐啊 磷菌阑锭狼 焊惑// 瘤陛篮 QuestItem阑 泅犁 粮狼 荤恩甸俊霸 阿磊狼 牢亥配府俊 持绢霖促.// 牢亥配府俊 磊府啊 绝绰 版快浚 官蹿俊 冻绢哆府绰单// 捞固 啊瘤绊 乐绰 荤恩篮 林匡 荐 绝促.////////////////////////////////////////////////////////////////////////////////void MasterLairManager::giveKillingReward() 	throw (Error){	__BEGIN_TRY	const PCManager* pPCManager = m_pZone->getPCManager();	const hash_map< ObjectID_t, Creature* > & creatures = pPCManager->getCreatures();	hash_map< ObjectID_t, Creature* >::const_iterator itr;	if (creatures.empty())		return;	int goodOneIndex = rand()%creatures.size();	// 奇带飘甫 啊龙 荤恩篮 穿备老鳖?	ItemType_t itemType;	int i;	for (i=0, itr=creatures.begin(); itr!=creatures.end(); i++, itr++)	{		Creature* pCreature = itr->second;		if (pCreature->isPC())		{			PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature);			Inventory* pInventory = pPC->getInventory();			//------------------------------------------------------------			// 拌鞭 版氰摹甫 棵妨霖促.			//------------------------------------------------------------			// 付胶磐 困摹客 7鸥老 捞郴俊 捞绰 版快			//			if (pPC->getDistance(m_MasterX, m_MasterY) <= 7)			{				pPC->increaseRankExp( MASTER_KILL_RANK_EXP );			}			//------------------------------------------------------------			// 焊惑 酒捞袍阑 积己茄促.			//------------------------------------------------------------			// 窍靛. - -;			switch (m_pZone->getZoneID())			{				// 官配府饭绢 & 努沸				case 1104 :				case 1106 :					itemType = ((goodOneIndex==i)? 1:0);				break;				// 抛其令 饭绢 & 努沸				case 1114 :				case 1115 :					itemType = ((goodOneIndex==i)? 3:2);				break;				default :					filelog("MasterLairBUG.txt", "ZoneID啊 肋给登菌嚼聪促");				return;			}			list<OptionType_t> nullList;			Item* pItem = g_pItemFactoryManager->createItem(Item::ITEM_CLASS_QUEST_ITEM, itemType, nullList); 			(m_pZone->getObjectRegistry()).registerObject(pItem);			// 牢亥配府狼 后 镑阑 茫绰促.			_TPOINT p;			if (pInventory->getEmptySlot(pItem, p))			{				// 牢亥配府俊 眠啊茄促.				pInventory->addItem(p.x, p.y, pItem);	            pItem->create(pCreature->getName(), STORAGE_INVENTORY, 0, p.x, p.y);				// ItemTrace 俊 Log 甫 巢变促				if ( pItem != NULL && pItem->isTraceItem() )				{					remainTraceLog( pItem, "LairMaster", pCreature->getName(), ITEM_LOG_CREATE, DETAIL_EVENTNPC);				}				// 牢亥配府俊 酒捞袍 积己 菩哦阑 焊郴霖促.				GCCreateItem gcCreateItem;				makeGCCreateItem( &gcCreateItem, pItem, p.x, p.y );				pCreature->getPlayer()->sendPacket(&gcCreateItem);			}			else			{				// 牢亥配府俊 磊府啊 绝绢辑 官蹿俊 冻绢哆赴促.				TPOINT p = m_pZone->addItem(pItem, pCreature->getX(), pCreature->getY());				if (p.x != -1)				{					pItem->create("", STORAGE_ZONE, m_pZone->getZoneID(), p.x, p.y );					// ItemTrace 俊 Log 甫 巢变促					if ( pItem != NULL && pItem->isTraceItem() )					{						char zoneName[15];						sprintf( zoneName , "%4d%3d%3d", m_pZone->getZoneID(), p.x, p.y);						remainTraceLog( pItem, "LairMaster", zoneName, ITEM_LOG_CREATE, DETAIL_EVENTNPC);					}				}				else				{					SAFE_DELETE(pItem);				}			}		}		else		{			throw Error("PCManager俊 PC酒囱霸 甸绢乐畴 -_-");		}	}	__END_CATCH}string MasterLairManager::toString() const 	throw(Error){	StringStream msg;	int eventSec = m_EventTime.tv_sec;	switch (m_Event)	{		case EVENT_WAITING_PLAYER :     // 荤恩甸捞 甸绢坷辨 扁促赴促.			msg << "WAITING_PLAYER, ";		break;		case EVENT_MINION_COMBAT:      // 家券等 阁胶磐客 轿款促.			msg << "MINION_COMBAT, ";		break;		case EVENT_MASTER_COMBAT:			msg << "MASTER_COMBAT, ";		break;		case EVENT_WAITING_KICK_OUT:    // 荤侩磊 碍力眠规 措扁(付胶磐 棱篮 版快狼 沥府 矫埃)			msg << "WAITING_KICK_OUT, ";		break;		case EVENT_WAITING_REGEN:      // 促矫 府哩登辨 扁促赴促.			msg << "WAITING_REGEN, ";			eventSec = m_RegenTime.tv_sec;		break;		default :		break;	}	Timeval currentTime;	getCurrentTime(currentTime);	int timeGap = eventSec - currentTime.tv_sec;	msg << timeGap << " sec remain, " << (int)m_pZone->getPCManager()->getSize() << " players";	return msg.toString();}

⌨️ 快捷键说明

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