cgrequestrepairhandler.cpp
来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 612 行 · 第 1/2 页
CPP
612 行
//////////////////////////////////////////////////////////////////////////////// Filename : CGRequestRepairHandler.cpp// Written By : 辫己刮// Description ://////////////////////////////////////////////////////////////////////////////#include "CGRequestRepair.h"#ifdef __GAME_SERVER__ #include "GamePlayer.h" #include "NPC.h" #include "Slayer.h" #include "Vampire.h" #include "Ousters.h" #include "ItemUtil.h" #include "ItemInfo.h" #include "ItemInfoManager.h" #include "PriceManager.h" #include "LogClient.h" #include "ZoneUtil.h" #include "item/Key.h" #include "item/SlayerPortalItem.h" #include "item/OustersSummonItem.h" #include "Gpackets/GCNPCResponse.h" #include <stdio.h>#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGRequestRepairHandler::execute (CGRequestRepair* pPacket , Player* pPlayer) throw (ProtocolException , Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__ Assert(pPacket != NULL); Assert(pPlayer != NULL); ObjectID_t ITEMOID = pPacket->getObjectID(); GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Creature* pPC = pGamePlayer->getCreature(); bool bSlayer = false; bool bVampire = false; bool bOusters = false; Item* pItem = NULL; // 敲饭捞绢啊 浇饭捞绢牢瘤 轨颇捞绢牢瘤 备盒. if (pPC->isSlayer()) bSlayer = true; else if (pPC->isVampire()) bVampire = true; else if (pPC->isOusters()) bOusters = true; else throw ProtocolException("CGRequestRepairHandler::execute() : Unknown player creature!"); if (ITEMOID == 0) { // ObjectID啊 0捞扼搁 葛电 酒捞袍阑 荐府窍绊磊 窍绰 巴捞促. executeAll(pPacket, pPlayer); } else { if (bSlayer) pItem = (dynamic_cast<Slayer*>(pPC))->findItemOID(ITEMOID); else if (bVampire) pItem = (dynamic_cast<Vampire*>(pPC))->findItemOID(ITEMOID); else if (bOusters) pItem = (dynamic_cast<Ousters*>(pPC))->findItemOID(ITEMOID); // 敲饭捞绢啊 酒捞袍阑 啊瘤绊 乐促搁 if (pItem != NULL) { // 弊 酒捞袍捞 葛磐 荤捞努 虐扼搁... if (pItem->getItemClass() == Item::ITEM_CLASS_KEY && pItem->getItemType() == 2) { executeMotorcycle(pPacket, pPlayer); return; } else executeNormal(pPacket, pPlayer); } else { // 酒捞袍捞 绝栏聪, 寸楷洒 荐府且 荐 绝促. GCNPCResponse response; response.setCode(NPC_RESPONSE_REPAIR_FAIL_ITEM_NOT_EXIST); pPlayer->sendPacket(&response); } } #endif __END_DEBUG_EX __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 老馆 酒捞袍阑 贸府茄促.//////////////////////////////////////////////////////////////////////////////void CGRequestRepairHandler::executeNormal (CGRequestRepair* pPacket , Player* pPlayer) throw (ProtocolException , Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__ ObjectID_t ITEMOID = pPacket->getObjectID(); Creature* pPC = dynamic_cast<GamePlayer*>(pPlayer)->getCreature(); bool bSlayer = false; bool bVampire = false; bool bOusters = false; Gold_t playerMoney = 0; Price_t repairPrice = 0; Item* pItem = NULL; Slayer* pSlayer = NULL; Vampire* pVampire = NULL; Ousters* pOusters = NULL; int storage = 0; int X = 0; int Y = 0; GCNPCResponse response; // 敲饭捞绢啊 浇饭捞绢牢瘤 轨颇捞绢牢瘤 备盒. if (pPC->isSlayer()) bSlayer = true; else if (pPC->isVampire()) bVampire = true; else if (pPC->isOusters()) bOusters = true; // 敲饭捞绢啊 荐府窍妨绊 窍绰 酒捞袍阑 啊瘤绊 乐绰瘤 八荤 if (bSlayer) { pSlayer = dynamic_cast<Slayer*>(pPC); playerMoney = pSlayer->getGold(); pItem = pSlayer->findItemOID(ITEMOID, storage, X, Y); } else if (bVampire) { pVampire = dynamic_cast<Vampire*>(pPC); playerMoney = pVampire->getGold(); pItem = pVampire->findItemOID(ITEMOID, storage, X, Y); } else if (bOusters) { pOusters = dynamic_cast<Ousters*>(pPC); playerMoney = pOusters->getGold(); pItem = pOusters->findItemOID(ITEMOID, storage, X, Y); } // 敲饭捞绢啊 荐府窍妨绊 窍绰 酒捞袍阑 啊瘤绊 乐绰瘤 // 惑困俊辑 八荤甫 窍扁 锭巩俊, pItem捞 澄老府绰 绝促. // 窜, 荐府且 荐 绝绰 酒捞袍牢瘤甫 八荤茄促. if (isRepairableItem(pItem) == false) { response.setCode(NPC_RESPONSE_REPAIR_FAIL_ITEM_TYPE); pPlayer->sendPacket(&response); return; } repairPrice = g_pPriceManager->getRepairPrice(pItem); if (repairPrice > playerMoney) { response.setCode(NPC_RESPONSE_REPAIR_FAIL_MONEY); pPlayer->sendPacket(&response); return; } // 荐府茄促. repairItem(pItem); // 捣阑 临牢促. if (bSlayer) { //pSlayer->setGoldEx(playerMoney-repairPrice); // by sigi. 2002.9.4 pSlayer->decreaseGoldEx(repairPrice); log(LOG_REPAIR_ITEM, pSlayer->getName(), "", pItem->toString()); } else if (bVampire) { // by sigi. 2002.9.4 pVampire->decreaseGoldEx(repairPrice); log(LOG_REPAIR_ITEM, pVampire->getName(), "", pItem->toString()); } else if (bOusters) { // by sigi. 2002.9.4 pOusters->decreaseGoldEx(repairPrice); log(LOG_REPAIR_ITEM, pOusters->getName(), "", pItem->toString()); } // 酒捞袍阑 荐府沁促绰 沥焊甫 DB俊促啊 历厘秦霖促. // 窜 盒疙洒 STORAGE_STASH啊 倒酒棵 荐 乐瘤父, // 焊包窃俊 乐绰 巴阑 荐府茄促绰 巴篮 富捞 救 登骨肺, // 历厘窍瘤 臼绰促. // item历厘 弥利拳. by sigi. 2002.5.17 if (repairPrice>0) { char pField[80]; if (pItem->getItemClass()==Item::ITEM_CLASS_SLAYER_PORTAL_ITEM) { SlayerPortalItem* pSPItem = dynamic_cast<SlayerPortalItem*>(pItem); sprintf(pField, "Charge=%d", pSPItem->getCharge()); } else if (pItem->getItemClass()==Item::ITEM_CLASS_OUSTERS_SUMMON_ITEM) { OustersSummonItem* pOSItem = dynamic_cast<OustersSummonItem*>(pItem); sprintf(pField, "Charge=%d", pOSItem->getCharge()); } else { sprintf(pField, "Durability=%d", pItem->getDurability()); } pItem->tinysave(pField); } /* // 构啊 灯电.. durability父 官操搁 等促. // 辟单.. ItemObject俊 Durability field啊 绝绰 巴档 乐绊 // Charge甫 历厘秦具 窍绰 巴档 乐促. // 弊贰辑.. 老窜篮 葛滴 促 历厘窍绰 save甫 捞侩窍档废 茄促. switch (storage) { case STORAGE_INVENTORY: { pItem->save(pPC->getName(), STORAGE_INVENTORY, 0, X, Y); } break; case STORAGE_GEAR: { if (bSlayer) { pItem->save(pSlayer->getName(), STORAGE_GEAR, 0, X, 0); } else { pItem->save(pVampire->getName(), STORAGE_GEAR, 0, X, 0); } } break; default: break; } */ // OK 菩哦阑 朝妨霖促. response.setCode(NPC_RESPONSE_REPAIR_OK); response.setParameter(playerMoney-repairPrice); pPlayer->sendPacket(&response);#endif __END_DEBUG_EX __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 葛磐 荤捞努阑 贸府茄促.//////////////////////////////////////////////////////////////////////////////void CGRequestRepairHandler::executeMotorcycle (CGRequestRepair* pPacket , Player* pPlayer) throw (ProtocolException , Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__ // 菩哦 沥焊甫 惶酒辰促. ObjectID_t ITEMOID = pPacket->getObjectID(); Creature* pPC = dynamic_cast<GamePlayer*>(pPlayer)->getCreature(); Zone* pZone = pPC->getZone(); Gold_t playerMoney = 0; ZoneCoord_t CenterX = pPC->getX(); ZoneCoord_t CenterY = pPC->getY(); Item* pItem = NULL; bool bSlayer = false; bool bVampire = false; bool bOusters = false; GCNPCResponse response; // 敲饭捞绢啊 浇饭捞绢牢瘤 轨颇捞绢牢瘤 备盒. if (pPC->isSlayer()) bSlayer = true; else if (pPC->isVampire()) bVampire = true; else if (pPC->isOusters()) bOusters = true; else throw ProtocolException("CGRequestRepairHandler::execute() : Unknown player creature!"); // 敲饭捞绢啊 荐府窍妨绊 窍绰 酒捞袍阑 啊瘤绊 乐绰瘤 // 惑困俊辑 八荤甫 窍扁 锭巩俊, pItem捞 澄老府绰 绝促. if (bSlayer) { pItem = (dynamic_cast<Slayer*>(pPC))->findItemOID(ITEMOID); playerMoney = (dynamic_cast<Slayer*>(pPC))->getGold(); } else if (bVampire) { pItem = (dynamic_cast<Vampire*>(pPC))->findItemOID(ITEMOID); playerMoney = (dynamic_cast<Vampire*>(pPC))->getGold(); } else if (bOusters) { pItem = (dynamic_cast<Ousters*>(pPC))->findItemOID(ITEMOID); playerMoney = (dynamic_cast<Ousters*>(pPC))->getGold(); } // 林困 老沥 裹困甫 八祸秦辑, 葛磐 荤捞努捞 乐绰瘤 犬牢茄促. for (ZoneCoord_t zx=CenterX-5; zx<=CenterX+5; zx++)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?