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 + -
显示快捷键?