cgrelictoobjecthandler.cpp

来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 753 行 · 第 1/2 页

CPP
753
字号
		{			// 己拱 焊包措啊 救傈茄 矫埃 汲沥			Timeval safeTime;			getCurrentTime( safeTime );			safeTime.tv_sec += g_pVariableManager->getCombatBonusTime()*60;			// 铰府 message 甫 焊郴霖促.			GCSystemMessage gcSystemMessage;			pTableEffect->setSafeTime( safeTime );			if (bSlayer)			{				gcSystemMessage.setMessage( g_pStringPool->getString( STRID_COMBAT_SLAYER_WIN ) );				g_pCombatInfoManager->setRelicOwner(relicIndex, CombatInfoManager::RELIC_OWNER_SLAYER);			}			else			{				gcSystemMessage.setMessage( g_pStringPool->getString( STRID_COMBAT_VAMPIRE_WIN ) );				g_pCombatInfoManager->setRelicOwner(relicIndex, CombatInfoManager::RELIC_OWNER_VAMPIRE);			}			// 傈里捞 辆丰登菌促.			g_pCombatInfoManager->setCombat( false );			// 傈眉 荤侩磊俊霸 message甫 焊辰促.			g_pZoneGroupManager->broadcast( &gcSystemMessage );			g_pCombatInfoManager->computeModify();		}	}	else	{		GCCannotAdd _GCCannotAdd;		_GCCannotAdd.setObjectID(pPacket->getObjectID());		pPlayer->sendPacket(&_GCCannotAdd);	}#endif	// __GAME_SERVER__			__END_CATCH}void CGRelicToObjectHandler::executeBloodBible(CGRelicToObject* pPacket , Player* pPlayer)	 throw (Error){	__BEGIN_TRY#ifdef __GAME_SERVER__	GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);	Creature*   pCreature 	= pGamePlayer->getCreature();	Zone*	 	pZone		= pCreature->getZone();	Assert(pZone!=NULL);	// 己拱 焊包措俊 捞固 笛 促 乐绰 版快	// 己拱 焊包措俊 Slayer己拱捞 乐绊 pItem捞 Slayer己拱牢 版快	PlayerCreature* pPlayerCreature = dynamic_cast<PlayerCreature*>(pCreature);	// 泅犁 甸绊 乐绰 酒捞袍 == Relic ?	InventorySlot* 	pExtraInventorySlot = pPlayerCreature->getExtraInventorySlot();	Item*   		pItem   			= pExtraInventorySlot->getItem();	Item* pTableItem = pZone->getItem( pPacket->getObjectID() );	// 弊繁 item捞 绝芭唱	// 矫眉啊 酒聪芭唱	// Monster矫眉啊 酒聪芭唱	// ShrineGuard档 ShrineHoly档 酒聪搁.. 己窜捞 酒聪瘤.	if (pTableItem==NULL 		|| pTableItem->getItemClass()!=Item::ITEM_CLASS_CORPSE		|| pTableItem->getItemType()!=MONSTER_CORPSE		|| !pTableItem->isFlag(Effect::EFFECT_CLASS_SHRINE_GUARD) &&			!pTableItem->isFlag(Effect::EFFECT_CLASS_SHRINE_HOLY))	{		GCCannotAdd _GCCannotAdd;		_GCCannotAdd.setObjectID(pPacket->getObjectID());		pPlayer->sendPacket(&_GCCannotAdd);		//cout << "return: not Shrine" << endl;		return;	}	// 己窜	MonsterCorpse* pCorpse = dynamic_cast<MonsterCorpse*>(pTableItem);	Assert(pCorpse!=NULL);	// 2鸥老 救俊 乐瘤 臼芭唱	// shrine栏肺 汲沥捞 救登绢 乐栏搁	if (!verifyDistance(pCreature, pCorpse->getX(), pCorpse->getY(), 2)		|| !pCorpse->isShrine())	{		GCCannotAdd _GCCannotAdd;		_GCCannotAdd.setObjectID(pPacket->getObjectID());		pPlayer->sendPacket(&_GCCannotAdd);		//cout << "return: not in 2 tile or not shrine" << endl;		return;	}	if (g_pShrineInfoManager->putBloodBible( pPlayerCreature, pItem, pCorpse ))	{		// putBloodBible 救俊辑 贸府茄促.	}	#endif	__END_CATCH}void CGRelicToObjectHandler::executeCastleSymbol(CGRelicToObject* pPacket , Player* pPlayer)	 throw (Error){	__BEGIN_TRY#ifdef __GAME_SERVER__	GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);	Creature*   pCreature 	= pGamePlayer->getCreature();	Zone*	 	pZone		= pCreature->getZone();	Assert(pZone!=NULL);	// 己拱 焊包措俊 捞固 笛 促 乐绰 版快	// 己拱 焊包措俊 Slayer己拱捞 乐绊 pItem捞 Slayer己拱牢 版快	PlayerCreature* pPlayerCreature = dynamic_cast<PlayerCreature*>(pCreature);	// 泅犁 甸绊 乐绰 酒捞袍 == Relic ?	InventorySlot* 	pExtraInventorySlot = pPlayerCreature->getExtraInventorySlot();	Item*   		pItem   			= pExtraInventorySlot->getItem();	Item* pTableItem = pZone->getItem( pPacket->getObjectID() );	// 弊繁 item捞 绝芭唱	// 矫眉啊 酒聪芭唱	// Monster矫眉啊 酒聪芭唱	// ShrineGuard档 ShrineHoly档 酒聪搁.. 己窜捞 酒聪瘤.	if (pTableItem==NULL 		|| pTableItem->getItemClass()!=Item::ITEM_CLASS_CORPSE		|| pTableItem->getItemType()!=MONSTER_CORPSE		|| !pTableItem->isFlag(Effect::EFFECT_CLASS_CASTLE_SHRINE_GUARD) &&			!pTableItem->isFlag(Effect::EFFECT_CLASS_CASTLE_SHRINE_HOLY))	{		GCCannotAdd _GCCannotAdd;		_GCCannotAdd.setObjectID(pPacket->getObjectID());		pPlayer->sendPacket(&_GCCannotAdd);		//cout << "return: not Shrine" << endl;		return;	}	// 己窜	MonsterCorpse* pCorpse = dynamic_cast<MonsterCorpse*>(pTableItem);	Assert(pCorpse!=NULL);	// 2鸥老 救俊 乐瘤 臼芭唱	// shrine栏肺 汲沥捞 救登绢 乐栏搁	if (!verifyDistance(pCreature, pCorpse->getX(), pCorpse->getY(), 2)		|| !pCorpse->isShrine())	{		GCCannotAdd _GCCannotAdd;		_GCCannotAdd.setObjectID(pPacket->getObjectID());		pPlayer->sendPacket(&_GCCannotAdd);		//cout << "return: not in 2 tile or not shrine" << endl;		return;	}	if (g_pCastleShrineInfoManager->putCastleSymbol( pPlayerCreature, pItem, pCorpse ))	{		// putCastleSymbol 救俊辑 贸府茄促.	}	#endif	__END_CATCH}	void CGRelicToObjectHandler::executeFlag(CGRelicToObject* pPacket , Player* pPlayer)	 throw (Error){	__BEGIN_TRY#ifdef __GAME_SERVER__	if ( !g_pFlagManager->hasFlagWar() ) return;	GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);	Creature*   pCreature 	= pGamePlayer->getCreature();	Zone*	 	pZone		= pCreature->getZone();	Assert(pZone!=NULL);	// 己拱 焊包措俊 捞固 笛 促 乐绰 版快	// 己拱 焊包措俊 Slayer己拱捞 乐绊 pItem捞 Slayer己拱牢 版快	PlayerCreature* pPlayerCreature = dynamic_cast<PlayerCreature*>(pCreature);	// 泅犁 甸绊 乐绰 酒捞袍 == Flag ?	InventorySlot* 	pExtraInventorySlot = pPlayerCreature->getExtraInventorySlot();	Item*   		pItem   			= pExtraInventorySlot->getItem();	Item* pTableItem = pZone->getItem( pPacket->getObjectID() );	// 弊繁 item捞 绝芭唱	// 矫眉啊 酒聪芭唱	// Monster矫眉啊 酒聪芭唱	// 标措啊 酒聪搁	if (pTableItem==NULL 		|| pTableItem->getItemClass()!=Item::ITEM_CLASS_CORPSE		|| pTableItem->getItemType()!=MONSTER_CORPSE		|| !g_pFlagManager->isFlagPole( dynamic_cast<MonsterCorpse*>(pTableItem) ) )	{		GCCannotAdd _GCCannotAdd;		_GCCannotAdd.setObjectID(pPacket->getObjectID());		pPlayer->sendPacket(&_GCCannotAdd);		//cout << "return: not Shrine" << endl;		return;	}	// 己窜	MonsterCorpse* pCorpse = dynamic_cast<MonsterCorpse*>(pTableItem);	Assert(pCorpse!=NULL);	// 2鸥老 救俊 乐瘤 臼芭唱	// shrine栏肺 汲沥捞 救登绢 乐栏搁	if (!verifyDistance(pCreature, pCorpse->getX(), pCorpse->getY(), 2)		|| !pCorpse->isShrine())	{		GCCannotAdd _GCCannotAdd;		_GCCannotAdd.setObjectID(pPacket->getObjectID());		pPlayer->sendPacket(&_GCCannotAdd);		//cout << "return: not in 2 tile or not shrine" << endl;		return;	}	if (g_pFlagManager->putFlag( pPlayerCreature, pItem, pCorpse ))	{		// putCastleSymbol 救俊辑 贸府茄促.		//cout << "标惯 踩疽瘤氛~" << endl;	}		else	{		GCCannotAdd _GCCannotAdd;		_GCCannotAdd.setObjectID(pPacket->getObjectID());		pPlayer->sendPacket(&_GCCannotAdd);		//cout << "return: not in 2 tile or not shrine" << endl;		return;	}#endif	__END_CATCH}void CGRelicToObjectHandler::executeSweeper(CGRelicToObject* pPacket , Player* pPlayer)	 throw (Error){	__BEGIN_TRY#ifdef __GAME_SERVER__	GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);	Creature*   pCreature 	= pGamePlayer->getCreature();	Zone*	 	pZone		= pCreature->getZone();	Assert(pZone!=NULL);	LevelWarManager* pLevelWarManager = pZone->getLevelWarManager();	Assert(pLevelWarManager!=NULL);	if ( !pLevelWarManager->hasWar() ) return;	PlayerCreature* pPlayerCreature = dynamic_cast<PlayerCreature*>(pCreature);	InventorySlot* 	pExtraInventorySlot = pPlayerCreature->getExtraInventorySlot();	Item*   		pItem   			= pExtraInventorySlot->getItem();	Item* pTableItem = pZone->getItem( pPacket->getObjectID() );	const SweeperInfo* pSweeperInfo = dynamic_cast<SweeperInfo*>(g_pSweeperInfoManager->getItemInfo(pItem->getItemType()));	// 弊繁 item捞 绝芭唱	// 矫眉啊 酒聪芭唱	// Monster矫眉啊 酒聪芭唱	// 标措啊 酒聪搁	if (pTableItem==NULL 		|| pTableItem->getItemClass()!=Item::ITEM_CLASS_CORPSE		|| pTableItem->getItemType()!=MONSTER_CORPSE		|| !pLevelWarManager->isSafe( dynamic_cast<MonsterCorpse*>(pTableItem) ) )	{		GCCannotAdd _GCCannotAdd;		_GCCannotAdd.setObjectID(pPacket->getObjectID());		pPlayer->sendPacket(&_GCCannotAdd);		//cout << "return: not Shrine" << endl;		return;	}	// 己窜	MonsterCorpse* pCorpse = dynamic_cast<MonsterCorpse*>(pTableItem);	Assert(pCorpse!=NULL);	// 2鸥老 救俊 乐瘤 臼芭唱	// shrine栏肺 汲沥捞 救登绢 乐栏搁	if (!verifyDistance(pCreature, pCorpse->getX(), pCorpse->getY(), 2))	{		GCCannotAdd _GCCannotAdd;		_GCCannotAdd.setObjectID(pPacket->getObjectID());		pPlayer->sendPacket(&_GCCannotAdd);		//cout << "return: not in 2 tile or not shrine" << endl;		return;	}	if (pLevelWarManager->putSweeper( pPlayerCreature, pItem, pCorpse ))	{		// Sweeper 甫 踩疽栏搁 啊瘤绊 乐带 扒 瘤况霖促		pPlayerCreature->deleteItemFromExtraInventorySlot();		GCDeleteInventoryItem gcDeleteInventoryItem;		gcDeleteInventoryItem.setObjectID( pItem->getObjectID() );		pPlayerCreature->getPlayer()->sendPacket( &gcDeleteInventoryItem );		Effect* pEffect = pPlayerCreature->findEffect( Effect::EFFECT_CLASS_HAS_SWEEPER );		if (pEffect != NULL)		{			pEffect->setDeadline(0);		}		// 踩疽阑 锭 粮俊 矫胶袍 皋技瘤甫 谎妨霖促		char race[15];		if ( pCreature->isSlayer() )		{			sprintf( race, g_pStringPool->c_str( STRID_SLAYER ) );		}		else if ( pCreature->isVampire() )		{			sprintf( race, g_pStringPool->c_str( STRID_VAMPIRE ) );		}		else if ( pCreature->isOusters() )		{			sprintf( race, g_pStringPool->c_str( STRID_OUSTERS ) );		}		else		{			Assert(false);		}		char msg[100];		sprintf( msg , g_pStringPool->c_str( STRID_PUT_SWEEPER ) ,							pCreature->getName().c_str(),							race,							pSweeperInfo->getName().c_str()							);		GCSystemMessage gcSystemMessage;		gcSystemMessage.setMessage( msg );		pZone->broadcastPacket( &gcSystemMessage );	}		else	{		GCCannotAdd _GCCannotAdd;		_GCCannotAdd.setObjectID(pPacket->getObjectID());		pPlayer->sendPacket(&_GCCannotAdd);		//cout << "return: not in 2 tile or not shrine" << endl;		return;	}#endif	__END_CATCH}

⌨️ 快捷键说明

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