cgtradeadditemhandler.cpp

来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 791 行 · 第 1/2 页

CPP
791
字号
				// 利祸 急拱 惑磊甫 啊瘤绊 乐瘤 臼促搁, 傲 逞绢埃促.				GCTradeVerify gcTradeVerify;				gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_OK);				pPlayer->sendPacket(&gcTradeVerify);			}		}		else if (pItem->getItemType() == 1)		{			// 利祸 急拱 惑磊绰 背券 前格捞 瞪 荐 绝促.			GCTradeVerify gcTradeVerify;			gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_FAIL);			pPlayer->sendPacket(&gcTradeVerify);			return;		}	}//#endif//	TradeInfo* pInfo1 = pTradeManager->getTradeInfo(pSender->getName());	TradeInfo* pInfo2 = pTradeManager->getTradeInfo(pTargetPC->getName());	list<Item*>      tradeList1  = pInfo1->getItemList();	if (pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pItem->getItemType() > 1 && pItem->getItemType() < 6)	{		for (list<Item*>::iterator itr = tradeList1.begin(); itr != tradeList1.end(); itr++)		{			Item* pTradeItem = (*itr);			if ( pTradeItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pTradeItem->getItemType() > 1 && pTradeItem->getItemType() < 6)				{				GCTradeVerify gcTradeVerify;				gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_FAIL);				pPlayer->sendPacket(&gcTradeVerify);				return;			}		}		GCTradeVerify gcTradeVerify;		gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_OK);		pPlayer->sendPacket(&gcTradeVerify);	}	else if (pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pItem->getItemType() >= 6)	{		GCTradeVerify gcTradeVerify;		gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_OK);		pPlayer->sendPacket(&gcTradeVerify);	}	// TradeManager俊 背券 措惑栏肺辑 酒捞袍阑 歹茄促.	//Assert(pInfo1->addItem(pItem));	pInfo1->addItem(pItem);	// 泅犁 OK甫 穿弗 惑怕扼搁, 努扼捞攫飘俊霸 牢刘 菩哦阑 焊郴拎具 茄促.	if (pInfo1->getStatus() == TRADE_FINISH)	{        //cout << "CGTradeRemoveItem [" << pSender->getName() << "]狼 惑怕啊 TRADE_FINISH捞骨肺, 牢刘 菩哦阑 焊郴霖促." << endl;		// 牢刘 菩哦阑 朝妨霖促.		GCTradeVerify gcTradeVerify;		gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_WHEN_ACCEPT);		pPlayer->sendPacket(&gcTradeVerify);	}    else    {		//cout << "CGTradeRemoveItem [" << pSender->getName() << "]狼 惑怕啊 TRADE_FINISH啊 酒聪骨肺, 牢刘 菩哦 朝府瘤 臼绰促." << endl;    }	// 酒捞袍阑 歹窍芭唱 滑 版快, 惑怕啊 TRADE_FINISH扼搁 	// TRADE_TRADING栏肺 官层拎具 茄促.	pInfo1->setStatus(TRADE_TRADING);	pInfo2->setStatus(TRADE_TRADING);	// 惑措规俊霸 朝妨临 酒捞袍 沥焊甫 备己茄促.	GCTradeAddItem gcTradeAddItem;	makeGCTradeAddItemPacket(&gcTradeAddItem, pSender->getObjectID(), pItem, X, Y);	// 惑措规俊霸 背券且 酒捞袍 沥焊甫 朝妨霖促.	Player* pTargetPlayer = pTargetPC->getPlayer();	pTargetPlayer->sendPacket(&gcTradeAddItem);#endif	__END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGTradeAddItemHandler::executeOusters (CGTradeAddItem* pPacket , Player* pPlayer)	 throw (ProtocolException , Error){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__	// 惑困 窃荐俊辑 俊矾甫 八荤沁扁 锭巩俊,	// 咯扁辑绰 器牢磐啊 澄牢瘤甫 八荤窍瘤 臼绰促.	ObjectID_t   TargetOID   = pPacket->getTargetObjectID();	ObjectID_t   ItemOID     = pPacket->getItemObjectID();	GamePlayer*  pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);	Creature*    pPC         = pGamePlayer->getCreature();	Zone*        pZone       = pPC->getZone();	Creature*    pTargetPC   = pZone->getCreature(TargetOID);	// NoSuch力芭. by sigi. 2002.5.2	if (pTargetPC==NULL) return;	Ousters*     pSender     = dynamic_cast<Ousters*>(pPC);	TradeManager* pTradeManager = pZone->getTradeManager();	Assert(pTradeManager != NULL);	// 背券 措惑俊 眠啊且 酒捞袍狼 器牢磐甫 掘绢辰促.	CoordInven_t X, Y;	Inventory*   pInventory = pSender->getInventory();	Item*        pItem      = pInventory->findItemOID(ItemOID, X, Y);	// 眠啊且 酒捞袍捞 绝促搁 寸楷洒 歹 捞惑 贸府啊 阂啊瓷	// Relic篮 背券且 荐 绝促.	if (pItem == NULL	|| !canTrade( pItem ) )	{		pTradeManager->cancelTrade(pPC);		executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_ADD_ITEM);		return;	}////#ifdef __XMAS_EVENT_CODE__	// 踌祸 急拱 惑磊牢 版快俊绰, 惑措规俊霸 利祸 急拱 惑磊啊 绝绰瘤 八荤茄 饶, 	// 牢刘 菩哦阑 焊郴拎具 茄促.	if (pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX)	{		PlayerCreature* pReceiver = dynamic_cast<PlayerCreature*>(pTargetPC);		Item* pExtraSlotItem = pReceiver->getExtraInventorySlotItem();		if (pItem->getItemType() == 0)		{			Inventory* pTargetInventory = pReceiver->getInventory();			if (pTargetInventory->hasRedGiftBox())			{				// 利祸 急拱 惑磊甫 啊瘤绊 乐促搁 歹且 荐 绝促. 府畔矫挪促.				GCTradeVerify gcTradeVerify;				gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_FAIL);				pPlayer->sendPacket(&gcTradeVerify);				return;			}			else if (pExtraSlotItem != NULL)			{				if (pExtraSlotItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pExtraSlotItem->getItemType() == 1)				{					GCTradeVerify gcTradeVerify;					gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_FAIL);					pPlayer->sendPacket(&gcTradeVerify);					return;				}			}			else			{				// 利祸 急拱 惑磊甫 啊瘤绊 乐瘤 臼促搁, 傲 逞绢埃促.				GCTradeVerify gcTradeVerify;				gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_OK);				pPlayer->sendPacket(&gcTradeVerify);			}		}		else if (pItem->getItemType() == 1)		{			// 利祸 急拱 惑磊绰 背券 前格捞 瞪 荐 绝促.			GCTradeVerify gcTradeVerify;			gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_FAIL);			pPlayer->sendPacket(&gcTradeVerify);			return;		}	}//#endif//	TradeInfo* pInfo1 = pTradeManager->getTradeInfo(pSender->getName());	TradeInfo* pInfo2 = pTradeManager->getTradeInfo(pTargetPC->getName());	list<Item*>      tradeList1  = pInfo1->getItemList();	if (pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pItem->getItemType() > 1 && pItem->getItemType() < 6)	{		for (list<Item*>::iterator itr = tradeList1.begin(); itr != tradeList1.end(); itr++)		{			Item* pTradeItem = (*itr);			if ( pTradeItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pTradeItem->getItemType() > 1 && pTradeItem->getItemType() < 6)				{				GCTradeVerify gcTradeVerify;				gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_FAIL);				pPlayer->sendPacket(&gcTradeVerify);				return;			}		}		GCTradeVerify gcTradeVerify;		gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_OK);		pPlayer->sendPacket(&gcTradeVerify);	}	else if (pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pItem->getItemType() >= 6)	{		GCTradeVerify gcTradeVerify;		gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_OK);		pPlayer->sendPacket(&gcTradeVerify);	}	// TradeManager俊 背券 措惑栏肺辑 酒捞袍阑 歹茄促.	//Assert(pInfo1->addItem(pItem));	pInfo1->addItem(pItem);	// 泅犁 OK甫 穿弗 惑怕扼搁, 努扼捞攫飘俊霸 牢刘 菩哦阑 焊郴拎具 茄促.	if (pInfo1->getStatus() == TRADE_FINISH)	{        //cout << "CGTradeRemoveItem [" << pSender->getName() << "]狼 惑怕啊 TRADE_FINISH捞骨肺, 牢刘 菩哦阑 焊郴霖促." << endl;		// 牢刘 菩哦阑 朝妨霖促.		GCTradeVerify gcTradeVerify;		gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_WHEN_ACCEPT);		pPlayer->sendPacket(&gcTradeVerify);	}    else    {		//cout << "CGTradeRemoveItem [" << pSender->getName() << "]狼 惑怕啊 TRADE_FINISH啊 酒聪骨肺, 牢刘 菩哦 朝府瘤 臼绰促." << endl;    }	// 酒捞袍阑 歹窍芭唱 滑 版快, 惑怕啊 TRADE_FINISH扼搁 	// TRADE_TRADING栏肺 官层拎具 茄促.	pInfo1->setStatus(TRADE_TRADING);	pInfo2->setStatus(TRADE_TRADING);	// 惑措规俊霸 朝妨临 酒捞袍 沥焊甫 备己茄促.	GCTradeAddItem gcTradeAddItem;	makeGCTradeAddItemPacket(&gcTradeAddItem, pSender->getObjectID(), pItem, X, Y);	// 惑措规俊霸 背券且 酒捞袍 沥焊甫 朝妨霖促.	Player* pTargetPlayer = pTargetPC->getPlayer();	pTargetPlayer->sendPacket(&gcTradeAddItem);#endif	__END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGTradeAddItemHandler::makeGCTradeAddItemPacket (GCTradeAddItem* pPacket, ObjectID_t Sender, Item* pItem, CoordInven_t X, CoordInven_t Y) 	throw (){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__		// 惑措规俊霸 朝妨临 酒捞袍 沥焊甫 备己茄促.	pPacket->setTargetObjectID(Sender);	pPacket->setItemObjectID(pItem->getObjectID());	pPacket->setX(X);	pPacket->setY(Y);	pPacket->setItemClass(pItem->getItemClass());	pPacket->setItemType(pItem->getItemType());	pPacket->setOptionType(pItem->getOptionTypeList());	pPacket->setDurability(pItem->getDurability());	pPacket->setItemNum(pItem->getNum());	pPacket->setSilver(pItem->getSilver());	pPacket->setGrade(pItem->getGrade());	pPacket->setEnchantLevel(pItem->getEnchantLevel());	pPacket->clearList();	// 绢恫 酒捞袍甸阑 沥焊甫 焊郴林扁 傈俊 眠啊利栏肺 啊傍阑 秦具茄促.	Item::ItemClass IClass = pItem->getItemClass();	if (IClass == Item::ITEM_CLASS_PET_ITEM)	{		PetItem* pPetItem = dynamic_cast<PetItem*>(pItem);		if ( pPetItem->getPetInfo() != NULL )		{			list<OptionType_t> olist;			if ( pPetItem->getPetInfo()->getPetOption() != 0 )				olist.push_back(pPetItem->getPetInfo()->getPetOption());			pPacket->setOptionType( olist );			pPacket->setDurability( pPetItem->getPetInfo()->getPetHP() );			pPacket->setEnchantLevel( pPetItem->getPetInfo()->getPetAttr() );			pPacket->setSilver( pPetItem->getPetInfo()->getPetAttrLevel() );			pPacket->setGrade( (pPacket->getDurability() == 0 )?(pPetItem->getPetInfo()->getLastFeedTime().daysTo( VSDateTime::currentDateTime() )):(-1) );			pPacket->setItemNum( pPetItem->getPetInfo()->getPetLevel() );//			pPacket->setMainColor( 0xffff );		}	}	// 醚 辆幅绰 酒捞袍 箭磊 措脚俊 醚舅狼 箭磊甫 持绢霖促.	else if (IClass == Item::ITEM_CLASS_AR)	{		AR* pAR = dynamic_cast<AR*>(pItem);		pPacket->setItemNum(pAR->getBulletCount());	}	else if (IClass == Item::ITEM_CLASS_SR)	{		SR* pSR = dynamic_cast<SR*>(pItem);		pPacket->setItemNum(pSR->getBulletCount());	}	else if (IClass == Item::ITEM_CLASS_SG)	{		SG* pSG = dynamic_cast<SG*>(pItem);		pPacket->setItemNum(pSG->getBulletCount());	}	else if (IClass == Item::ITEM_CLASS_SMG)	{		SMG* pSMG = dynamic_cast<SMG*>(pItem);		pPacket->setItemNum(pSMG->getBulletCount());	}	// 骇飘狼 版快俊绰 骇飘 救俊 器窃登绢 乐绰 酒捞袍 沥焊甫	// 鞍捞 朝妨拎具 茄促.	else if (IClass == Item::ITEM_CLASS_BELT)	{		Belt*      pBelt          = dynamic_cast<Belt*>(pItem);		Inventory* pBeltInventory = pBelt->getInventory();		BYTE       SubItemCount   = 0;		for (int i=0; i<pBelt->getPocketCount(); i++)		{			Item* pBeltItem = pBeltInventory->getItem(i, 0);			if (pBeltItem != NULL)			{				SubItemInfo* pInfo = new SubItemInfo();				pInfo->setObjectID(pBeltItem->getObjectID());				pInfo->setItemClass(pBeltItem->getItemClass());				pInfo->setItemType(pBeltItem->getItemType());				pInfo->setItemNum(pBeltItem->getNum());				pInfo->setSlotID(i);				pPacket->addListElement(pInfo);				SubItemCount += 1;			}		}		pPacket->setListNum(SubItemCount);	}	// 鞠胶龟靛狼 版快俊绰 救俊 器窃登绢 乐绰 酒捞袍 沥焊甫	// 鞍捞 朝妨拎具 茄促.	else if (IClass == Item::ITEM_CLASS_OUSTERS_ARMSBAND)	{		OustersArmsband* pOustersArmsband = dynamic_cast<OustersArmsband*>(pItem);		Inventory* pOustersArmsbandInventory = pOustersArmsband->getInventory();		BYTE SubItemCount = 0;		for (int i=0; i<pOustersArmsband->getPocketCount(); i++)		{			Item* pOustersArmsbandItem = pOustersArmsbandInventory->getItem(i, 0);			if (pOustersArmsbandItem != NULL)			{				SubItemInfo* pInfo = new SubItemInfo();				pInfo->setObjectID(pOustersArmsbandItem->getObjectID());				pInfo->setItemClass(pOustersArmsbandItem->getItemClass());				pInfo->setItemType(pOustersArmsbandItem->getItemType());				pInfo->setItemNum(pOustersArmsbandItem->getNum());				pInfo->setSlotID(i);				pPacket->addListElement(pInfo);				SubItemCount += 1;			}		}		pPacket->setListNum(SubItemCount);	}#endif	__END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGTradeAddItemHandler::executeError(CGTradeAddItem* pPacket, Player* pPlayer, BYTE ErrorCode)	 throw (ProtocolException , Error){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__		GCTradeError gcTradeError;	gcTradeError.setTargetObjectID(pPacket->getTargetObjectID());	gcTradeError.setCode(ErrorCode);	pPlayer->sendPacket(&gcTradeError);#endif	__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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