cgtrademoneyhandler.cpp

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

CPP
579
字号
	Vampire*      pSender         = dynamic_cast<Vampire*>(pPC);	Vampire*      pReceiver       = dynamic_cast<Vampire*>(pTargetPC);	Player*       pTargetPlayer   = pTargetPC->getPlayer();	Gold_t        finalAmount     = Amount;	Gold_t        margin          = 0;	GCTradeMoney  gcTradeMoney;	GCTradeVerify gcTradeVerify;	TradeManager* pTradeManager = pZone->getTradeManager();	Assert(pTradeManager != NULL);	// 背券 惑怕啊 嘎绰瘤 眉农甫 秦毫具茄促.	TradeInfo* pInfo1 = pTradeManager->getTradeInfo(pSender->getName());	TradeInfo* pInfo2 = pTradeManager->getTradeInfo(pReceiver->getName());	// 牢亥配府俊辑 捣阑 代绢, 背券芒俊促 歹茄促.	if (Code == CG_TRADE_MONEY_INCREASE)	{		// 背券芒俊促 歹且 咀荐焊促 腹篮 捣阑 啊瘤绊 乐绢具 茄促.		if (pSender->getGold() >= Amount)		{			// 捣阑 罐绰 率捞 钙胶甫 檬苞窍霸 等促搁, 老何父 持绢拎具 茄促.			// 泅犁 背券 抗沥牢 捣档 歹秦辑 拌魂. by sigi. 2003.1.8			Gold_t receiverGold = pReceiver->getGold() + pInfo1->getGold();			if (receiverGold + Amount > MAX_MONEY)			{				margin		= receiverGold + Amount - MAX_MONEY;				finalAmount = finalAmount - margin;			}			// 牢亥配府俊辑 捣阑 哗绊, 背券芒俊促 歹茄促.			pSender->setGold(pSender->getGold() - finalAmount);			pInfo1->setGold(pInfo1->getGold() + finalAmount);			// 泅犁 OK甫 穿弗 惑怕扼搁, 努扼捞攫飘俊霸 牢刘 菩哦阑 焊郴拎具 茄促.			if (pInfo1->getStatus() == TRADE_FINISH)			{				// 牢刘 菩哦阑 朝妨霖促.				gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_MONEY_INCREASE);				pPlayer->sendPacket(&gcTradeVerify);			}			// 酒捞袍阑 歹窍芭唱 滑 版快, 惑怕甫 函券秦拎具 茄促.			pInfo1->setStatus(TRADE_TRADING);			pInfo2->setStatus(TRADE_TRADING);			// 捣阑 棵赴 寸荤磊俊霸 角力肺 牢亥配府俊辑			// 狐柳 陛咀捞 倔付牢瘤 焊郴霖促.			gcTradeMoney.setTargetObjectID(TargetOID);			gcTradeMoney.setCode(GC_TRADE_MONEY_INCREASE_RESULT);			gcTradeMoney.setAmount(finalAmount);			pPlayer->sendPacket(&gcTradeMoney);			// 惑措规俊霸 官诧 沥焊甫 焊郴霖促.			gcTradeMoney.setTargetObjectID(pSender->getObjectID());			gcTradeMoney.setCode(GC_TRADE_MONEY_INCREASE);			gcTradeMoney.setAmount(finalAmount);			pTargetPlayer->sendPacket(&gcTradeMoney);		}		else 		{			pTradeManager->cancelTrade(pPC);			executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_INCREASE_MONEY);			return;		}	}	// 背券芒俊辑 捣阑 代绢, 牢亥配府俊促啊 歹茄促.	else if (Code == CG_TRADE_MONEY_DECREASE)	{		// 牢亥配府俊促 歹且 咀荐焊促 背券芒俊 乐绰 捣捞 腹酒具 茄促.		if (pInfo1->getGold() >= Amount)		{			// 捣捞 钙胶甫 檬苞窍霸 等促搁, 老何父 滑 荐 乐促.			Gold_t senderGold = pSender->getGold() + pInfo2->getGold();			if (senderGold + Amount > MAX_MONEY)			{				margin      = senderGold + Amount - MAX_MONEY;				finalAmount = finalAmount - margin;			}			// 牢亥配府俊促啊 捣阑 歹窍绊, 背券芒俊辑 捣阑 猾促.			pSender->setGold(pSender->getGold() + finalAmount);			pInfo1->setGold(pInfo1->getGold() - finalAmount);			// 泅犁 OK甫 穿弗 惑怕扼搁, 努扼捞攫飘俊霸 牢刘 菩哦阑 焊郴拎具 茄促.			if (pInfo1->getStatus() == TRADE_FINISH)			{				// 牢刘 菩哦阑 朝妨霖促.				gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_MONEY_DECREASE);				pPlayer->sendPacket(&gcTradeVerify);			}			// 酒捞袍阑 歹窍芭唱 滑 版快, 惑怕甫 函券秦拎具 茄促.			pInfo1->setStatus(TRADE_TRADING);			pInfo2->setStatus(TRADE_TRADING);			// 捣阑 棵赴 寸荤磊俊霸 角力肺 牢亥配府俊促 			// 歹茄 陛咀捞 倔付牢瘤 焊郴霖促.			gcTradeMoney.setTargetObjectID(TargetOID);			gcTradeMoney.setCode(GC_TRADE_MONEY_DECREASE_RESULT);			gcTradeMoney.setAmount(finalAmount);			pPlayer->sendPacket(&gcTradeMoney);			// 惑措规俊霸 官诧 沥焊甫 焊郴霖促.			gcTradeMoney.setTargetObjectID(pSender->getObjectID());			gcTradeMoney.setCode(GC_TRADE_MONEY_DECREASE);			gcTradeMoney.setAmount(finalAmount);			pTargetPlayer->sendPacket(&gcTradeMoney);		}		else		{			pTradeManager->cancelTrade(pPC);			executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_DECREASE_MONEY);			return;		}	}#endif	__END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGTradeMoneyHandler::executeOusters (CGTradeMoney* pPacket , Player* pPlayer)	 throw (ProtocolException , Error){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__	// 惑困 窃荐俊辑 八荤甫 沁扁 锭巩俊,	// 咯扁辑绰 器牢磐啊 澄牢瘤甫 八荤窍瘤 臼绰促.	ObjectID_t    TargetOID       = pPacket->getTargetObjectID();	Gold_t        Amount          = pPacket->getAmount();	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);	Player*       pTargetPlayer   = pTargetPC->getPlayer();	Gold_t        finalAmount     = Amount;	Gold_t        margin          = 0;	GCTradeMoney  gcTradeMoney;	GCTradeVerify gcTradeVerify;	TradeManager* pTradeManager = pZone->getTradeManager();	Assert(pTradeManager != NULL);	// 背券 惑怕啊 嘎绰瘤 眉农甫 秦毫具茄促.	TradeInfo* pInfo1 = pTradeManager->getTradeInfo(pSender->getName());	TradeInfo* pInfo2 = pTradeManager->getTradeInfo(pReceiver->getName());	// 牢亥配府俊辑 捣阑 代绢, 背券芒俊促 歹茄促.	if (Code == CG_TRADE_MONEY_INCREASE)	{		// 背券芒俊促 歹且 咀荐焊促 腹篮 捣阑 啊瘤绊 乐绢具 茄促.		if (pSender->getGold() >= Amount)		{			// 捣阑 罐绰 率捞 钙胶甫 檬苞窍霸 等促搁, 老何父 持绢拎具 茄促.			// 泅犁 背券 抗沥牢 捣档 歹秦辑 拌魂. by sigi. 2003.1.8			Gold_t receiverGold = pReceiver->getGold() + pInfo1->getGold();			if (receiverGold + Amount > MAX_MONEY)			{				margin		= receiverGold + Amount - MAX_MONEY;				finalAmount = finalAmount - margin;			}			// 牢亥配府俊辑 捣阑 哗绊, 背券芒俊促 歹茄促.			pSender->setGold(pSender->getGold() - finalAmount);			pInfo1->setGold(pInfo1->getGold() + finalAmount);			// 泅犁 OK甫 穿弗 惑怕扼搁, 努扼捞攫飘俊霸 牢刘 菩哦阑 焊郴拎具 茄促.			if (pInfo1->getStatus() == TRADE_FINISH)			{				// 牢刘 菩哦阑 朝妨霖促.				gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_MONEY_INCREASE);				pPlayer->sendPacket(&gcTradeVerify);			}			// 酒捞袍阑 歹窍芭唱 滑 版快, 惑怕甫 函券秦拎具 茄促.			pInfo1->setStatus(TRADE_TRADING);			pInfo2->setStatus(TRADE_TRADING);			// 捣阑 棵赴 寸荤磊俊霸 角力肺 牢亥配府俊辑			// 狐柳 陛咀捞 倔付牢瘤 焊郴霖促.			gcTradeMoney.setTargetObjectID(TargetOID);			gcTradeMoney.setCode(GC_TRADE_MONEY_INCREASE_RESULT);			gcTradeMoney.setAmount(finalAmount);			pPlayer->sendPacket(&gcTradeMoney);			// 惑措规俊霸 官诧 沥焊甫 焊郴霖促.			gcTradeMoney.setTargetObjectID(pSender->getObjectID());			gcTradeMoney.setCode(GC_TRADE_MONEY_INCREASE);			gcTradeMoney.setAmount(finalAmount);			pTargetPlayer->sendPacket(&gcTradeMoney);		}		else 		{			pTradeManager->cancelTrade(pPC);			executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_INCREASE_MONEY);			return;		}	}	// 背券芒俊辑 捣阑 代绢, 牢亥配府俊促啊 歹茄促.	else if (Code == CG_TRADE_MONEY_DECREASE)	{		// 牢亥配府俊促 歹且 咀荐焊促 背券芒俊 乐绰 捣捞 腹酒具 茄促.		if (pInfo1->getGold() >= Amount)		{			// 捣捞 钙胶甫 檬苞窍霸 等促搁, 老何父 滑 荐 乐促.			Gold_t senderGold = pSender->getGold() + pInfo2->getGold();			if (senderGold + Amount > MAX_MONEY)			{				margin      = senderGold + Amount - MAX_MONEY;				finalAmount = finalAmount - margin;			}			// 牢亥配府俊促啊 捣阑 歹窍绊, 背券芒俊辑 捣阑 猾促.			pSender->setGold(pSender->getGold() + finalAmount);			pInfo1->setGold(pInfo1->getGold() - finalAmount);			// 泅犁 OK甫 穿弗 惑怕扼搁, 努扼捞攫飘俊霸 牢刘 菩哦阑 焊郴拎具 茄促.			if (pInfo1->getStatus() == TRADE_FINISH)			{				// 牢刘 菩哦阑 朝妨霖促.				gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_MONEY_DECREASE);				pPlayer->sendPacket(&gcTradeVerify);			}			// 酒捞袍阑 歹窍芭唱 滑 版快, 惑怕甫 函券秦拎具 茄促.			pInfo1->setStatus(TRADE_TRADING);			pInfo2->setStatus(TRADE_TRADING);			// 捣阑 棵赴 寸荤磊俊霸 角力肺 牢亥配府俊促 			// 歹茄 陛咀捞 倔付牢瘤 焊郴霖促.			gcTradeMoney.setTargetObjectID(TargetOID);			gcTradeMoney.setCode(GC_TRADE_MONEY_DECREASE_RESULT);			gcTradeMoney.setAmount(finalAmount);			pPlayer->sendPacket(&gcTradeMoney);			// 惑措规俊霸 官诧 沥焊甫 焊郴霖促.			gcTradeMoney.setTargetObjectID(pSender->getObjectID());			gcTradeMoney.setCode(GC_TRADE_MONEY_DECREASE);			gcTradeMoney.setAmount(finalAmount);			pTargetPlayer->sendPacket(&gcTradeMoney);		}		else		{			pTradeManager->cancelTrade(pPC);			executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_DECREASE_MONEY);			return;		}	}#endif	__END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGTradeMoneyHandler::executeError (CGTradeMoney* 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 + -
显示快捷键?