📄 trademanager.cpp
字号:
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 + -