cgaddinventorytomousehandler.cpp
来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 183 行
CPP
183 行
//////////////////////////////////////////////////////////////////////////////// Filename : CGAddInventoryToMouseHandler.cc// Written By : elca@ewestsoft.com// Description ://////////////////////////////////////////////////////////////////////////////#include "CGAddInventoryToMouse.h"#ifdef __GAME_SERVER__ #include "GamePlayer.h" #include "Zone.h" #include "PlayerCreature.h" #include "Inventory.h" #include "Item.h" #include "ItemFactoryManager.h" #include "ItemUtil.h" #include "TradeManager.h" #include "ObjectRegistry.h" #include "Gpackets/GCTradeVerify.h" #include "Gpackets/GCCannotAdd.h" #include "Gpackets/GCCreateItem.h" #include <stdio.h>#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGAddInventoryToMouseHandler::execute(CGAddInventoryToMouse* pPacket , Player* pPlayer) throw (ProtocolException, Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__ GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Assert(pGamePlayer != NULL); Creature* pCreature = pGamePlayer->getCreature(); Assert(pCreature != NULL); PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature); Assert(pPC != NULL); Zone* pZone = pPC->getZone(); Assert(pZone != NULL); CoordInven_t InvenX = pPacket->getX(); CoordInven_t InvenY = pPacket->getY(); ObjectID_t ItemOID = pPacket->getObjectID(); Inventory* pInventory = pPC->getInventory(); Assert(pInventory != NULL); // 牢亥配府 谅钎甫 逞绢啊搁 帮鄂窍促... if (InvenX >= pInventory->getWidth() || InvenY >= pInventory->getHeight()) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); return; } Item* pItem = pInventory->getItem(InvenX, InvenY); Item* pExtraSlotItem = pPC->getExtraInventorySlotItem(); // 歹窍绊磊 窍绰 酒捞袍捞 绝芭唱, 捞固 付快胶俊 购啊啊 嘿绢乐促搁 // 甸 荐 绝促. if (pItem == NULL || pExtraSlotItem != NULL) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); return; } // 老馆利牢 酒捞袍 付快胶 歹窍扁 风凭 if (ItemOID != 0) { // OID啊 老摹窍瘤 臼栏搁 帮鄂窍促... if (pItem->getObjectID() != ItemOID) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); return; } pInventory->deleteItem(pItem->getObjectID()); pPC->addItemToExtraInventorySlot(pItem); //pItem->save(pPC->getName(), STORAGE_EXTRASLOT, 0, 0, 0); // item历厘 弥利拳. by sigi. 2002.5.13 char pField[80]; sprintf(pField, "Storage=%d, StorageID=0", STORAGE_EXTRASLOT); pItem->tinysave(pField); TradeManager* pTradeManager = pZone->getTradeManager(); TradeInfo* pInfo = pTradeManager->getTradeInfo(pCreature->getName()); if (pInfo != NULL && pInfo->getStatus() == TRADE_FINISH) { GCTradeVerify gcTradeVerify; gcTradeVerify.setCode(GC_TRADE_VERIFY_CODE_INVENTORY_TO_MOUSE_OK); pPlayer->sendPacket(&gcTradeVerify); } } // 般摹绰 酒捞袍 盒府窍扁 风凭 else { // 般摹绰 酒捞袍捞 酒聪芭唱, 泅犁 箭磊啊 2 固父捞扼搁 盒府且 荐 绝促. if (!isStackable(pItem) || pItem->getNum() < 2 || (pItem->getItemClass() == Item::ITEM_CLASS_MOON_CARD && pItem->getItemType() == 2 && pItem->getNum() == 99)) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); return; } // 扁粮狼 酒捞袍阑 官帕栏肺 鞍篮 酒捞袍阑 积己茄促. Item::ItemClass IClass = pItem->getItemClass(); ItemType_t IType = pItem->getItemType(); const list<OptionType_t>& OType = pItem->getOptionTypeList(); Item* pNewItem = g_pItemFactoryManager->createItem(IClass, IType, OType); Assert(pNewItem != NULL); // 付快胶俊促 歹且 酒捞袍篮 扁粮狼 OID甫 啊廉啊绊, // 牢亥配府俊 巢阑 酒捞袍篮 货肺款 OID甫 罐酒具 茄促. Zone* pZone = pPC->getZone(); Assert(pZone != NULL); ObjectRegistry& OR = pZone->getObjectRegistry(); OR.registerObject(pNewItem); // 牢亥配府俊 巢酒乐绰 酒捞袍狼 箭磊绰 盔贰 箭磊俊辑 1阑 猾 箭磊啊 等促. // 扁粮狼 酒捞袍篮 付快胶肺 颗败脸栏骨肺, 箭磊啊 1捞 等促. // 牢亥配府俊辑 付快胶肺 颗败柳 酒捞袍阑 昏力窍绊, // 货肺 积己等 酒捞袍阑 歹茄促. pInventory->deleteItem(pItem->getObjectID()); pPC->addItemToExtraInventorySlot(pItem); int NewNum = pItem->getNum() - 1; pNewItem->setNum(NewNum); pItem->setNum(1); pInventory->addItem(InvenX, InvenY, pNewItem); // 崔扼柳 困摹 沥焊甫 技捞宏茄促... //pItem->save(pPC->getName(), STORAGE_EXTRASLOT, 0, 0, 0); // item历厘 弥利拳. by sigi. 2002.5.13 char pField[80]; sprintf(pField, "Num=%d, Storage=%d, StorageID=0", 1, STORAGE_EXTRASLOT); pItem->tinysave(pField); pNewItem->create(pPC->getName(), STORAGE_INVENTORY, 0, InvenX, InvenY); //pNewItem->setNum(NewNum); // 困俊辑 沁绰单 肚 窍匙. -_-; //pNewItem->save(pPC->getName(), STORAGE_INVENTORY, 0, InvenX, InvenY); // item历厘 弥利拳. by sigi. 2002.5.13 sprintf(pField, "Num=%d, Storage=%d, StorageID=0", NewNum, STORAGE_INVENTORY); pNewItem->tinysave(pField); // 努扼捞攫飘俊霸绰 GCCreateItem 菩哦阑 捞侩秦 // 牢亥配府俊 货肺捞(?) 积己等 酒捞袍俊 措茄 沥焊甫 焊郴霖促. GCCreateItem gcCreateItem; gcCreateItem.setObjectID(pNewItem->getObjectID()); gcCreateItem.setItemClass((BYTE)pNewItem->getItemClass()); gcCreateItem.setItemType(pNewItem->getItemType()); gcCreateItem.setOptionType(pNewItem->getOptionTypeList()); gcCreateItem.setDurability(pNewItem->getDurability()); gcCreateItem.setSilver(pNewItem->getSilver()); gcCreateItem.setEnchantLevel(pNewItem->getEnchantLevel()); gcCreateItem.setItemNum(pNewItem->getNum()); gcCreateItem.setInvenX(InvenX); gcCreateItem.setInvenY(InvenY); pPlayer->sendPacket(&gcCreateItem); } #endif // __GAME_SERVER__ __END_DEBUG_EX __END_CATCH}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?