cgtradefinishhandler.cpp

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

CPP
575
字号
	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;	Vampire*      pSender         = dynamic_cast<Vampire*>(pPC);	Vampire*      pReceiver       = dynamic_cast<Vampire*>(pTargetPC);	TradeManager* pTradeManager = pZone->getTradeManager();	Assert(pTradeManager != NULL);	TradeInfo*    pInfo1          = pTradeManager->getTradeInfo(pSender->getName());	TradeInfo*    pInfo2          = pTradeManager->getTradeInfo(pReceiver->getName());	Player*       pTargetPlayer   = pTargetPC->getPlayer();	GCTradeFinish gcTradeFinish;	// 泅犁 矫埃阑 掘绢柯促.	Timeval currentTime;	getCurrentTime(currentTime);	// 背券阑 铰倡窍绰 内靛促. 	if (CODE == CG_TRADE_FINISH_ACCEPT)	{		// OK啊 朝酒棵 矫埃捞 酒聪扼搁 俊矾促. 		if (pInfo1->isValidOKTime(currentTime) == false)		{			pTradeManager->cancelTrade(pPC);			executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_UNKNOWN);			return;		}		// 背券阑 铰倡沁促绰 巴阑 惑措规俊霸 舅妨霖促.		gcTradeFinish.setTargetObjectID(pSender->getObjectID());		gcTradeFinish.setCode(GC_TRADE_FINISH_ACCEPT);		pTargetPlayer->sendPacket(&gcTradeFinish);		// 背券 惑怕甫 函券茄促.		pInfo1->setStatus(TRADE_FINISH);		// 惑措规档 背券阑 倾遏窍绊 乐促搁, 角力肺 背券阑 窍档废 茄促.		if (pInfo2->getStatus() == TRADE_FINISH)		{			// 犬角洒 背券阑 且 荐 乐促搁 背券阑 茄促.			//cout << "CGTradeFinish [" << pReceiver->getName() << "]狼 惑怕档 TRADE_FINISH捞骨肺, 背券阑 荐青茄促." << endl;			if (pTradeManager->canTrade(pSender, pReceiver) == 1)			{				// 剧 螟俊 背券阑 荐青窍扼绰 菩哦阑 朝妨霖促.				gcTradeFinish.setTargetObjectID(pSender->getObjectID());				gcTradeFinish.setCode(GC_TRADE_FINISH_EXECUTE);				pTargetPlayer->sendPacket(&gcTradeFinish);				gcTradeFinish.setTargetObjectID(pReceiver->getObjectID());				gcTradeFinish.setCode(GC_TRADE_FINISH_EXECUTE);				pPlayer->sendPacket(&gcTradeFinish);				// 角力肺 背券阑 荐青茄促.				pTradeManager->processTrade(pSender, pReceiver);			}			else if (pTradeManager->canTrade(pSender, pReceiver) == 2)			{				pTradeManager->cancelTrade(pPC);				executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_EVENT_GIFT_BOX);				return;			}			else			{				pTradeManager->cancelTrade(pPC);				executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_NOT_ENOUGH_SPACE);				return;			}		}	}	// 背券阑 芭何窍绰 内靛促.	else if (CODE == CG_TRADE_FINISH_REJECT)	{		// 泅犁 OK甫 穿弗 惑怕扼搁, 努扼捞攫飘俊霸 牢刘 菩哦阑 焊郴拎具 茄促.		if (pInfo1->getStatus() == TRADE_FINISH)		{			// 牢刘 菩哦阑 朝妨霖促.			GCTradeVerify gcTradeVerify;			gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_FINISH_REJECT);			pPlayer->sendPacket(&gcTradeVerify);		}		// 背券阑 秒家矫挪促.		pTradeManager->cancelTrade(pSender, pReceiver);		// 背券捞 秒家登菌促绰 巴阑 惑措规俊霸 舅妨霖促.		gcTradeFinish.setTargetObjectID(pSender->getObjectID());		gcTradeFinish.setCode(GC_TRADE_FINISH_REJECT);		pTargetPlayer->sendPacket(&gcTradeFinish);	}	// 背券阑 犁绊妨窍绰 内靛促.	else if (CODE == CG_TRADE_FINISH_RECONSIDER)	{		// 泅犁 OK甫 穿弗 惑怕扼搁, 努扼捞攫飘俊霸 牢刘 菩哦阑 焊郴拎具 茄促.		if (pInfo1->getStatus() == TRADE_FINISH)		{			// 牢刘 菩哦阑 朝妨霖促.			GCTradeVerify gcTradeVerify;			gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_FINISH_RECONSIDER);			pPlayer->sendPacket(&gcTradeVerify);		}		// 背券 惑怕甫 函券茄促.		pInfo1->setStatus(TRADE_TRADING);		// OK甫 喘范促啊 cancel阑 穿福搁, 促澜 4檬 悼救篮 OK啊 促矫 朝酒客辑绰		// 救 等促. 弊矾骨肺 咯扁辑 矫埃阑 技泼秦 霖促.		pInfo1->setNextTime(currentTime);		// 背券捞 犁绊妨登菌促绰 巴阑 惑措规俊霸 舅妨霖促.		gcTradeFinish.setTargetObjectID(pSender->getObjectID());		gcTradeFinish.setCode(GC_TRADE_FINISH_RECONSIDER);		pTargetPlayer->sendPacket(&gcTradeFinish);	}	// 舅荐 绝绰 内靛促. 荤挥窍霸 漏扼霖促.	else throw ProtocolException("CGTradeFinish::executeVampire() : 舅 荐 绝绰 内靛");#endif	__END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGTradeFinishHandler::executeOusters (CGTradeFinish* pPacket , Player* pPlayer)	 throw (ProtocolException , Error){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__	// 惑困 窃荐俊辑 俊矾甫 八荤沁扁 锭巩俊,	// 咯扁辑绰 器牢磐啊 澄牢瘤甫 八荤窍瘤 臼绰促.	ObjectID_t    TargetOID       = pPacket->getTargetObjectID();	BYTE          CODE            = pPacket->getCode();	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);	Ousters*      pReceiver       = dynamic_cast<Ousters*>(pTargetPC);	TradeManager* pTradeManager = pZone->getTradeManager();	Assert(pTradeManager != NULL);	TradeInfo*    pInfo1          = pTradeManager->getTradeInfo(pSender->getName());	TradeInfo*    pInfo2          = pTradeManager->getTradeInfo(pReceiver->getName());	Player*       pTargetPlayer   = pTargetPC->getPlayer();	GCTradeFinish gcTradeFinish;	// 泅犁 矫埃阑 掘绢柯促.	Timeval currentTime;	getCurrentTime(currentTime);	// 背券阑 铰倡窍绰 内靛促. 	if (CODE == CG_TRADE_FINISH_ACCEPT)	{		// OK啊 朝酒棵 矫埃捞 酒聪扼搁 俊矾促. 		if (pInfo1->isValidOKTime(currentTime) == false)		{			pTradeManager->cancelTrade(pPC);			executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_UNKNOWN);			return;		}		// 背券阑 铰倡沁促绰 巴阑 惑措规俊霸 舅妨霖促.		gcTradeFinish.setTargetObjectID(pSender->getObjectID());		gcTradeFinish.setCode(GC_TRADE_FINISH_ACCEPT);		pTargetPlayer->sendPacket(&gcTradeFinish);		// 背券 惑怕甫 函券茄促.		pInfo1->setStatus(TRADE_FINISH);		// 惑措规档 背券阑 倾遏窍绊 乐促搁, 角力肺 背券阑 窍档废 茄促.		if (pInfo2->getStatus() == TRADE_FINISH)		{			// 犬角洒 背券阑 且 荐 乐促搁 背券阑 茄促.			//cout << "CGTradeFinish [" << pReceiver->getName() << "]狼 惑怕档 TRADE_FINISH捞骨肺, 背券阑 荐青茄促." << endl;			if (pTradeManager->canTrade(pSender, pReceiver) == 1)			{				// 剧 螟俊 背券阑 荐青窍扼绰 菩哦阑 朝妨霖促.				gcTradeFinish.setTargetObjectID(pSender->getObjectID());				gcTradeFinish.setCode(GC_TRADE_FINISH_EXECUTE);				pTargetPlayer->sendPacket(&gcTradeFinish);				gcTradeFinish.setTargetObjectID(pReceiver->getObjectID());				gcTradeFinish.setCode(GC_TRADE_FINISH_EXECUTE);				pPlayer->sendPacket(&gcTradeFinish);				// 角力肺 背券阑 荐青茄促.				pTradeManager->processTrade(pSender, pReceiver);			}			else if (pTradeManager->canTrade(pSender, pReceiver) == 2)			{				pTradeManager->cancelTrade(pPC);				executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_EVENT_GIFT_BOX);				return;			}			else			{				pTradeManager->cancelTrade(pPC);				executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_NOT_ENOUGH_SPACE);				return;			}		}	}	// 背券阑 芭何窍绰 内靛促.	else if (CODE == CG_TRADE_FINISH_REJECT)	{		// 泅犁 OK甫 穿弗 惑怕扼搁, 努扼捞攫飘俊霸 牢刘 菩哦阑 焊郴拎具 茄促.		if (pInfo1->getStatus() == TRADE_FINISH)		{			// 牢刘 菩哦阑 朝妨霖促.			GCTradeVerify gcTradeVerify;			gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_FINISH_REJECT);			pPlayer->sendPacket(&gcTradeVerify);		}		// 背券阑 秒家矫挪促.		pTradeManager->cancelTrade(pSender, pReceiver);		// 背券捞 秒家登菌促绰 巴阑 惑措规俊霸 舅妨霖促.		gcTradeFinish.setTargetObjectID(pSender->getObjectID());		gcTradeFinish.setCode(GC_TRADE_FINISH_REJECT);		pTargetPlayer->sendPacket(&gcTradeFinish);	}	// 背券阑 犁绊妨窍绰 内靛促.	else if (CODE == CG_TRADE_FINISH_RECONSIDER)	{		// 泅犁 OK甫 穿弗 惑怕扼搁, 努扼捞攫飘俊霸 牢刘 菩哦阑 焊郴拎具 茄促.		if (pInfo1->getStatus() == TRADE_FINISH)		{			// 牢刘 菩哦阑 朝妨霖促.			GCTradeVerify gcTradeVerify;			gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_FINISH_RECONSIDER);			pPlayer->sendPacket(&gcTradeVerify);		}		// 背券 惑怕甫 函券茄促.		pInfo1->setStatus(TRADE_TRADING);		// OK甫 喘范促啊 cancel阑 穿福搁, 促澜 4檬 悼救篮 OK啊 促矫 朝酒客辑绰		// 救 等促. 弊矾骨肺 咯扁辑 矫埃阑 技泼秦 霖促.		pInfo1->setNextTime(currentTime);		// 背券捞 犁绊妨登菌促绰 巴阑 惑措规俊霸 舅妨霖促.		gcTradeFinish.setTargetObjectID(pSender->getObjectID());		gcTradeFinish.setCode(GC_TRADE_FINISH_RECONSIDER);		pTargetPlayer->sendPacket(&gcTradeFinish);	}	// 舅荐 绝绰 内靛促. 荤挥窍霸 漏扼霖促.	else throw ProtocolException("CGTradeFinish::executeOusters() : 舅 荐 绝绰 内靛");#endif	__END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGTradeFinishHandler::executeError(CGTradeFinish* 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 + -
显示快捷键?