cgmousetostashhandler.cpp
来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 222 行
CPP
222 行
//////////////////////////////////////////////////////////////////////////////// Filename : CGMouseToStashHandler.cc// Written By : elca@ewestsoft.com// Description ://////////////////////////////////////////////////////////////////////////////#include "CGMouseToStash.h"#ifdef __GAME_SERVER__ #include "GamePlayer.h" #include "Zone.h" #include "PlayerCreature.h" #include "Stash.h" #include "Item.h" #include "ItemUtil.h" #include "ItemInfo.h" #include "ItemInfoManager.h" #include "LogClient.h" #include "RelicUtil.h" #include "CreatureUtil.h" #include "item/Potion.h" #include "item/Magazine.h" #include "item/PetItem.h" #include "Gpackets/GCCannotAdd.h" #include <stdio.h>#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGMouseToStashHandler::execute (CGMouseToStash* pPacket , Player* pPlayer) throw (ProtocolException, Error){ __BEGIN_TRY __BEGIN_DEBUG_EX __BEGIN_DEBUG#ifdef __GAME_SERVER__ Assert(pPacket != NULL); Assert(pPlayer != NULL); try { GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Creature* pCreature = pGamePlayer->getCreature(); PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature); Stash* pStash = pPC->getStash(); Item* pMouseItem = pPC->getExtraInventorySlotItem(); bool Success = false; // 付快胶俊 酒捞袍捞 崔妨乐唱? // 蜡聪农 酒捞袍篮 焊包窃俊 给 持绰促. // canPutInStash肺 extract 2003. 3. 3 if (pMouseItem == NULL || !canPutInStash( pMouseItem )// || pMouseItem->isUnique()) ) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); return; } ObjectID_t MouseItemOID = pMouseItem->getObjectID(); BYTE rack = pPacket->getRack(); BYTE index = pPacket->getIndex(); // 沥惑利牢 谅钎蔼牢啊? 坷宏璃飘 酒捞叼绰 老摹窍唱? // Relic篮 焊包窃俊 历厘瞪 荐 绝促. if (rack >= STASH_RACK_MAX || index >= STASH_INDEX_MAX || rack >= pPC->getStashNum() || MouseItemOID != pPacket->getObjectID() ) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); return; } // 持阑妨绰 Stash Slot狼 Item阑 罐酒柯促. Item* pStashItem = pStash->get(rack, index); // 弊 厘家俊 酒捞袍捞 乐促搁 if (pStashItem != NULL) { // 酒捞袍 努贰胶啊 鞍阑锭 箭磊甫 棵妨 林绊 付快胶俊 乐绰 巴篮 绝矩促. if (isSameItem(pMouseItem, pStashItem) && isStackable(pMouseItem)) { int MaxStack = ItemMaxStack[pMouseItem->getItemClass()]; if (pMouseItem->getNum() + pStashItem->getNum() > MaxStack) { ItemNum_t CurrentNum = pStashItem->getNum(); ItemNum_t AddNum = pMouseItem->getNum(); pStashItem->setNum(MaxStack); pMouseItem->setNum(AddNum + CurrentNum - MaxStack); // 官诧 沥焊甫 DB俊 历厘茄促. //pStashItem->save(pPC->getName(), STORAGE_STASH, 0, rack, index); // item历厘 弥利拳. by sigi. 2002.5.13 char pField[80]; sprintf(pField, "Num=%d, Storage=%d, X=%d, Y=%d", MaxStack, STORAGE_STASH, rack, index); pStashItem->tinysave(pField); //pMouseItem->save(pPC->getName(), STORAGE_EXTRASLOT, 0, 0, 0); // item历厘 弥利拳. by sigi. 2002.5.13 sprintf(pField, "Num=%d, Storage=%d", pMouseItem->getNum(), STORAGE_EXTRASLOT); pMouseItem->tinysave(pField); log(LOG_STASH_ADD_ITEM, pPC->getName(), "", pMouseItem->toString()); Success = true; } else { pPC->deleteItemFromExtraInventorySlot();// pMouseItem->whenPCLost(pPC); pStashItem->setNum(pStashItem->getNum() + pMouseItem->getNum()); //pStashItem->save(pPC->getName(), STORAGE_STASH, 0, rack, index); // item历厘 弥利拳. by sigi. 2002.5.13 char pField[80]; sprintf(pField, "Num=%d, Storage=%d, X=%d, Y=%d", pStashItem->getNum(), STORAGE_STASH, rack, index); pStashItem->tinysave(pField); log(LOG_STASH_ADD_ITEM, pPC->getName(), "", pMouseItem->toString()); // 滴俺狼 酒捞袍捞 窍唱肺 登菌栏聪鳖, // 歹窍扼绊 柯 酒捞袍篮 昏力秦 霖促. pMouseItem->destroy(); SAFE_DELETE(pMouseItem); Success = true; } } else // 酒捞袍 努贰胶啊 促福芭唱, 阶捞绰 酒捞袍捞 酒聪扼搁. { // 焊包窃俊 乐带 巴阑 付快胶俊 崔酒霖促. pPC->deleteItemFromExtraInventorySlot(); pPC->addItemToExtraInventorySlot(pStashItem);// pStashItem->whenPCTake( pPC ); // Stash俊 付快胶俊 崔妨乐带 酒捞袍阑 持绰促. pStash->remove(rack, index); pStash->insert(rack , index , pMouseItem);// pMouseItem->whenPCLost( pPC ); //pStashItem->save(pPC->getName(), STORAGE_EXTRASLOT, 0, 0, 0); // item历厘 弥利拳. by sigi. 2002.5.13 char pField[80]; sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT); pStashItem->tinysave(pField); //pMouseItem->save(pPC->getName(), STORAGE_STASH, 0, rack, index); // item历厘 弥利拳. by sigi. 2002.5.13 sprintf(pField, "Storage=%d, X=%d, Y=%d", STORAGE_STASH, rack, index); pMouseItem->tinysave(pField); log(LOG_STASH_REMOVE_ITEM, pPC->getName(), "", pStashItem->toString()); log(LOG_STASH_ADD_ITEM, pPC->getName(), "", pMouseItem->toString()); Success = true; } } else // 弊 厘家俊 酒捞袍捞 绝促搁. { // Stash俊 漂沥 酒捞袍阑 持绰促. pStash->insert(rack , index , pMouseItem); pPC->deleteItemFromExtraInventorySlot();// pMouseItem->whenPCLost(pPC); //pMouseItem->save(pPC->getName(), STORAGE_STASH, 0, rack, index); // item历厘 弥利拳. by sigi. 2002.5.13 char pField[80]; sprintf(pField, "Storage=%d, X=%d, Y=%d", STORAGE_STASH, rack, index); pMouseItem->tinysave(pField); log(LOG_STASH_ADD_ITEM, pPC->getName(), "", pMouseItem->toString()); Success = true; } if (!Success) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); } else { if ( pMouseItem != NULL && pMouseItem->getItemClass() == Item::ITEM_CLASS_PET_ITEM ) { PetItem* pPetItem = dynamic_cast<PetItem*>(pMouseItem); if ( pPetItem != NULL && pPetItem->getPetInfo() != NULL && pPetItem->getPetInfo() == pPC->getPetInfo() ) { pPC->setPetInfo(NULL); pPC->initAllStatAndSend(); sendPetInfo( pGamePlayer, true ); } } } } catch (Throwable & t) { //cout << t.toString(); }#endif // __GAME_SERVER__ __END_DEBUG __END_DEBUG_EX __END_CATCH}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?