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

📄 zoneutil.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	else	{		throw Error();	}	GCRemoveEffect gcRemoveEffect;	gcRemoveEffect.setObjectID(pCreature->getObjectID());	gcRemoveEffect.addEffectList((EffectID_t)Effect::EFFECT_CLASS_INVISIBILITY);	if (pCreature->isPC())	{		Player* pPlayer = pCreature->getPlayer();		Assert(pPlayer != NULL);		pPlayer->sendPacket(&gcRemoveEffect);	}		//--------------------------------------------------------------------------------	//	// 矫具 康开狼 惑窍谅快 葛滴 + 1 究 刘啊矫挪促. 	// 捞蜡绰 规氢俊 蝶弗 ON_SIGHT 康开捞 刘啊登扁 锭巩捞促.	//	//--------------------------------------------------------------------------------	for (ZoneCoord_t ix = max(0, cx - maxViewportWidth - 1), endx = min(pZone->getWidth() - 1, cx + maxViewportWidth + 1) ; ix <= endx ; ix ++) 	{		for (ZoneCoord_t iy = max(0, cy - maxViewportUpperHeight - 1), endy = min(pZone->getHeight() - 1, cy + maxViewportLowerHeight + 1) ; iy <= endy ; iy ++) 		{			Tile& curTile = pZone->getTile(ix, iy);			const slist<Object*> & objectList = curTile.getObjectList();			slist<Object*>::const_iterator itr = objectList.begin();			for (; itr != objectList.end() && (*itr)->getObjectPriority() <= OBJECT_PRIORITY_BURROWING_CREATURE; itr ++) 			{				Assert(*itr != NULL);				Creature* pViewer= dynamic_cast<Creature*>(*itr);				// Viewer 狼 Revealer 捞棋飘甫 啊廉柯促.//				EffectRevealer* pEffectRevealer = NULL;//				if ( pViewer->isFlag( Effect::EFFECT_CLASS_REVEALER ) )//				{//					pEffectRevealer = dynamic_cast<EffectRevealer*>(pViewer->findEffect( Effect::EFFECT_CLASS_REVEALER ) );//					Assert( pEffectRevealer );//				}				// Viewer 狼 Observing Eye 捞棋飘甫 啊廉柯促.				EffectObservingEye* pEffectObservingEye = NULL;				if ( pViewer->isFlag( Effect::EFFECT_CLASS_OBSERVING_EYE ) )				{					pEffectObservingEye = dynamic_cast<EffectObservingEye*>(pViewer->findEffect( Effect::EFFECT_CLASS_OBSERVING_EYE ) );					//Assert( pEffectObservingEye != NULL );				}				// Viewer 狼 Gnome's Whisper 捞棋飘甫 啊廉柯促.				EffectGnomesWhisper* pEffectGnomesWhisper = NULL;				if ( pViewer->isFlag( Effect::EFFECT_CLASS_GNOMES_WHISPER ) )				{					pEffectGnomesWhisper = dynamic_cast<EffectGnomesWhisper*>(pViewer->findEffect( Effect::EFFECT_CLASS_GNOMES_WHISPER ) );					//Assert( pEffectGnomesWhisper != NULL );				}				if (pViewer != pCreature 					&& pViewer->isPC() 					&& (pViewer->getVisionState(cx, cy) >= IN_SIGHT)) 				{					// 林籍贸府 by sigi					//if ((!pCreature->isFlag(Effect::EFFECT_CLASS_HIDE) 					//	|| pViewer->isFlag(Effect::EFFECT_CLASS_DETECT_HIDDEN)))					{						// 捞傈俊 捞 某腐阑 给 焊带 局甸俊 茄秦辑 						// 捞 某腐阑 Add矫难霖促.						// invisbility客 包访秦辑父, 杭 荐 绝绰磊..						if (!pViewer->isFlag(Effect::EFFECT_CLASS_DETECT_INVISIBILITY) 							&& ( pViewer->isSlayer() || pViewer->isOusters() )							&& !( pEffectObservingEye != NULL && pEffectObservingEye->canSeeInvisibility( pCreature ) )							&& !( pEffectGnomesWhisper != NULL && pEffectGnomesWhisper->canSeeInvisibility() )						) 						{							pViewer->getPlayer()->sendPacket(pGCAddXXX);						}					}					//else					{						// 盔贰 杭 荐 绝菌栏骨肺, 鞠巴档 且 老捞 绝促.					}					// 绢露芭唱 invisible钱赴促绰扒 焊郴拎具茄促. by sigi					pViewer->getPlayer()->sendPacket(&gcRemoveEffect);									}//if			}//for		}//for	}//for		//--------------------------------------------	// effect manager俊辑 Effect甫 碍力 昏力茄促.	//--------------------------------------------	if (bForced == true)	{        EffectManager* pEffectManager = pCreature->getEffectManager();        Assert(pEffectManager);        pEffectManager->deleteEffect(pCreature, Effect::EFFECT_CLASS_INVISIBILITY);	}	/*	GCRemoveEffect removeEffect;	removeEffect.setObjectID(pCreature->getObjectID());	removeEffect.addEffectList((EffectID_t)Effect::EFFECT_CLASS_INVISIBILITY);	pZone->broadcastPacket(cx, cy, &removeEffect);	*/		pCreature->removeFlag(Effect::EFFECT_CLASS_INVISIBILITY);	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// 救 焊捞绰 农府媚甫 眠啊茄促.//// Zone*       pZone     : 粮俊 措茄 器牢磐// Creature*   pCreature : 救 焊捞绰 农府媚// ZoneCoord_t cx        : 农府媚狼 盔贰 谅钎 x// ZoneCoord_t cy        : 农府媚狼 盔贰 谅钎 y//////////////////////////////////////////////////////////////////////////////void addSnipingModeCreature(Zone* pZone, Creature* pCreature, ZoneCoord_t cx, ZoneCoord_t cy)	throw(){	__BEGIN_TRY	Assert(pZone != NULL);	Assert(pCreature != NULL);	// 浇饭捞绢父 捞 扁贱阑 镜 荐 乐促.	Assert(pCreature->isSlayer());		ObjectID_t creatureID = pCreature->getObjectID();	GCDeleteObject gcDO;	gcDO.setObjectID(creatureID); 			pCreature->setFlag(Effect::EFFECT_CLASS_SNIPING_MODE);		//Tile& rTile = pZone->getTile(cx, cy);	GCAddEffect gcAddEffect;	gcAddEffect.setObjectID(creatureID);	gcAddEffect.setEffectID(Effect::EFFECT_CLASS_SNIPING_MODE);	gcAddEffect.setDuration(0);		//--------------------------------------------------------------------------------	//	// 矫具 康开狼 惑窍谅快 葛滴 + 1 究 刘啊矫挪促. 	// 捞蜡绰 规氢俊 蝶弗 ON_SIGHT 康开捞 刘啊登扁 锭巩捞促.	//	//--------------------------------------------------------------------------------	for (ZoneCoord_t ix = max(0, cx - maxViewportWidth - 1), endx = min(pZone->getWidth() - 1, cx + maxViewportWidth + 1) ; ix <= endx ; ix ++) 	{		for (ZoneCoord_t iy = max(0, cy - maxViewportUpperHeight - 1), endy = min(pZone->getHeight() - 1, cy + maxViewportLowerHeight + 1) ; iy <= endy ; iy ++) 		{			Tile& curTile = pZone->getTile(ix, iy);			const slist<Object*> & objectList = curTile.getObjectList();			slist<Object*>::const_iterator itr = objectList.begin();			for (; itr != objectList.end() && (*itr)->getObjectPriority() <= OBJECT_PRIORITY_BURROWING_CREATURE; itr ++) 			{				Assert(*itr != NULL);				Creature* pViewer= dynamic_cast<Creature*>(*itr);				if (pViewer != pCreature && pViewer->isPC() && 					(pViewer->getVisionState(cx, cy) >= IN_SIGHT)) 				{					// Viewer 狼 Revealer 捞棋飘甫 啊廉柯促.//					EffectRevealer* pEffectRevealer = NULL;//					if ( pViewer->isFlag( Effect::EFFECT_CLASS_REVEALER ) )//					{//						pEffectRevealer = dynamic_cast<EffectRevealer*>(pViewer->findEffect( Effect::EFFECT_CLASS_REVEALER ) );//						Assert( pEffectRevealer );//					}					// Viewer 狼 Gnome's Whisper 捞棋飘甫 啊廉柯促.					EffectGnomesWhisper* pEffectGnomesWhisper = NULL;					if ( pViewer->isFlag( Effect::EFFECT_CLASS_GNOMES_WHISPER ) )					{						pEffectGnomesWhisper = dynamic_cast<EffectGnomesWhisper*>(pViewer->findEffect( Effect::EFFECT_CLASS_GNOMES_WHISPER ) );						//Assert( pEffectGnomesWhisper != NULL );					}					if ( !pCreature->isFlag(Effect::EFFECT_CLASS_HIDE)							|| pViewer->isFlag(Effect::EFFECT_CLASS_DETECT_HIDDEN)							|| ( pEffectGnomesWhisper != NULL && pEffectGnomesWhisper->canSeeHide() )					   )//						|| ( pEffectRevealer != NULL && pEffectRevealer->canSeeHide( pCreature ) ) ))					{						if ( pViewer->isFlag( Effect::EFFECT_CLASS_DETECT_INVISIBILITY )								|| ( pEffectGnomesWhisper != NULL && pEffectGnomesWhisper->canSeeSniping() )						   ) //							|| ( pEffectRevealer != NULL && pEffectRevealer->canSeeSniping( pCreature ) ) )						{							pViewer->getPlayer()->sendPacket( &gcAddEffect );						}						else						{							pViewer->getPlayer()->sendPacket( &gcDO );						}						// invisbility客 包访秦辑父, 杭 荐 绝绰磊../*						if (!pViewer->isFlag(Effect::EFFECT_CLASS_DETECT_INVISIBILITY) || pViewer->isVampire()) 						{							pViewer->getPlayer()->sendPacket(&gcDO);						}						else						{							pViewer->getPlayer()->sendPacket(&gcAddEffect);						}*/					}					else					{						// 盔贰 杭 荐 绝菌栏骨肺, 鞠巴档 且 老捞 绝促.					}				}//if			}//for		}//for	}//for	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// 救 焊捞带 农府媚啊 焊老 版快, 捞 农府媚甫 眠啊茄促.//// Zone*       pZone     : 粮俊 措茄 器牢磐// Creature*   pCreature : 救 焊捞带 农府媚// bool        bForce    : 碍力肺 visible 惑怕啊 登菌唱?//////////////////////////////////////////////////////////////////////////////void addUnSnipingModeCreature(Zone* pZone, Creature* pCreature, bool bForced)	throw() {	__BEGIN_TRY	Assert(pZone != NULL);	Assert(pCreature != NULL);	// 浇饭捞绢父捞 胶唱捞俏捞 啊瓷窍促.	Assert(pCreature->isSlayer());	// 敲贰弊啊 难廉乐绢具 茄促.	Assert(pCreature->isFlag(Effect::EFFECT_CLASS_SNIPING_MODE));		ZoneCoord_t cx          = pCreature->getX();	ZoneCoord_t cy          = pCreature->getY();	//Tile&       rTile       = pZone->getTile(cx, cy);	Packet*                pGCAddXXX = NULL;	GCAddSlayer		 	   gcAddSlayer;		Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature);//	gcAddSlayer.setSlayerInfo(pSlayer->getSlayerInfo3());//	gcAddSlayer.setEffectInfo(pSlayer->getEffectInfo());	makeGCAddSlayer( &gcAddSlayer, pSlayer );	pGCAddXXX = &gcAddSlayer;		GCRemoveEffect gcRemoveEffect;	gcRemoveEffect.setObjectID(pCreature->getObjectID());	gcRemoveEffect.addEffectList((EffectID_t)Effect::EFFECT_CLASS_SNIPING_MODE);	if ( pCreature->isPC() )	{		Player* pPlayer = pCreature->getPlayer();		Assert( pPlayer );		pPlayer->sendPacket( &gcRemoveEffect );	}	//--------------------------------------------------------------------------------	//	// 矫具 康开狼 惑窍谅快 葛滴 + 1 究 刘啊矫挪促. 	// 捞蜡绰 规氢俊 蝶弗 ON_SIGHT 康开捞 刘啊登扁 锭巩捞促.	//	//--------------------------------------------------------------------------------	for (ZoneCoord_t ix = max(0, cx - maxViewportWidth - 1), endx = min(pZone->getWidth() - 1, cx + maxViewportWidth + 1) ; ix <= endx ; ix ++) 	{		for (ZoneCoord_t iy = max(0, cy - maxViewportUpperHeight - 1), endy = min(pZone->getHeight() - 1, cy + maxViewportLowerHeight + 1) ; iy <= endy ; iy ++) 		{			Tile& curTile = pZone->getTile(ix, iy);			const slist<Object*> & objectList = curTile.getObjectList();			slist<Object*>::const_iterator itr = objectList.begin();			for (; itr != objectList.end() && (*itr)->getObjectPriority() <= OBJECT_PRIORITY_BURROWING_CREATURE; itr ++) 			{				Assert(*itr != NULL);				Creature* pViewer= dynamic_cast<Creature*>(*itr);				// Viewer 狼 Revealer 捞棋飘甫 啊廉柯促.//				EffectRevealer* pEffectRevealer = NULL;//				if ( pViewer->isFlag( Effect::EFFECT_CLASS_REVEALER ) )//				{//					pEffectRevealer = dynamic_cast<EffectRevealer*>(pViewer->findEffect(Effect::EFFECT_CLASS_REVEALER));//					Assert( pEffectRevealer );//				}				// Viewer 狼 Gnome's Whisper 捞棋飘甫 啊廉柯促.				EffectGnomesWhisper* pEffectGnomesWhisper = NULL;				if ( pViewer->isFlag( Effect::EFFECT_CLASS_GNOMES_WHISPER ) )				{					pEffectGnomesWhisper = dynamic_cast<EffectGnomesWhisper*>(pViewer->findEffect( Effect::EFFECT_CLASS_GNOMES_WHISPER ) );					//Assert( pEffectGnomesWhisper != NULL );				}				if (pViewer != pCreature && pViewer->isPC() && (pViewer->getVisionState(cx, cy) >= IN_SIGHT)) 				{					if ( !pCreature->isFlag(Effect::EFFECT_CLASS_HIDE)							|| pViewer->isFlag(Effect::EFFECT_CLASS_DETECT_HIDDEN)							|| ( pEffectGnomesWhisper != NULL && pEffectGnomesWhisper->canSeeHide() )					   )//						|| ( pEffectRevealer != NULL && pEffectRevealer->canSeeHide( pCreature ) ) ))					{						// invisbility客 包访秦辑父, 杭 荐 绝绰磊..						if ( !pViewer->isFlag(Effect::EFFECT_CLASS_DETECT_INVISIBILITY)								|| ( pEffectGnomesWhisper != NULL && pEffectGnomesWhisper->canSeeSniping() )							)//							&& !( pEffectRevealer != NULL && pEffectRevealer->canSeeSniping( pCreature ) ) )						{							pViewer->getPlayer()->sendPacket(pGCAddXXX);						}					}					else					{						// 盔贰 杭 荐 绝菌栏骨肺, 鞠巴档 且 老捞 绝促.					}										// sniping mode 啊 钱赴促绰 吧 焊郴霖促.					pViewer->getPlayer()->sendPacket( &gcRemoveEffect );									}//if			}//for		}//for	}//for		//--------------------------------------------	// effect manager俊辑 Effect甫 碍力 昏力茄促.	//--------------------------------------------	if (bForced == true)	{        EffectManager* pEffectManager = pCreature->getEffectManager();        Assert(pEffectManager);        pEffectManager->deleteEffect(pCreature, Effect::EFFECT_CLASS_SNIPING_MODE);	}/*	GCRemoveEffect removeEffect;	removeEffect.setObjectID(pCreature->getObjectID());	removeEffect.addEffectList((EffectID_t)Effect::EFFECT_CLASS_SNIPING_MODE);	pZone->broadcastPacket(cx, cy, &removeEffect);*/		pCreature->removeFlag(Effect::EFFECT_CLASS_SNIPING_MODE);	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// 粮俊促 瘤汾甫 歹茄促.//// Zone*       pZone : 粮俊 措茄 器牢磐// Mine*       pMine : 瘤汾 按眉俊 措茄 器牢磐// ZoneCoord_t cx    : 瘤汾甫 歹且 谅钎 x// ZoneCoord_t cy    : 瘤汾甫 歹且 谅钎 y//////////////////////////////////////////////////////////////////////////////void addInstalledMine(Zone* pZone, Mine* pMine, ZoneCoord_t cx, ZoneCoord_t cy) 	throw(){	__BEGIN_TRY	Assert(pZone != NULL);	Assert(pMine != NULL);	Assert(pMine->isFlag(Effect::EFFECT_CLASS_INSTALL));	//Tile& rTile = pZone->getTile(cx, cy);	GCDeleteObject gcDO;	gcDO.setObjectID(pMine->getObjectID());	GCAddInstalledMineToZone gcAddMine;	gcAddMine.setObjectID(pMine->getObjectID());	gcAddMine.setX(cx);	gcAddMine.setY(cy);	gcAddMine.setItemClass(pMine->getItemClass());	gcAddMine.setItemType(pMine->getItemType());	gcAddMine.setOptionType(pMine->getOptionTypeList());	gcAddMine.setDurability(pMine->getDurability());	//--------------------------------------------------------------------------------	//	// 矫具 康开狼 惑窍谅快 葛滴 + 1 究 刘啊矫挪促. 	// 捞蜡绰 规氢俊 蝶弗 ON_SIGHT 康开捞 刘啊登扁 锭巩捞促.	//	//--------------------------------------------------------------------------------	for (ZoneCoord_t ix = max(0, cx - maxViewportWidth - 1), endx = min(pZone->getWidth() - 1, cx + maxViewportWidth + 1) ; ix <= endx ; ix ++) 	{		for (ZoneCoord_t iy = max(0, cy - maxViewportUpperHeight - 1), endy = min(pZone->getHeight() - 1, cy + maxViewportLowerHeight + 1) ; iy <= endy ; iy ++) 		{			Tile& rTile2 = pZone->getTile(ix, iy);			const slist<Object*> & objectList = rTile2.getObjectList();			for (slist<Object*>::const_iterator itr = objectList.begin() ; itr != objectList.end() && (*itr)->getObjectPriority() <= OBJECT_PRIORITY_BURROWING_CREATURE; itr ++) 			{				Assert(*itr != NULL);				Creature* pViewer= dynamic_cast<Creature*>(*itr);				Assert(pViewer != NULL);				if (pViewer->isPC() && (pViewer->getVisionState(cx, cy) >= IN_SIGHT))

⌨️ 快捷键说明

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