cgridemotorcyclehandler.cpp
来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 148 行
CPP
148 行
//////////////////////////////////////////////////////////////////////////////// Filename : CGRideMotorCycleHandler.cc// Written By : elca@ewestsoft.com// Description ://////////////////////////////////////////////////////////////////////////////#include "CGRideMotorCycle.h"#ifdef __GAME_SERVER__ #include "GamePlayer.h" #include "SkillHandlerManager.h" #include "Creature.h" #include "Effect.h" #include "ZoneUtil.h" #include "RelicUtil.h" #include "item/Motorcycle.h" #include "CreatureUtil.h" #include "Gpackets/GCRideMotorCycle.h" #include "Gpackets/GCRideMotorCycleOK.h" #include "Gpackets/GCRideMotorCycleFailed.h"#endif // __GAME_SERVER__////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGRideMotorCycleHandler::execute (CGRideMotorCycle* pPacket , Player* pPlayer) throw (Error){ __BEGIN_TRY __BEGIN_DEBUG_EX #ifdef __GAME_SERVER__ Assert(pPacket != NULL); Assert(pPlayer != NULL); try { GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); if (pGamePlayer->getPlayerStatus() == GPS_NORMAL) { Creature* pCreature = pGamePlayer->getCreature(); bool Success = false; Assert (pCreature != NULL); if (pCreature->isSlayer()) { Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); Zone* pZone = pSlayer->getZone(); Motorcycle* pMotor = pSlayer->getMotorcycle(); ZoneCoord_t X = pPacket->getX(); ZoneCoord_t Y = pPacket->getY(); // 谅钎啊 官款靛甫 逞绢啊搁 救 等促. if (!isValidZoneCoord(pZone, X, Y)) { GCRideMotorCycleFailed _GCRideMotorCycleFailed; pGamePlayer->sendPacket(&_GCRideMotorCycleFailed); return; } Tile& rTile = pZone->getTile(X, Y); Item* pItem = rTile.getItem(); if (pSlayer->hasRelicItem()||pSlayer->isFlag( Effect::EFFECT_CLASS_REFINIUM_TICKET ) || pSlayer->isFlag( Effect::EFFECT_CLASS_HAS_FLAG ) || pSlayer->isFlag( Effect::EFFECT_CLASS_HAS_SWEEPER) ) { //cout << "己拱阑 啊柳 惑怕俊辑绰 坷配官捞甫 呕 荐 绝嚼聪促" << endl; GCRideMotorCycleFailed _GCRideMotorCycleFailed; pGamePlayer->sendPacket(&_GCRideMotorCycleFailed); return; } if (pItem == NULL || pItem->getItemClass() != Item::ITEM_CLASS_MOTORCYCLE) { //cout << "Item NULL or Not Motorcycle" << endl; GCRideMotorCycleFailed _GCRideMotorCycleFailed; pGamePlayer->sendPacket(&_GCRideMotorCycleFailed); return; } if (pSlayer->isDead() || pSlayer->isFlag(Effect::EFFECT_CLASS_COMA)) { //cout << "Is Dead or Coma" << endl; GCRideMotorCycleFailed _GCRideMotorCycleFailed; pGamePlayer->sendPacket(&_GCRideMotorCycleFailed); return; } if (pItem->getItemClass() == Item::ITEM_CLASS_MOTORCYCLE && pMotor == NULL) { Motorcycle* pMotorcycle = dynamic_cast<Motorcycle*>(pItem); ItemID_t TargetItemID = pMotorcycle->getItemID(); Inventory* pInventory = pSlayer->getInventory(); if (pInventory->hasKey(TargetItemID)) { pSlayer->setMotorcycle(pMotorcycle); GCRideMotorCycle _GCRideMotorCycle; GCRideMotorCycleOK _GCRideMotorCycleOK; _GCRideMotorCycle.setObjectID(pSlayer->getObjectID()); _GCRideMotorCycle.setTargetObjectID(pMotorcycle->getObjectID()); _GCRideMotorCycleOK.setObjectID(pMotorcycle->getObjectID()); // 粮俊辑 酒捞袍阑 瘤快绊... pZone->deleteItem(pItem, X, Y); // OK 菩哦阑 敲饭捞绢俊霸 焊郴林绊... pGamePlayer->sendPacket(&_GCRideMotorCycleOK); // 葛磐荤捞努阑 爬促绰 沥焊甫 宏肺靛某胶泼 pZone->broadcastPacket(&_GCRideMotorCycle); Success = true; if ( pSlayer->getPetInfo() != NULL ) { pSlayer->setPetInfo( NULL ); sendPetInfo( pGamePlayer, true ); } } else { //cout << "Not has key : " << TargetItemID << endl; } } } if (!Success) { GCRideMotorCycleFailed _GCRideMotorCycleFailed; pGamePlayer->sendPacket(&_GCRideMotorCycleFailed); } } } catch (Throwable & t) { //cout << t.toString() << endl; }#endif // __GAME_SERVER__ __END_DEBUG_EX __END_CATCH}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?