cgrequestnewbieitemhandler.cpp
来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 227 行
CPP
227 行
//////////////////////////////////////////////////////////////////////////////// Filename : CGRequestNewbieItem.cpp// Written By : excel96// Description ://////////////////////////////////////////////////////////////////////////////#include "CGRequestNewbieItem.h"#ifdef __GAME_SERVER__ #include "GamePlayer.h" #include "Slayer.h" #include "FlagSet.h" #include "Item.h" #include "Zone.h" #include "ItemFactoryManager.h" #include "item/Magazine.h" #include "Gpackets/GCCreateItem.h"#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGRequestNewbieItemHandler::execute (CGRequestNewbieItem* pPacket , Player* pPlayer) throw (ProtocolException , Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__ Assert(pPacket != NULL); Assert(pPlayer != NULL); GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Creature* pPC = pGamePlayer->getCreature(); Zone* pZone = pPC->getZone(); BYTE IClass = pPacket->getItemClass(); //////////////////////////////////////////////////////////// // 檬焊磊啊 浇饭捞绢啊 酒囱 版快绰 绝促. //////////////////////////////////////////////////////////// if (!pPC->isSlayer()) return; Slayer* pSlayer = dynamic_cast<Slayer*>(pPC); FlagSet* pFlagSet = pSlayer->getFlagSet(); Inventory* pInventory = pSlayer->getInventory(); //////////////////////////////////////////////////////////// // 柳楼 檬焊牢瘤甫 八荤茄促. // 0锅阑 檬焊 酒捞袍 罐疽促 敲贰弊肺 沥沁促. // 捞巴篮 绢叼鳖瘤唱 东户 内靛促. //////////////////////////////////////////////////////////// if (pFlagSet->isOn(0)) return; //////////////////////////////////////////////////////////// // 阿 酒捞袍 努贰胶俊 蝶扼 酒捞袍阑 积己茄促. //////////////////////////////////////////////////////////// Item* pItem[10] = { NULL, }; int i = 0; for (i=0; i<10; i++) pItem[i] = NULL; list<OptionType_t> optionNULL; if (IClass == Item::ITEM_CLASS_SWORD) { // 公扁 pItem[0] = CREATE_ITEM(Item::ITEM_CLASS_SWORD, 0, optionNULL); // 器记 pItem[1] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, optionNULL); pItem[2] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, optionNULL); pItem[3] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, optionNULL); pItem[4] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 4, optionNULL); } else if (IClass == Item::ITEM_CLASS_BLADE) { // 公扁 pItem[0] = CREATE_ITEM(Item::ITEM_CLASS_BLADE, 0, optionNULL); // 器记 pItem[1] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, optionNULL); pItem[2] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, optionNULL); pItem[3] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, optionNULL); pItem[4] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 4, optionNULL); } else if (IClass == Item::ITEM_CLASS_CROSS) { // 公扁 pItem[0] = CREATE_ITEM(Item::ITEM_CLASS_CROSS, 0, optionNULL); // 器记 pItem[1] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, optionNULL); pItem[2] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 4, optionNULL); pItem[3] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 4, optionNULL); pItem[4] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 4, optionNULL); } else if (IClass == Item::ITEM_CLASS_MACE) { // 公扁 pItem[0] = CREATE_ITEM(Item::ITEM_CLASS_MACE, 0, optionNULL); // 器记 pItem[1] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, optionNULL); pItem[2] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 4, optionNULL); pItem[3] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 4, optionNULL); pItem[4] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 4, optionNULL); } else if (IClass == Item::ITEM_CLASS_AR) { // 公扁 pItem[0] = CREATE_ITEM(Item::ITEM_CLASS_AR, 0, optionNULL); // 器记 pItem[1] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, optionNULL); pItem[2] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, optionNULL); pItem[3] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 4, optionNULL); pItem[4] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 4, optionNULL); // 藕芒 pItem[5] = CREATE_ITEM(Item::ITEM_CLASS_MAGAZINE, 1, optionNULL); dynamic_cast<Magazine*>(pItem[5])->setNum(9); } else if (IClass == Item::ITEM_CLASS_SR) { // 公扁 pItem[0] = CREATE_ITEM(Item::ITEM_CLASS_SR, 0, optionNULL); // 器记 pItem[1] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, optionNULL); pItem[2] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, optionNULL); pItem[3] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 4, optionNULL); pItem[4] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 4, optionNULL); // 藕芒 pItem[5] = CREATE_ITEM(Item::ITEM_CLASS_MAGAZINE, 4, optionNULL); dynamic_cast<Magazine*>(pItem[5])->setNum(9); } else if (IClass == Item::ITEM_CLASS_SG) { // 公扁 pItem[0] = CREATE_ITEM(Item::ITEM_CLASS_SG, 0, optionNULL); // 器记 pItem[1] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, optionNULL); pItem[2] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, optionNULL); pItem[3] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 4, optionNULL); pItem[4] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 4, optionNULL); // 藕芒 pItem[5] = CREATE_ITEM(Item::ITEM_CLASS_MAGAZINE, 0, optionNULL); dynamic_cast<Magazine*>(pItem[5])->setNum(9); } else if (IClass == Item::ITEM_CLASS_SMG) { // 公扁 pItem[0] = CREATE_ITEM(Item::ITEM_CLASS_SMG, 0, optionNULL); // 器记 pItem[1] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, optionNULL); pItem[2] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, optionNULL); pItem[3] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 4, optionNULL); pItem[4] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 4, optionNULL); // 藕芒 pItem[5] = CREATE_ITEM(Item::ITEM_CLASS_MAGAZINE, 3, optionNULL); dynamic_cast<Magazine*>(pItem[5])->setNum(9); } else { return; } //////////////////////////////////////////////////////////// // 积己茄 酒捞袍阑 殿废窍绊, DB俊 历厘窍绊, // 努扼捞攫飘俊霸 沥焊甫 朝妨霖促. //////////////////////////////////////////////////////////// ObjectRegistry& OR = pZone->getObjectRegistry(); TPOINT pt; GCCreateItem gcCreateItem; for (i=0; i<10; i++) { if (pItem[i] != NULL) { OR.registerObject(pItem[i]); if (pInventory->addItem(pItem[i], pt)) { pItem[i]->create(pSlayer->getName(), STORAGE_INVENTORY, 0, pt.x, pt.y); gcCreateItem.setObjectID(pItem[i]->getObjectID()); gcCreateItem.setItemClass(pItem[i]->getItemClass()); gcCreateItem.setItemType(pItem[i]->getItemType()); gcCreateItem.setOptionType(pItem[i]->getOptionTypeList()); gcCreateItem.setDurability(pItem[i]->getDurability()); gcCreateItem.setSilver(pItem[i]->getSilver()); gcCreateItem.setItemNum(pItem[i]->getNum()); gcCreateItem.setInvenX(pt.x); gcCreateItem.setInvenY(pt.y); pPlayer->sendPacket(&gcCreateItem); } else { SAFE_DELETE(pItem[i]); } } } //////////////////////////////////////////////////////////// // 酒捞袍阑 罐疽栏聪, 泅犁 FlagSet阑 历厘茄促. // 0锅阑 檬焊 酒捞袍 罐疽促 敲贰弊肺 沥沁促. // 捞巴篮 绢叼鳖瘤唱 东户 内靛促. //////////////////////////////////////////////////////////// pFlagSet->turnOn(FLAGSET_RECEIVE_NEWBIE_ITEM); if (IClass == Item::ITEM_CLASS_SWORD || IClass == Item::ITEM_CLASS_BLADE) { // 公荤老 版快 1 pFlagSet->turnOn( FLAGSET_RECEIVE_NEWBIE_ITEM_FIGHTER ); } else if (IClass == Item::ITEM_CLASS_CROSS || IClass == Item::ITEM_CLASS_MACE) { // 己流磊老 版快 2 pFlagSet->turnOn( FLAGSET_RECEIVE_NEWBIE_ITEM_CLERIC ); } else { // 焙牢老 版快 3 pFlagSet->turnOn( FLAGSET_RECEIVE_NEWBIE_ITEM_GUNNER ); } pFlagSet->save(pSlayer->getName());#endif __END_DEBUG_EX __END_CATCH}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?