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

📄 zone.cpp.backup

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 BACKUP
📖 第 1 页 / 共 5 页
字号:
								//cout << pCreature->toString() << endl;								// PC捞搁辑, creatureList俊 家加登瘤档 臼栏搁辑, (x,y)甫 杭 荐 乐绰 版快								if (pCreature->isPC()) 								{									// Revealer 捞棋飘啊 乐促搁 捞棋飘甫 啊廉柯促.//									EffectRevealer* pEffectRevealer = NULL;//									if ( pCreature->isFlag( Effect::EFFECT_CLASS_REVEALER ) )//									{//										pEffectRevealer = dynamic_cast<EffectRevealer*>(pCreature->findEffect(Effect::EFFECT_CLASS_REVEALER));//										Assert( pEffectRevealer != NULL );//									}									if (pCreature->getVisionState(cx,cy) >= IN_SIGHT										&& (pCreature->isVampire() 											|| (!isMonsterHide || pCreature->isFlag(Effect::EFFECT_CLASS_DETECT_HIDDEN))//												|| ( pEffectRevealer != NULL && pEffectRevealer->canSeeHide( pMonster ) ) )											&& (!isMonsterInvisibility || pCreature->isFlag(Effect::EFFECT_CLASS_DETECT_INVISIBILITY))//												|| ( pEffectRevealer != NULL && pEffectRevealer->canSeeInvisibility( pMonster ) ) )											)										)									{										pCreature->getPlayer()->sendPacket(pAddMonsterPacket);									}								} // if							} // for						}//if					}//for				}//for				delete pAddMonsterPacket;			}		}		else		{			throw Error("invalid creature type");		}	} 	else 	{		throw EmptyTileNotExistException("too many creature in this zone.. or too unlucky");	}	__END_CATCH}//--------------------------------------------------------------------------------// 漂沥 困摹俊 酒捞袍阑 冻绢哆赴促.// Zone ::addItem()// 7x7 康开阑 八荤秦辑 后沫捞 粮犁窍搁 冻绢哆赴促. 巩力绰 犁荐绝绰 版快 后沫捞 // 粮犁窍瘤 臼阑 版快牢单.. 捞锭 抗寇甫 带咙栏肺结 弊 贸府甫 惑困俊霸 该扁搁// 瞪 淀...//--------------------------------------------------------------------------------TPOINT Zone::addItem(Item* pItem, ZoneCoord_t cx, ZoneCoord_t cy, bool bAllowCreature)	throw(EmptyTileNotExistException, Error){	__BEGIN_TRY	__BEGIN_DEBUG	Item::ItemClass IClass = pItem->getItemClass();	TPOINT          pt     = findSuitablePositionForItem(this, cx, cy, bAllowCreature);		// 初阑 困摹甫 茫酒辰 版快	if (pt.x != -1) 	{ 		m_pTiles[pt.x][pt.y].addItem(pItem);		addToItemList(pItem);			   			if (IClass == Item::ITEM_CLASS_CORPSE) 		{			ItemType_t itemType = pItem->getItemType();			Turn_t DelayTime = 0;			if (itemType == SLAYER_CORPSE)			{				SlayerCorpse* pSlayerCorpse = dynamic_cast<SlayerCorpse*>(pItem);				pSlayerCorpse->setXY(pt.x, pt.y);				GCAddSlayerCorpse gcAddSlayerCorpse;				makeGCAddSlayerCorpse(&gcAddSlayerCorpse, pSlayerCorpse);				broadcastPacket(pt.x, pt.y, &gcAddSlayerCorpse);				DelayTime = 6000;			}			else if (itemType == VAMPIRE_CORPSE)			{				VampireCorpse* pVampireCorpse = dynamic_cast<VampireCorpse*>(pItem);				pVampireCorpse->setXY(pt.x, pt.y);				GCAddVampireCorpse gcAddVampireCorpse;				makeGCAddVampireCorpse(&gcAddVampireCorpse, pVampireCorpse);				broadcastPacket(pt.x, pt.y, &gcAddVampireCorpse);				DelayTime = 6000;			}			else if (itemType == NPC_CORPSE)			{				Assert(false);			}			else if (itemType == MONSTER_CORPSE)			{				MonsterCorpse* pMonsterCorpse = dynamic_cast<MonsterCorpse*>(pItem);				GCAddMonsterCorpse gcAddMonsterCorpse;				makeGCAddMonsterCorpse(&gcAddMonsterCorpse, pMonsterCorpse, pt.x, pt.y);				broadcastPacket(pt.x, pt.y, &gcAddMonsterCorpse);				DelayTime = 600;			}			else			{				Assert(false);			}			// 酒捞袍捞 甸绢啊乐瘤 臼篮 矫眉扼搁 掉饭捞 矫埃阑 临牢促.			Corpse* pCorpse = dynamic_cast<Corpse*>(pItem);			if (pCorpse->getTreasureCount() == 0)			{				DelayTime = DelayTime/10;			}			// Relic牢 版快俊绰 矫埃狼 瘤楷俊 蝶扼 酒捞袍捞 荤扼瘤瘤 臼绰促.			if (!pCorpse->getRelic())			{				// 官蹿俊 冻绢瘤绰 酒捞袍篮 老沥 矫埃捞 瘤唱搁 荤扼瘤霸 等促.				EffectDecayCorpse* pEffectDecayCorpse = new EffectDecayCorpse(this, pt.x, pt.y, (Corpse*)pItem, DelayTime);				pEffectDecayCorpse->setNextTime(999999);				m_ObjectRegistry.registerObject(pEffectDecayCorpse);				addEffect(pEffectDecayCorpse);			}			else			{				cout << "Relic牢 版快俊绰 矫眉啊 荤扼瘤瘤 臼嚼聪促" << endl;			}		} 		else		{			GCDropItemToZone gcDropItemToZone;			makeGCDropItemToZone(&gcDropItemToZone, pItem, pt.x, pt.y);//			if ( !pItem->isFlag(Effect::EFFECT_CLASS_INSTALL) ) {				broadcastPacket(pt.x, pt.y, &gcDropItemToZone);//			}			// 葛磐荤捞努篮 矫埃捞 瘤唱档 荤扼瘤瘤 臼绰促.			if (IClass == Item::ITEM_CLASS_MOTORCYCLE)			{				// transport牢 版快甫 措厚秦辑 眉农秦力秦具茄促.				MotorcycleBox* pMotorcycleBox = g_pParkingCenter->getMotorcycleBox( pItem->getItemID() );				if (pMotorcycleBox!=NULL)				{					pMotorcycleBox->setTransport( false );					pMotorcycleBox->setX( pt.x );					pMotorcycleBox->setY( pt.y );				}			}			else			{				// 官蹿俊 冻绢瘤绰 酒捞袍篮 老沥 矫埃捞 瘤唱搁 荤扼瘤霸 等促.				EffectDecayItem* pEffectDecayItem = new EffectDecayItem(this, pt.x, pt.y, (Item*)pItem, 6000);				pEffectDecayItem->setNextTime(999999);				m_ObjectRegistry.registerObject(pEffectDecayItem);				addEffect(pEffectDecayItem);			}		}		return pt;	} 	else 	{		//throw InvalidProtocolException("too many item in this zone.. or too unlucky");		//pItem->destroy();		//Delete pItem;		TPOINT pt_error;		pt_error.x = -1;		pt_error.y = -1;		return pt_error;	}	return pt;	__END_DEBUG	__END_CATCH}//--------------------------------------------------------------------------------//--------------------------------------------------------------------------------void Zone::addEffect(Effect* pEffect)	throw(Error){	__BEGIN_TRY	Assert(pEffect != NULL);	m_pEffectManager->addEffect(pEffect);	__END_CATCH}void Zone::deleteEffect(ObjectID_t id) 	throw(Error){	__BEGIN_TRY	m_pEffectManager->deleteEffect(id);	__END_CATCH}//--------------------------------------------------------------------------------//--------------------------------------------------------------------------------void Zone::addEffect_LOCKING(Effect* pEffect)	throw(Error){	__BEGIN_TRY	Assert(pEffect != NULL);	__ENTER_CRITICAL_SECTION(m_MutexEffect)	m_pLockedEffectManager->addEffect(pEffect);	__LEAVE_CRITICAL_SECTION(m_MutexEffect)	__END_CATCH}void Zone::deleteEffect_LOCKING(ObjectID_t id) 	throw(Error){	__BEGIN_TRY	__ENTER_CRITICAL_SECTION(m_MutexEffect)	m_pLockedEffectManager->deleteEffect(id);	__LEAVE_CRITICAL_SECTION(m_MutexEffect)	__END_CATCH}//--------------------------------------------------------------------------------// Delete PC from PC Manager (only do this)//--------------------------------------------------------------------------------void Zone::deletePC(Creature* pCreature) 	throw()//NoSuchElementException, Error){	__BEGIN_TRY	Assert(pCreature != NULL);	m_pPCManager->deleteCreature(pCreature->getObjectID());	__END_CATCH}//--------------------------------------------------------------------------------// Delete Queue PC//--------------------------------------------------------------------------------void Zone::deleteQueuePC(Creature* pCreature) 	throw(NoSuchElementException, Error){	__BEGIN_TRY	__ENTER_CRITICAL_SECTION(m_Mutex)	Assert(pCreature != NULL);	list<Creature*>::iterator itr = find_if (m_PCListQueue.begin(), m_PCListQueue.end(), isSameCreature(pCreature));	if (itr != m_PCListQueue.end()) 	{		m_PCListQueue.erase(itr);	}	__LEAVE_CRITICAL_SECTION(m_Mutex)	__END_CATCH}//--------------------------------------------------------------------------------// Add PC to PC Manager (only do this)//--------------------------------------------------------------------------------void Zone::addPC(Creature* pCreature) 	throw(Error){	__BEGIN_TRY	Assert(pCreature != NULL);	m_pPCManager->addCreature(pCreature);	__END_CATCH}//--------------------------------------------------------------------------------////--------------------------------------------------------------------------------void Zone::deleteCreature(Creature* pCreature, ZoneCoord_t x, ZoneCoord_t y)	throw(NoSuchElementException, Error){	__BEGIN_TRY	try 	{		Assert(pCreature->getX() == x && pCreature->getY() == y);		// 秦寸登绰 CreatureManager 俊辑 农府贸甫 昏力茄促.		if (pCreature->isPC())		{			m_pPCManager->deleteCreature(pCreature->getObjectID());			// 颇萍 檬措吝捞扼搁 PartyInviteInfo甫 昏力秦霖促.			m_pPartyInviteInfoManager->cancelInvite(pCreature);			// 颇萍俊 啊涝登绢 乐菌促搁 肺拿 颇萍俊辑 昏力秦 霖促.			uint PartyID = pCreature->getPartyID();			if (PartyID != 0)			{				m_pLocalPartyManager->deletePartyMember(PartyID, pCreature);			}			// 飘饭捞靛 吝捞菌促搁 飘饭捞靛 包访 沥焊甫 昏力秦霖促.			TradeInfo* pInfo = m_pTradeManager->getTradeInfo(pCreature->getName());			if (pInfo != NULL)			{				m_pTradeManager->cancelTrade(pCreature);			}		}		else if (pCreature->isMonster())		{//#ifdef __XMAS_EVENT_CODE__			Monster* pMonster = dynamic_cast<Monster*>(pCreature);			switch (pMonster->getMonsterType())			{				case 358:				case 359:				case 360:				case 361:					m_pEventMonsterManager->deleteCreature(pCreature->getObjectID());					break;				case 371:				case 372:				case 373:				case 374:				case 375:				case 376:					m_pCombatMonsterManager->deleteCreature(pCreature->getObjectID());					break;				default:					m_pMonsterManager->deleteCreature(pCreature->getObjectID());					break;			}//#else//			m_pMonsterManager->deleteCreature(pCreature->getObjectID());/*#endif*/		}		else if (pCreature->isNPC())		{			m_pNPCManager->deleteCreature(pCreature->getObjectID());		}		// 鸥老俊辑 农府贸甫 昏力茄促.		getTile(x, y).deleteCreature(pCreature->getObjectID());		// 林函狼 PC甸俊霸 农府贸啊 荤扼脸促绰 荤角阑 宏肺靛某胶飘茄促.		GCDeleteObject gcDeleteObject(pCreature->getObjectID());		broadcastPacket(x, y, &gcDeleteObject, pCreature);	} 	catch (Throwable & t) 	{		cerr << t.toString() << endl;	}	__END_CATCH}//--------------------------------------------------------------------------------////--------------------------------------------------------------------------------void Zone::deleteObject(Object* pObject, ZoneCoord_t x, ZoneCoord_t y)	throw(NoSuchElementException, Error){	__BEGIN_TRY	//--------------------------------------------------	// 粮俊辑 按眉甫 昏力茄促.	//--------------------------------------------------	getTile(x, y).deleteObject(pObject->getObjectID());	//--------------------------------------------------	// 林函狼 PC甸俊霸 按眉啊 荤扼脸促绰 荤角阑 宏肺靛某胶飘茄促.	//--------------------------------------------------	GCDeleteObject gcDeleteObject(pObject->getObjectID());	broadcastPacket(x, y, &gcDeleteObject);	__END_CATCH}//--------------------------------------------------------------------------------////--------------------------------------------------------------------------------void Zone::deleteItem(Object* pObject, ZoneCoord_t x, ZoneCoord_t y)	throw(NoSuchElementException, Error){	__BEGIN_TRY	deleteFromItemList(pObject->getObjectID());	//--------------------------------------------------	// 粮俊辑 按眉甫 昏力茄促.	//--------------------------------------------------	getTile(x, y).deleteItem();	//--------------------------------------------------	// 林函狼 PC甸俊霸 按眉啊 荤扼脸促绰 荤角阑 宏肺靛某胶飘茄促.	//--------------------------------------------------//	GCDeleteObject gcDeleteObject(pObject->getObjectID());//	broadcastPacket(x, y, &gcDeleteObject);	__END_CATCH}//--------------------------------------------------------------------------------//// broadcast packet//

⌨️ 快捷键说明

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