cgtradeadditemhandler.cpp
来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 791 行 · 第 1/2 页
CPP
791 行
// 利祸 急拱 惑磊甫 啊瘤绊 乐瘤 臼促搁, 傲 逞绢埃促. GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_OK); pPlayer->sendPacket(&gcTradeVerify); } } else if (pItem->getItemType() == 1) { // 利祸 急拱 惑磊绰 背券 前格捞 瞪 荐 绝促. GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_FAIL); pPlayer->sendPacket(&gcTradeVerify); return; } }//#endif// TradeInfo* pInfo1 = pTradeManager->getTradeInfo(pSender->getName()); TradeInfo* pInfo2 = pTradeManager->getTradeInfo(pTargetPC->getName()); list<Item*> tradeList1 = pInfo1->getItemList(); if (pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pItem->getItemType() > 1 && pItem->getItemType() < 6) { for (list<Item*>::iterator itr = tradeList1.begin(); itr != tradeList1.end(); itr++) { Item* pTradeItem = (*itr); if ( pTradeItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pTradeItem->getItemType() > 1 && pTradeItem->getItemType() < 6) { GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_FAIL); pPlayer->sendPacket(&gcTradeVerify); return; } } GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_OK); pPlayer->sendPacket(&gcTradeVerify); } else if (pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pItem->getItemType() >= 6) { GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_OK); pPlayer->sendPacket(&gcTradeVerify); } // TradeManager俊 背券 措惑栏肺辑 酒捞袍阑 歹茄促. //Assert(pInfo1->addItem(pItem)); pInfo1->addItem(pItem); // 泅犁 OK甫 穿弗 惑怕扼搁, 努扼捞攫飘俊霸 牢刘 菩哦阑 焊郴拎具 茄促. if (pInfo1->getStatus() == TRADE_FINISH) { //cout << "CGTradeRemoveItem [" << pSender->getName() << "]狼 惑怕啊 TRADE_FINISH捞骨肺, 牢刘 菩哦阑 焊郴霖促." << endl; // 牢刘 菩哦阑 朝妨霖促. GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_WHEN_ACCEPT); pPlayer->sendPacket(&gcTradeVerify); } else { //cout << "CGTradeRemoveItem [" << pSender->getName() << "]狼 惑怕啊 TRADE_FINISH啊 酒聪骨肺, 牢刘 菩哦 朝府瘤 臼绰促." << endl; } // 酒捞袍阑 歹窍芭唱 滑 版快, 惑怕啊 TRADE_FINISH扼搁 // TRADE_TRADING栏肺 官层拎具 茄促. pInfo1->setStatus(TRADE_TRADING); pInfo2->setStatus(TRADE_TRADING); // 惑措规俊霸 朝妨临 酒捞袍 沥焊甫 备己茄促. GCTradeAddItem gcTradeAddItem; makeGCTradeAddItemPacket(&gcTradeAddItem, pSender->getObjectID(), pItem, X, Y); // 惑措规俊霸 背券且 酒捞袍 沥焊甫 朝妨霖促. Player* pTargetPlayer = pTargetPC->getPlayer(); pTargetPlayer->sendPacket(&gcTradeAddItem);#endif __END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGTradeAddItemHandler::executeOusters (CGTradeAddItem* 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); // 眠啊且 酒捞袍捞 绝促搁 寸楷洒 歹 捞惑 贸府啊 阂啊瓷 // Relic篮 背券且 荐 绝促. if (pItem == NULL || !canTrade( pItem ) ) { pTradeManager->cancelTrade(pPC); executeError(pPacket, pPlayer, GC_TRADE_ERROR_CODE_ADD_ITEM); return; }////#ifdef __XMAS_EVENT_CODE__ // 踌祸 急拱 惑磊牢 版快俊绰, 惑措规俊霸 利祸 急拱 惑磊啊 绝绰瘤 八荤茄 饶, // 牢刘 菩哦阑 焊郴拎具 茄促. if (pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX) { PlayerCreature* pReceiver = dynamic_cast<PlayerCreature*>(pTargetPC); Item* pExtraSlotItem = pReceiver->getExtraInventorySlotItem(); if (pItem->getItemType() == 0) { Inventory* pTargetInventory = pReceiver->getInventory(); if (pTargetInventory->hasRedGiftBox()) { // 利祸 急拱 惑磊甫 啊瘤绊 乐促搁 歹且 荐 绝促. 府畔矫挪促. GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_FAIL); pPlayer->sendPacket(&gcTradeVerify); return; } else if (pExtraSlotItem != NULL) { if (pExtraSlotItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pExtraSlotItem->getItemType() == 1) { GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_FAIL); pPlayer->sendPacket(&gcTradeVerify); return; } } else { // 利祸 急拱 惑磊甫 啊瘤绊 乐瘤 臼促搁, 傲 逞绢埃促. GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_OK); pPlayer->sendPacket(&gcTradeVerify); } } else if (pItem->getItemType() == 1) { // 利祸 急拱 惑磊绰 背券 前格捞 瞪 荐 绝促. GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_FAIL); pPlayer->sendPacket(&gcTradeVerify); return; } }//#endif// TradeInfo* pInfo1 = pTradeManager->getTradeInfo(pSender->getName()); TradeInfo* pInfo2 = pTradeManager->getTradeInfo(pTargetPC->getName()); list<Item*> tradeList1 = pInfo1->getItemList(); if (pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pItem->getItemType() > 1 && pItem->getItemType() < 6) { for (list<Item*>::iterator itr = tradeList1.begin(); itr != tradeList1.end(); itr++) { Item* pTradeItem = (*itr); if ( pTradeItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pTradeItem->getItemType() > 1 && pTradeItem->getItemType() < 6) { GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_FAIL); pPlayer->sendPacket(&gcTradeVerify); return; } } GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_OK); pPlayer->sendPacket(&gcTradeVerify); } else if (pItem->getItemClass() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pItem->getItemType() >= 6) { GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_OK); pPlayer->sendPacket(&gcTradeVerify); } // TradeManager俊 背券 措惑栏肺辑 酒捞袍阑 歹茄促. //Assert(pInfo1->addItem(pItem)); pInfo1->addItem(pItem); // 泅犁 OK甫 穿弗 惑怕扼搁, 努扼捞攫飘俊霸 牢刘 菩哦阑 焊郴拎具 茄促. if (pInfo1->getStatus() == TRADE_FINISH) { //cout << "CGTradeRemoveItem [" << pSender->getName() << "]狼 惑怕啊 TRADE_FINISH捞骨肺, 牢刘 菩哦阑 焊郴霖促." << endl; // 牢刘 菩哦阑 朝妨霖促. GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_ADD_ITEM_WHEN_ACCEPT); pPlayer->sendPacket(&gcTradeVerify); } else { //cout << "CGTradeRemoveItem [" << pSender->getName() << "]狼 惑怕啊 TRADE_FINISH啊 酒聪骨肺, 牢刘 菩哦 朝府瘤 臼绰促." << endl; } // 酒捞袍阑 歹窍芭唱 滑 版快, 惑怕啊 TRADE_FINISH扼搁 // TRADE_TRADING栏肺 官层拎具 茄促. pInfo1->setStatus(TRADE_TRADING); pInfo2->setStatus(TRADE_TRADING); // 惑措规俊霸 朝妨临 酒捞袍 沥焊甫 备己茄促. GCTradeAddItem gcTradeAddItem; makeGCTradeAddItemPacket(&gcTradeAddItem, pSender->getObjectID(), pItem, X, Y); // 惑措规俊霸 背券且 酒捞袍 沥焊甫 朝妨霖促. Player* pTargetPlayer = pTargetPC->getPlayer(); pTargetPlayer->sendPacket(&gcTradeAddItem);#endif __END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGTradeAddItemHandler::makeGCTradeAddItemPacket (GCTradeAddItem* pPacket, ObjectID_t Sender, Item* pItem, CoordInven_t X, CoordInven_t Y) throw (){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__ // 惑措规俊霸 朝妨临 酒捞袍 沥焊甫 备己茄促. pPacket->setTargetObjectID(Sender); pPacket->setItemObjectID(pItem->getObjectID()); pPacket->setX(X); pPacket->setY(Y); pPacket->setItemClass(pItem->getItemClass()); pPacket->setItemType(pItem->getItemType()); pPacket->setOptionType(pItem->getOptionTypeList()); pPacket->setDurability(pItem->getDurability()); pPacket->setItemNum(pItem->getNum()); pPacket->setSilver(pItem->getSilver()); pPacket->setGrade(pItem->getGrade()); pPacket->setEnchantLevel(pItem->getEnchantLevel()); pPacket->clearList(); // 绢恫 酒捞袍甸阑 沥焊甫 焊郴林扁 傈俊 眠啊利栏肺 啊傍阑 秦具茄促. Item::ItemClass IClass = pItem->getItemClass(); if (IClass == Item::ITEM_CLASS_PET_ITEM) { PetItem* pPetItem = dynamic_cast<PetItem*>(pItem); if ( pPetItem->getPetInfo() != NULL ) { list<OptionType_t> olist; if ( pPetItem->getPetInfo()->getPetOption() != 0 ) olist.push_back(pPetItem->getPetInfo()->getPetOption()); pPacket->setOptionType( olist ); pPacket->setDurability( pPetItem->getPetInfo()->getPetHP() ); pPacket->setEnchantLevel( pPetItem->getPetInfo()->getPetAttr() ); pPacket->setSilver( pPetItem->getPetInfo()->getPetAttrLevel() ); pPacket->setGrade( (pPacket->getDurability() == 0 )?(pPetItem->getPetInfo()->getLastFeedTime().daysTo( VSDateTime::currentDateTime() )):(-1) ); pPacket->setItemNum( pPetItem->getPetInfo()->getPetLevel() );// pPacket->setMainColor( 0xffff ); } } // 醚 辆幅绰 酒捞袍 箭磊 措脚俊 醚舅狼 箭磊甫 持绢霖促. else if (IClass == Item::ITEM_CLASS_AR) { AR* pAR = dynamic_cast<AR*>(pItem); pPacket->setItemNum(pAR->getBulletCount()); } else if (IClass == Item::ITEM_CLASS_SR) { SR* pSR = dynamic_cast<SR*>(pItem); pPacket->setItemNum(pSR->getBulletCount()); } else if (IClass == Item::ITEM_CLASS_SG) { SG* pSG = dynamic_cast<SG*>(pItem); pPacket->setItemNum(pSG->getBulletCount()); } else if (IClass == Item::ITEM_CLASS_SMG) { SMG* pSMG = dynamic_cast<SMG*>(pItem); pPacket->setItemNum(pSMG->getBulletCount()); } // 骇飘狼 版快俊绰 骇飘 救俊 器窃登绢 乐绰 酒捞袍 沥焊甫 // 鞍捞 朝妨拎具 茄促. else if (IClass == Item::ITEM_CLASS_BELT) { Belt* pBelt = dynamic_cast<Belt*>(pItem); Inventory* pBeltInventory = pBelt->getInventory(); BYTE SubItemCount = 0; for (int i=0; i<pBelt->getPocketCount(); i++) { Item* pBeltItem = pBeltInventory->getItem(i, 0); if (pBeltItem != NULL) { SubItemInfo* pInfo = new SubItemInfo(); pInfo->setObjectID(pBeltItem->getObjectID()); pInfo->setItemClass(pBeltItem->getItemClass()); pInfo->setItemType(pBeltItem->getItemType()); pInfo->setItemNum(pBeltItem->getNum()); pInfo->setSlotID(i); pPacket->addListElement(pInfo); SubItemCount += 1; } } pPacket->setListNum(SubItemCount); } // 鞠胶龟靛狼 版快俊绰 救俊 器窃登绢 乐绰 酒捞袍 沥焊甫 // 鞍捞 朝妨拎具 茄促. else if (IClass == Item::ITEM_CLASS_OUSTERS_ARMSBAND) { OustersArmsband* pOustersArmsband = dynamic_cast<OustersArmsband*>(pItem); Inventory* pOustersArmsbandInventory = pOustersArmsband->getInventory(); BYTE SubItemCount = 0; for (int i=0; i<pOustersArmsband->getPocketCount(); i++) { Item* pOustersArmsbandItem = pOustersArmsbandInventory->getItem(i, 0); if (pOustersArmsbandItem != NULL) { SubItemInfo* pInfo = new SubItemInfo(); pInfo->setObjectID(pOustersArmsbandItem->getObjectID()); pInfo->setItemClass(pOustersArmsbandItem->getItemClass()); pInfo->setItemType(pOustersArmsbandItem->getItemType()); pInfo->setItemNum(pOustersArmsbandItem->getNum()); pInfo->setSlotID(i); pPacket->addListElement(pInfo); SubItemCount += 1; } } pPacket->setListNum(SubItemCount); }#endif __END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGTradeAddItemHandler::executeError(CGTradeAddItem* 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 + -
显示快捷键?