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

📄 trademanager.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		if ( pGamePlayer1 != NULL )		{			pGamePlayer1->setPenaltyFlag(PENALTY_TYPE_KICKED);			pGamePlayer1->setItemRatioBonusPoint(1);		}		if ( pGamePlayer2 != NULL )		{			pGamePlayer2->setPenaltyFlag(PENALTY_TYPE_KICKED);			pGamePlayer2->setItemRatioBonusPoint(1);		}		return;	}	bool        bTradeGiftBox = false;	int         giftBoxType1 = 0;    int         giftBoxType2 = 0;	if (pCreature1->isSlayer() && pCreature2->isSlayer())	{		pSlayer1 = dynamic_cast<Slayer*>(pCreature1);		pSlayer2 = dynamic_cast<Slayer*>(pCreature2);		pInventory1 = pSlayer1->getInventory();		pInventory2 = pSlayer2->getInventory();	}	else if (pCreature1->isVampire() && pCreature2->isVampire())	{		pVampire1 = dynamic_cast<Vampire*>(pCreature1);		pVampire2 = dynamic_cast<Vampire*>(pCreature2);		pInventory1 = pVampire1->getInventory();		pInventory2 = pVampire2->getInventory();	}	else if (pCreature1->isOusters() && pCreature2->isOusters())	{		pOusters1 = dynamic_cast<Ousters*>(pCreature1);		pOusters2 = dynamic_cast<Ousters*>(pCreature2);		pInventory1 = pOusters1->getInventory();		pInventory2 = pOusters2->getInventory();	}	else throw ("TradeManager::processTrade() : 促弗 辆练 埃俊 背券且 荐绰 绝零!");	// 刚历 阿磊狼 牢亥配府俊辑 背券且 酒捞袍甸阑 力芭茄促.	for (list<Item*>::iterator itr = tradeList1.begin(); itr != tradeList1.end(); itr++)	{		Item* pItem = (*itr);		if (pInventory1->hasItem(pItem->getObjectID()))		{			// 急拱 惑磊 背券 捞亥飘 (急拱 惑磊绰 促弗 酒捞袍苞 窃膊 Trade 瞪 荐 绝促! - 秒家促			if ( pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX				 && pItem->getItemType() > 1 && pItem->getItemType() < 6 )			{				/*				if ( tradeList1.size() != 1 )					throw ("TradeManager::processTrade() : 急拱 惑磊绰 促弗 酒捞袍苞 窃膊 背券且 荐绰 绝促!");				*/				bTradeGiftBox = true;				giftBoxType1 = pItem->getItemType();			}			pInventory1->deleteItem(pItem->getObjectID());			itemMap1.addItem(pItem);			pItem->whenPCLost(pPlayerCreature1);		}		else throw ("TradeManager::processTrade() : 葛瘤? 酒捞袍捞 绝磊唱!");	}	for (list<Item*>::iterator itr = tradeList2.begin(); itr != tradeList2.end(); itr++)	{		Item* pItem = (*itr);		if (pInventory2->hasItem(pItem->getObjectID()))		{			// 急拱 惑磊 背券 捞亥飘 (急拱 惑磊绰 促弗 酒捞袍苞 窃膊 Trade 瞪 荐 绝促! - 秒家促			if ( pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX				 && pItem->getItemType() > 1 && pItem->getItemType() < 6 )			{				/*				if ( tradeList2.size() != 1 )					throw ("TradeManager::processTrade() : 急拱 惑磊绰 促弗 酒捞袍苞 窃膊 背券且 荐绰 绝促!");				*/				// 惑措啊 GiftBox 甫 棵府瘤 臼疽促搁 Trade 甫 且 荐 绝促!				if ( !bTradeGiftBox )					throw ("TradeManager::processTrade() : 急拱 惑磊绰 笛 促 棵妨具 背券且 荐 乐促!");				giftBoxType2 = pItem->getItemType();			}			pInventory2->deleteItem(pItem->getObjectID());			itemMap2.addItem(pItem);			pItem->whenPCLost(pPlayerCreature2);		}		else throw ("TradeManager::processTrade() : 葛瘤? 酒捞袍捞 绝磊唱!");	}	// 捞力 辑肺狼 牢亥配府俊促 背券且 酒捞袍甸阑 歹秦夯促.	for (ItemMap::iterator itr = itemMap1.begin(); itr != itemMap1.end(); itr++)	{		Item* pItem = itr->second;		// 酒捞袍阑 歹窍带 吝 窍唱扼档 歹且 荐 绝促搁, false甫 府畔茄促.		if (!pInventory2->addItem(pItem))		{			throw ("TradeManager::processTrade() : 揪官, 背券窍促啊 俊矾车促.");		}		pItem->whenPCTake( pPlayerCreature2 );				// 农府胶付胶 捞亥飘 2002.12.16. by bezz.		// 踌祸 急拱 惑磊扼搁 河篮 祸栏肺 官槽促.		if (pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pItem->getItemType() == 0)		{			pItem->setItemType(1);			// FlagSet汲沥. 踌祸 急拱 惑磊甫 罐篮 版快 by sigi. 2002.12.16			FlagSet* pFlagSet = pPlayerCreature2->getFlagSet();			Assert(pFlagSet!=NULL);			pFlagSet->turnOn(FLAGSET_RECEIVE_GREEN_GIFT_BOX);			pFlagSet->save( pCreature2->getName() );		}		if (pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pItem->getItemType() > 1 && pItem->getItemType() < 6)		{			int blackGiftBoxType = getBlackGiftBoxType( giftBoxType1, giftBoxType2 );			if ( blackGiftBoxType != 0 )				pItem->setItemType(blackGiftBoxType);			else				throw ("TradeManager::processTrade() : 揪官, 背券窍促啊 俊矾车促.");		}		if ( pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX				&& pItem->getItemType() >= 16 && pItem->getItemType() <= 18 )		{			pItem->setItemType( pItem->getItemType()+3 );		}		// ItemTraceLog 甫 巢变促		if ( pItem != NULL && pItem->isTraceItem() )		{			remainTraceLog( pItem, pCreature1->getName(), pCreature2->getName(), ITEM_LOG_TRADE, DETAIL_TRADE);		}	}	for (ItemMap::iterator itr = itemMap2.begin(); itr != itemMap2.end(); itr++)	{		Item* pItem = itr->second;		// 酒捞袍阑 歹窍带 吝 窍唱扼档 歹且 荐 绝促搁, false甫 府畔茄促.		if (!pInventory1->addItem(pItem))		{			throw ("TradeManager::processTrade() : 揪官, 背券窍促啊 俊矾车促.");		}		pItem->whenPCTake( pPlayerCreature1 );		// 农府胶付胶 捞亥飘 2002.12.16. by bezz.		// 踌祸 急拱 惑磊扼搁 河篮 祸栏肺 官槽促.		if (pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pItem->getItemType() == 0)		{			pItem->setItemType(1);			// FlagSet汲沥. 踌祸 急拱 惑磊甫 罐篮 版快 by sigi. 2002.12.16			FlagSet* pFlagSet = pPlayerCreature1->getFlagSet();			Assert(pFlagSet!=NULL);			pFlagSet->turnOn(FLAGSET_RECEIVE_GREEN_GIFT_BOX);			pFlagSet->save( pCreature1->getName() );		}		if (pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pItem->getItemType() > 1 && pItem->getItemType() < 6)		{			int blackGiftBoxType = getBlackGiftBoxType( giftBoxType1, giftBoxType2 );			if ( blackGiftBoxType != 0 )				pItem->setItemType(blackGiftBoxType);			else				throw ("TradeManager::processTrade() : 揪官, 背券窍促啊 俊矾车促.");		}		if ( pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX				&& pItem->getItemType() >= 16 && pItem->getItemType() <= 18 )		{			pItem->setItemType( pItem->getItemType()+3 );		}		// ItemTraceLog 甫 巢变促		if ( pItem != NULL && pItem->isTraceItem() )		{			remainTraceLog( pItem, pCreature2->getName(), pCreature1->getName(), ITEM_LOG_TRADE, DETAIL_TRADE);		}	}	// 颗败柳 酒捞袍阑 DB俊促啊 历厘茄促.	pInventory1->save(pCreature1->getName());	pInventory2->save(pCreature2->getName());	// 颗败柳 捣阑 历厘茄促.	if (pCreature1->isSlayer())	{		pSlayer1->setGoldEx(pSlayer1->getGold() + tradeGold2);		pSlayer2->setGoldEx(pSlayer2->getGold() + tradeGold1);	}	else if (pCreature2->isVampire())	{		pVampire1->setGoldEx(pVampire1->getGold() + tradeGold2);		pVampire2->setGoldEx(pVampire2->getGold() + tradeGold1);	}	else if (pCreature2->isOusters())	{		pOusters1->setGoldEx(pOusters1->getGold() + tradeGold2);		pOusters2->setGoldEx(pOusters2->getGold() + tradeGold1);	}	// 背券 沥焊甫 昏力窍扁 傈俊 肺弊甫 巢败敌促.	string ip1 = pCreature1->getPlayer()->getSocket()->getHost();	string ip2 = pCreature2->getPlayer()->getSocket()->getHost();	StringStream msg;	msg << "[" << pCreature1->getName() << "(" << pPlayerCreature1->getPlayer()->getID() << ")] " << "\n";	msg << "GOLD:" << tradeGold1 << "\n";	for (ItemMap::iterator itr = itemMap1.begin(); itr != itemMap1.end(); itr++)		msg << itr->second->toString() << "\n";	msg << "----" << "\n";	msg << "[" << pCreature2->getName() << "(" << pPlayerCreature2->getPlayer()->getID() << ")] "  << "\n";	msg << "GOLD:" << tradeGold2 << "\n";	for (ItemMap::iterator itr = itemMap2.begin(); itr != itemMap2.end(); itr++)		msg << itr->second->toString() << "\n";	// 捣肺弊 巢扁磊 -_-a	if ( tradeGold1 >= g_pVariableManager->getMoneyTraceLogLimit() )	{		remainMoneyTraceLog( pCreature1->getName(), pCreature2->getName(), ITEM_LOG_TRADE, DETAIL_TRADE, tradeGold1 );	}	if ( tradeGold2 >= g_pVariableManager->getMoneyTraceLogLimit() )	{		remainMoneyTraceLog( pCreature2->getName(), pCreature1->getName(), ITEM_LOG_TRADE, DETAIL_TRADE, tradeGold2 );	}	//log(LOG_TRADE, pCreature1->getName(), pCreature2->getName(), msg.toString());	Statement* pStmt = NULL;	BEGIN_DB	{		StringStream SQL;		SQL << "INSERT INTO TradeLog (Timeline, Name1, IP1, Name2, IP2, Content) VALUES ("			<< "'" << VSDateTime::currentDateTime().toString() << "',"			<< "'" << pCreature1->getName() << "',"			<< "'" << ip1 << "',"			<< "'" << pCreature2->getName() << "',"			<< "'" << ip2 << "',"			<< "'" << msg.toString() << "'"			<< ")";		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pStmt->executeQuery(SQL.toString());		SAFE_DELETE(pStmt);	}	END_DB(pStmt);	// 背券捞 场车栏聪, 背券 沥焊甫 昏力茄促.	// *** 努扼捞攫飘 螟俊辑 背券捞 场抄 饶俊档	// 背券 芒阑 摧瘤 臼扁甫 盔秦辑府...	//removeTradeInfo(pCreature1->getObjectID());	//removeTradeInfo(pCreature2->getObjectID());	pInfo1->clearAll();	pInfo2->clearAll();	__END_CATCH}////////////////////////////////////////////////////////////////////////////////// 背券阑 秒家矫虐绊, 背券 措惑栏肺 眉农秦 躇带 酒捞袍甸阑 盔贰肺 登倒赴促.// 角力肺 登倒妨具 且 巴篮 捣 挥捞促.////////////////////////////////////////////////////////////////////////////////void TradeManager::cancelTrade(Creature* pCreature1, Creature* pCreature2)	throw (){	__BEGIN_TRY	try {		int nCondition = 0;		// 器牢磐啊 澄捞搁 帮鄂茄促.		if (pCreature1 == NULL || pCreature2 == NULL) nCondition = 1;		// 荤恩尝府 背券阑 秦具父 茄促.		if (!pCreature1->isPC() || !pCreature2->isPC()) nCondition = 2;		// 促弗 辆练尝府绰 背券且 荐 绝促.		if (!isSameRace(pCreature1, pCreature2)) nCondition = 3;		// 背券 沥焊啊 积己登绢 乐瘤 臼促搁 背券且 荐 绝促.		if (!isTrading(pCreature1, pCreature2)) nCondition = 4;		if (nCondition != 0)		{			StringStream msg;			msg << "TradeManager::cancelTrade() 坷幅 惯积... CODE(" 				<< nCondition << ")";			filelog("tradeError.txt", "[1] %s", msg.toString().c_str());			//throw ("TradeManager::cancelTrade() : 捞扒 肚 购单?");			return;		}		TradeInfo* pInfo1 = getTradeInfo(pCreature1->getName());		TradeInfo* pInfo2 = getTradeInfo(pCreature2->getName());		// 霉锅掳 农府媚客 包访等 背券 沥焊甫 昏力		if (pCreature1->isSlayer())		{			Slayer* pSlayer1 = dynamic_cast<Slayer*>(pCreature1);			if (pInfo1) pSlayer1->setGold(pSlayer1->getGold() + pInfo1->getGold());		}		else if (pCreature1->isVampire())		{			Vampire* pVampire1 = dynamic_cast<Vampire*>(pCreature1);			if (pInfo1) pVampire1->setGold(pVampire1->getGold() + pInfo1->getGold());		}		else if (pCreature1->isOusters())		{			Ousters* pOusters1 = dynamic_cast<Ousters*>(pCreature1);			if (pInfo1) pOusters1->setGold(pOusters1->getGold() + pInfo1->getGold());		}		// 滴锅掳 农府媚客 包访等 背券 沥焊甫 昏力		if (pCreature2->isSlayer())		{			Slayer* pSlayer2 = dynamic_cast<Slayer*>(pCreature2);			if (pInfo2) pSlayer2->setGold(pSlayer2->getGold() + pInfo2->getGold());		}		else if (pCreature2->isVampire())		{			Vampire* pVampire2 = dynamic_cast<Vampire*>(pCreature2);			if (pInfo2) pVampire2->setGold(pVampire2->getGold() + pInfo2->getGold());		}		else if (pCreature2->isOusters())		{			Ousters* pOusters2 = dynamic_cast<Ousters*>(pCreature2);			if (pInfo2) pOusters2->setGold(pOusters2->getGold() + pInfo2->getGold());		}		// 背券 沥焊甫 昏力茄促.		if (pInfo1) removeTradeInfo(pCreature1->getName());		if (pInfo2) removeTradeInfo(pCreature2->getName());	} catch (Throwable& t) {		filelog("tradeError.txt", "[1] %s", t.toString().c_str());		//throw Error(t.toString().c_str());	}	__END_CATCH}////////////////////////////////////////////////////////////////////////////////// 背券阑 秒家矫虐绊, 背券 措惑栏肺 眉农秦 躇带 酒捞袍甸阑 盔贰肺 登倒赴促.// 角力肺 登倒妨具 且 巴篮 捣 挥捞促.////////////////////////////////////////////////////////////////////////////////void TradeManager::cancelTrade(Creature* pPC)	throw (){	__BEGIN_TRY	try {		// 器牢磐啊 澄捞搁 帮鄂茄促.		if (pPC == NULL) return;		TradeInfo* pInfo1    = getTradeInfo(pPC->getName());		TradeInfo* pInfo2    = NULL;		string 	TargetName;		Creature*  pTargetPC = NULL;		Zone*      pZone     = pPC->getZone();		if (pInfo1 != NULL)		{			pInfo2    = getTradeInfo(pInfo1->getTargetName());			TargetName = pInfo1->getTargetName();			// 霉锅掳 农府媚客 包访等 背券 沥焊甫 昏力			if (pPC->isSlayer())			{				Slayer* pSlayer1 = dynamic_cast<Slayer*>(pPC);				pSlayer1->setGold(pSlayer1->getGold() + pInfo1->getGold());			}			else if (pPC->isVampire())			{				Vampire* pVampire1 = dynamic_cast<Vampire*>(pPC);				pVampire1->setGold(pVampire1->getGold() + pInfo1->getGold());			}			else if (pPC->isOusters())			{				Ousters* pOusters1 = dynamic_cast<Ousters*>(pPC);				pOusters1->setGold(pOusters1->getGold() + pInfo1->getGold());			}			/*			try { pTargetPC = pZone->getCreature(TargetName); }			catch (NoSuchElementException) { pTargetPC = NULL; }			*/			// NoSuch.. 力芭. by sigi. 2002.5.2			pTargetPC = pZone->getCreature(TargetName);			// 背券 惑措啊 鞍篮 粮俊 粮犁且 版快, 			// 背券 惑措俊霸 背券捞 芭何登菌促绰 菩哦阑 朝妨林绊,			// 背券 沥焊甫 昏力秦霖促.			if (pTargetPC != NULL && pTargetPC->isPC() && pInfo2 != NULL)			{				// 滴锅掳 农府媚客 包访等 背券 沥焊甫 昏力				if (pTargetPC->isSlayer())				{					Slayer* pSlayer2 = dynamic_cast<Slayer*>(pTargetPC);					pSlayer2->setGold(pSlayer2->getGold() + pInfo2->getGold());				}				else if (pTargetPC->isVampire())				{					Vampire* pVampire2 = dynamic_cast<Vampire*>(pTargetPC);					pVampire2->setGold(pVampire2->getGold() + pInfo2->getGold());				}				else if (pTargetPC->isOusters())				{					Ousters* pOusters2 = dynamic_cast<Ousters*>(pTargetPC);					pOusters2->setGold(pOusters2->getGold() + pInfo2->getGold());				}				// 鸥百捞 登绰 措惑俊辑 背券 芭何 菩哦阑 朝妨霖促.				GCTradeFinish gcTradeFinish;				gcTradeFinish.setTargetObjectID(pPC->getObjectID());				gcTradeFinish.setCode(GC_TRADE_FINISH_REJECT);				Player* pTargetPlayer = pTargetPC->getPlayer();				pTargetPlayer->sendPacket(&gcTradeFinish);			}			// 背券 沥焊甫 昏力茄促.			removeTradeInfo(pPC->getName());			removeTradeInfo(TargetName);		}	} catch (Throwable& t) {		filelog("tradeError.txt", "[2] %s", t.toString().c_str());		//throw Error(t.toString().c_str());	}	__END_CATCH}////////////////////////////////////////////////////////////////////////////////// 滴 农府媚啊 辑肺 背券吝牢瘤甫 眉农茄促.////////////////////////////////////////////////////////////////////////////////bool TradeManager::isTrading(Creature* pCreature1, Creature* pCreature2)	throw (){	__BEGIN_TRY	TradeInfo* pInfo1 = getTradeInfo(pCreature1->getName());	TradeInfo* pInfo2 = getTradeInfo(pCreature2->getName());	if (pInfo1 == NULL || pInfo2 == NULL) return false;	if ((pInfo1->getMainName() == pInfo2->getTargetName()) &&		(pInfo2->getMainName() == pInfo1->getTargetName())) return true;	return false;	__END_CATCH}

⌨️ 快捷键说明

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