cgsilvercoatinghandler.cpp
来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 154 行
CPP
154 行
//////////////////////////////////////////////////////////////////////////////// Filename : CGSilverCoatingHandler.cpp// Written By : 辫己刮// Description ://////////////////////////////////////////////////////////////////////////////#include "CGSilverCoating.h"#ifdef __GAME_SERVER__ #include "GamePlayer.h" #include "NPC.h" #include "Slayer.h" #include "Vampire.h" #include "ItemInfo.h" #include "ItemInfoManager.h" #include "PriceManager.h" #include "LogClient.h" #include "Gpackets/GCNPCResponse.h" #include <stdio.h>#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGSilverCoatingHandler::execute (CGSilverCoating* 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(); Creature* pPC = dynamic_cast<GamePlayer*>(pPlayer)->getCreature(); bool bSlayer = true; Gold_t playerMoney = 0; Price_t coatingPrice = 0; Item* pItem = NULL; Slayer* pSlayer = NULL; Vampire* pVampire = NULL; int storage = 0; int X = 0; int Y = 0; GCNPCResponse response; // 敲饭捞绢啊 浇饭捞绢牢瘤 轨颇捞绢牢瘤 备盒. if (pPC->isSlayer()) bSlayer = true; else if (pPC->isVampire()) bSlayer = false; // 敲饭捞绢啊 内泼窍妨绊 窍绰 酒捞袍阑 啊瘤绊 乐绰瘤 八荤 if (bSlayer) { pSlayer = dynamic_cast<Slayer*>(pPC); playerMoney = pSlayer->getGold(); pItem = pSlayer->findItemOID(ITEMOID, storage, X, Y); } else { pVampire = dynamic_cast<Vampire*>(pPC); playerMoney = pVampire->getGold(); pItem = pVampire->findItemOID(ITEMOID, storage, X, Y); } // 酒捞袍捞 绝促搁 寸楷洒 内泼且 荐 绝促. if (pItem == NULL) { response.setCode(NPC_RESPONSE_SILVER_COATING_FAIL_ITEM_NOT_EXIST); pPlayer->sendPacket(&response); return; } // 内泼窍妨绰 酒捞袍捞 内泼瞪 荐 绝绰 酒捞袍捞扼搁... switch (pItem->getItemClass()) { case Item::ITEM_CLASS_BLADE: case Item::ITEM_CLASS_SWORD: case Item::ITEM_CLASS_CROSS: case Item::ITEM_CLASS_MACE: break; default: response.setCode(NPC_RESPONSE_SILVER_COATING_FAIL_ITEM_TYPE); pPlayer->sendPacket(&response); return; } coatingPrice = g_pPriceManager->getSilverCoatingPrice(pItem); if (coatingPrice > playerMoney) { response.setCode(NPC_RESPONSE_SILVER_COATING_FAIL_MONEY); pPlayer->sendPacket(&response); return; } // 弥措 篮 档陛樊阑 掘绢客辑... 档陛茄促. ItemInfo* pItemInfo = g_pItemInfoManager->getItemInfo(pItem->getItemClass(), pItem->getItemType()); pItem->setSilver(pItemInfo->getMaxSilver()); // 捣阑 临牢促. if (bSlayer) { //pSlayer->setGoldEx(playerMoney - coatingPrice); // by sigi. 2002.9.4 pSlayer->decreaseGoldEx(coatingPrice); //log(LOG_REPAIR_ITEM, pSlayer->getName(), "", pItem->toString()); } else { //pVampire->setGoldEx(playerMoney - coatingPrice); // by sigi. 2002.9.4 pVampire->decreaseGoldEx(coatingPrice); //log(LOG_REPAIR_ITEM, pVampire->getName(), "", pItem->toString()); } // silver父 历厘窍搁 等促. // 酒捞袍 历厘 弥利拳. by sigi. 2002.5.13 char pField[80]; sprintf(pField, "Silver=%d", pItem->getSilver()); pItem->tinysave(pField); // 酒捞袍阑 篮栏肺 内泼沁促绰 沥焊甫 DB俊促啊 历厘秦霖促. // 窜 盒疙洒 STORAGE_STASH啊 倒酒棵 荐 乐瘤父, // 焊包窃俊 乐绰 巴阑 荐府茄促绰 巴篮 富捞 救 登骨肺, // 历厘窍瘤 臼绰促. /* 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_SILVER_COATING_OK); response.setParameter(playerMoney-coatingPrice); pPlayer->sendPacket(&response); #endif __END_DEBUG_EX __END_CATCH}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?