cgtraderemoveitemhandler.cpp
来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 392 行
CPP
392 行
//////////////////////////////////////////////////////////////////////////////// Filename : CGTradeRemoveItemHandler.cpp// Written By : 辫己刮// Description : //////////////////////////////////////////////////////////////////////////////#include "CGTradeRemoveItem.h"#ifdef __GAME_SERVER__ #include "GamePlayer.h" #include "Slayer.h" #include "Vampire.h" #include "Ousters.h" #include "Item.h" #include "Inventory.h" #include "TradeManager.h" #include "ZoneUtil.h" #include "Gpackets/GCTradeError.h" #include "Gpackets/GCTradeRemoveItem.h" #include "Gpackets/GCTradeVerify.h"#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGTradeRemoveItemHandler::execute (CGTradeRemoveItem* pPacket , Player* pPlayer) throw (ProtocolException , Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__ Assert(pPacket != NULL); Assert(pPlayer != NULL); ObjectID_t TargetOID = pPacket->getTargetObjectID(); GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Creature* pPC = pGamePlayer->getCreature(); Assert(pPC != NULL); Zone* pZone = pPC->getZone(); Assert(pZone != NULL); TradeManager* pTradeManager = pZone->getTradeManager(); Assert(pTradeManager != NULL); // 背券阑 盔窍绰 惑措规阑 粮俊辑 茫酒夯促. Creature* pTargetPC = NULL; /* try { pTargetPC = pZone->getCreature(TargetOID); } catch (NoSuchElementException) { pTargetPC = NULL; } */ // NoSuch力芭. by sigi. 2002.5.2 pTargetPC = pZone->getCreature(TargetOID); // 背券 惑措啊 绝芭唱, 鞍篮 辆练捞 酒聪扼搁 俊矾促 if (pTargetPC == NULL) { pTradeManager->cancelTrade(pPC); executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_TARGET_NOT_EXIST); return; } // 背券 惑措啊 荤恩捞 酒聪芭唱, 鞍篮 辆练捞 酒聪扼搁 俊矾促. if (!pTargetPC->isPC() || !isSameRace(pTargetPC, pPC)) { pTradeManager->cancelTrade(pPC); executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_RACE_DIFFER); return; } // 笛 促 救傈 瘤措俊 乐绰瘤 眉农甫 茄促. if (!isInSafeZone(pPC) || !isInSafeZone(pTargetPC)) { pTradeManager->cancelTrade(pPC); executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_NOT_SAFE); return; } // 坷配官捞甫 鸥绊 乐促搁 俊矾促. if (pPC->isSlayer() && pTargetPC->isSlayer()) { Slayer* pSlayer1 = dynamic_cast<Slayer*>(pPC); Slayer* pSlayer2 = dynamic_cast<Slayer*>(pTargetPC); if (pSlayer1->hasRideMotorcycle() || pSlayer2->hasRideMotorcycle()) { pTradeManager->cancelTrade(pPC); executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_MOTORCYCLE); return; } } if (pPC->isOusters() && pTargetPC->isOusters()) { Ousters* pOusters1 = dynamic_cast<Ousters*>(pPC); Ousters* pOusters2 = dynamic_cast<Ousters*>(pTargetPC); if ( pOusters1->isFlag(Effect::EFFECT_CLASS_SUMMON_SYLPH) || pOusters2->isFlag(Effect::EFFECT_CLASS_SUMMON_SYLPH) ) { pTradeManager->cancelTrade(pPC); executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_MOTORCYCLE); return; } } // 笛捞辑 背券阑 窍绊 乐绰 惑怕啊 酒聪扼搁 俊矾促. if (!pTradeManager->isTrading(pPC, pTargetPC)) { pTradeManager->cancelTrade(pPC); executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_NOT_TRADING); return; } if (pPC->isSlayer()) executeSlayer(pPacket, pPlayer); else if (pPC->isVampire()) executeVampire(pPacket, pPlayer); else if (pPC->isOusters()) executeOusters(pPacket, pPlayer); else throw ProtocolException("CGTradeRemoveItem::execute() : 舅 荐 绝绰 敲饭捞绢 农府媚");#endif __END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGTradeRemoveItemHandler::executeSlayer (CGTradeRemoveItem* 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; Slayer* pSender = dynamic_cast<Slayer*>(pPC); // 背券 措惑俊 眠啊且 酒捞袍狼 器牢磐甫 掘绢辰促. CoordInven_t X, Y; Inventory* pInventory = pSender->getInventory(); Item* pItem = pInventory->findItemOID(ItemOID, X, Y); TradeManager* pTradeManager = pZone->getTradeManager(); Assert(pTradeManager != NULL); // 哗具且 酒捞袍捞 绝促搁 寸楷洒 歹 捞惑 贸府啊 阂啊瓷窍促. if (pItem == NULL) { pTradeManager->cancelTrade(pPC); executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_REMOVE_ITEM); return; } TradeInfo* pInfo1 = pTradeManager->getTradeInfo(pSender->getName()); TradeInfo* pInfo2 = pTradeManager->getTradeInfo(pTargetPC->getName()); // TradeManager俊辑 背券 措惑栏肺 甸绢啊 乐带 酒捞袍阑 力芭茄促. //Assert(pInfo1->removeItem(pItem)); pInfo1->removeItem(pItem); Timeval currentTime; getCurrentTime(currentTime); pInfo1->setNextTime(currentTime); // 泅犁 OK甫 穿弗 惑怕扼搁, 努扼捞攫飘俊霸 牢刘 菩哦阑 焊郴拎具 茄促. if (pInfo1->getStatus() == TRADE_FINISH) { //cout << "CGTradeRemoveItem [" << pSender->getName() << "]狼 惑怕啊 TRADE_FINISH捞骨肺, 牢刘 菩哦阑 焊郴霖促." << endl; // 牢刘菩哦阑 朝妨霖促. GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_REMOVE_ITEM); pPlayer->sendPacket(&gcTradeVerify); } else { //cout << "CGTradeRemoveItem [" << pSender->getName() << "]狼 惑怕啊 TRADE_FINISH啊 酒聪骨肺, 牢刘 菩哦 朝府瘤 臼绰促." << endl; } // 酒捞袍阑 歹窍芭唱 滑 版快, 惑怕啊 TRADE_FINISH扼搁 // TRADE_TRADING栏肺 官层拎具 茄促. pInfo1->setStatus(TRADE_TRADING); pInfo2->setStatus(TRADE_TRADING); // 惑措规俊霸辑 朝妨临 酒捞袍 沥焊甫 备己茄促. GCTradeRemoveItem gcTradeRemoveItem; gcTradeRemoveItem.setTargetObjectID(pSender->getObjectID()); gcTradeRemoveItem.setItemObjectID(pItem->getObjectID()); // 惑措规俊霸 哗具且 酒捞袍狼 沥焊甫 朝妨霖促. Player* pTargetPlayer = pTargetPC->getPlayer(); pTargetPlayer->sendPacket(&gcTradeRemoveItem);#endif __END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGTradeRemoveItemHandler::executeVampire (CGTradeRemoveItem* 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; Vampire* pSender = dynamic_cast<Vampire*>(pPC); TradeManager* pTradeManager = pZone->getTradeManager(); Assert(pTradeManager != NULL); // 背券 措惑俊 眠啊且 酒捞袍狼 器牢磐甫 掘绢辰促. CoordInven_t X, Y; Inventory* pInventory = pSender->getInventory(); Item* pItem = pInventory->findItemOID(ItemOID, X, Y); // 哗具且 酒捞袍捞 绝促搁 寸楷洒 歹 捞惑 贸府啊 阂啊瓷窍促. if (pItem == NULL) { pTradeManager->cancelTrade(pPC); executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_REMOVE_ITEM); return; } TradeInfo* pInfo1 = pTradeManager->getTradeInfo(pSender->getName()); TradeInfo* pInfo2 = pTradeManager->getTradeInfo(pTargetPC->getName()); // TradeManager俊辑 背券 措惑栏肺 甸绢啊 乐带 酒捞袍阑 力芭茄促. //Assert(pInfo1->removeItem(pItem)); pInfo1->removeItem(pItem); // 泅犁 OK甫 穿弗 惑怕扼搁, 努扼捞攫飘俊霸 牢刘 菩哦阑 焊郴拎具 茄促. if (pInfo1->getStatus() == TRADE_FINISH) { //cout << "CGTradeRemoveItem [" << pSender->getName() << "]狼 惑怕啊 TRADE_FINISH捞骨肺, 牢刘 菩哦阑 焊郴霖促." << endl; // 牢刘菩哦阑 朝妨霖促. GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_REMOVE_ITEM); pPlayer->sendPacket(&gcTradeVerify); } else { //cout << "CGTradeRemoveItem [" << pSender->getName() << "]狼 惑怕啊 TRADE_FINISH啊 酒聪骨肺, 牢刘 菩哦 朝府瘤 臼绰促." << endl; } // 酒捞袍阑 歹窍芭唱 滑 版快, 惑怕啊 TRADE_FINISH扼搁 // TRADE_TRADING栏肺 官层拎具 茄促. pInfo1->setStatus(TRADE_TRADING); pInfo2->setStatus(TRADE_TRADING); // 惑措规俊霸辑 朝妨临 酒捞袍 沥焊甫 备己茄促. GCTradeRemoveItem gcTradeRemoveItem; gcTradeRemoveItem.setTargetObjectID(pSender->getObjectID()); gcTradeRemoveItem.setItemObjectID(pItem->getObjectID()); // 惑措规俊霸 哗具且 酒捞袍狼 沥焊甫 朝妨霖促. Player* pTargetPlayer = pTargetPC->getPlayer(); pTargetPlayer->sendPacket(&gcTradeRemoveItem);#endif __END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGTradeRemoveItemHandler::executeOusters (CGTradeRemoveItem* 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); // 哗具且 酒捞袍捞 绝促搁 寸楷洒 歹 捞惑 贸府啊 阂啊瓷窍促. if (pItem == NULL) { pTradeManager->cancelTrade(pPC); executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_REMOVE_ITEM); return; } TradeInfo* pInfo1 = pTradeManager->getTradeInfo(pSender->getName()); TradeInfo* pInfo2 = pTradeManager->getTradeInfo(pTargetPC->getName()); // TradeManager俊辑 背券 措惑栏肺 甸绢啊 乐带 酒捞袍阑 力芭茄促. //Assert(pInfo1->removeItem(pItem)); pInfo1->removeItem(pItem); // 泅犁 OK甫 穿弗 惑怕扼搁, 努扼捞攫飘俊霸 牢刘 菩哦阑 焊郴拎具 茄促. if (pInfo1->getStatus() == TRADE_FINISH) { //cout << "CGTradeRemoveItem [" << pSender->getName() << "]狼 惑怕啊 TRADE_FINISH捞骨肺, 牢刘 菩哦阑 焊郴霖促." << endl; // 牢刘菩哦阑 朝妨霖促. GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_REMOVE_ITEM); pPlayer->sendPacket(&gcTradeVerify); } else { //cout << "CGTradeRemoveItem [" << pSender->getName() << "]狼 惑怕啊 TRADE_FINISH啊 酒聪骨肺, 牢刘 菩哦 朝府瘤 臼绰促." << endl; } // 酒捞袍阑 歹窍芭唱 滑 版快, 惑怕啊 TRADE_FINISH扼搁 // TRADE_TRADING栏肺 官层拎具 茄促. pInfo1->setStatus(TRADE_TRADING); pInfo2->setStatus(TRADE_TRADING); // 惑措规俊霸辑 朝妨临 酒捞袍 沥焊甫 备己茄促. GCTradeRemoveItem gcTradeRemoveItem; gcTradeRemoveItem.setTargetObjectID(pSender->getObjectID()); gcTradeRemoveItem.setItemObjectID(pItem->getObjectID()); // 惑措规俊霸 哗具且 酒捞袍狼 沥焊甫 朝妨霖促. Player* pTargetPlayer = pTargetPC->getPlayer(); pTargetPlayer->sendPacket(&gcTradeRemoveItem);#endif __END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGTradeRemoveItemHandler::executeError (CGTradeRemoveItem* 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 + -
显示快捷键?