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 + -
显示快捷键?