cgreloadfrominventoryhandler.cpp
来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 122 行
CPP
122 行
//////////////////////////////////////////////////////////////////////////////// Filename : CGReloadFromInventoryHandler.cc// Written By : elca@ewestsoft.com// Description ://////////////////////////////////////////////////////////////////////////////#include "CGReloadFromInventory.h"#ifdef __GAME_SERVER__ #include "GamePlayer.h" #include "Zone.h" #include "Slayer.h" #include "Inventory.h" #include "Item.h" #include "ItemUtil.h" #include "ItemInfo.h" #include "ItemInfoManager.h" #include "EffectManager.h" #include "EffectReloadTimer.h" #include "Gpackets/GCCannotUse.h"#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGReloadFromInventoryHandler::execute (CGReloadFromInventory* pPacket , Player* pPlayer) throw (ProtocolException, Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__ Assert(pPacket != NULL); Assert(pPlayer != NULL); try { GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Creature* pCreature = pGamePlayer->getCreature(); Assert(pCreature->isSlayer()); Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); Item* pArmsItem = pSlayer->getWearItem(Slayer::WEAR_RIGHTHAND); ObjectID_t ItemObjectID; CoordInven_t x, y; bool Success = false; Item* pItem = NULL; Inventory* pInventory = NULL; if (pArmsItem != NULL) { if (isArmsWeapon(pArmsItem)) { pInventory = pSlayer->getInventory(); x = pPacket->getX(); y = pPacket->getY(); pItem = pInventory->getItem(x, y); //Assert(pItem != NULL); if (pItem == NULL) { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotUse); return; } // 牢亥配府 浇儿俊 乐绰 酒捞袍狼 Object甫 罐绰促. ItemObjectID = pItem->getObjectID(); if (ItemObjectID != pPacket->getObjectID()) { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotUse); return; } SkillSlot* pVivid = pSlayer->getSkill( SKILL_VIVID_MAGAZINE ); bool hasVivid = (pVivid != NULL) && pVivid->canUse(); if (isSuitableMagazine(pArmsItem, pItem, hasVivid)) Success = true; } } // reload delay啊 乐栏骨肺 effect俊 殿废 矫挪促. EffectManager* pEffectManager = pSlayer->getEffectManager(); if (pEffectManager == NULL) return; if (Success && !pSlayer->isFlag(Effect::EFFECT_CLASS_RELOAD_TIMER)) { EffectReloadTimer* pEffect = new EffectReloadTimer(pSlayer); pEffect->setFromInventory(true); pEffect->setObjectID(ItemObjectID); pEffect->setInventoryXY(x, y); if (pSlayer->hasSkill(SKILL_FAST_RELOAD)) pEffect->setDeadline(7); // 狐弗 reload(0.7檬) else pEffect->setDeadline(2*10); // 焊烹 reload(2sec) pSlayer->setFlag(Effect::EFFECT_CLASS_RELOAD_TIMER); pEffectManager->addEffect(pEffect); } else { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotUse); } } catch (Throwable & t) { //cout << t.toString(); }#endif // __GAME_SERVER__ __END_DEBUG_EX __END_CATCH}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?