⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 actiongivenewbieitem.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
////////////////////////////////////////////////////////////////////////////////// Filename    : ActionGiveNewbieItem.cpp// Written By  : // Description :////////////////////////////////////////////////////////////////////////////////#include "ActionGiveNewbieItem.h"#include "Slayer.h"#include "FlagSet.h"#include "Item.h"#include "Zone.h"#include "ItemFactoryManager.h"#include "item/Magazine.h"#include "Gpackets/GCCreateItem.h"#include "Gpackets/GCNPCResponse.h"#include "Gpackets/GCModifyInformation.h"#include "GamePlayer.h"////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////void ActionGiveNewbieItem::read (PropertyBuffer & propertyBuffer)    throw (Error){    __BEGIN_TRY	try 	{		// read script type		string ItemType = propertyBuffer.getProperty("Type");		if      (ItemType == "SWORD") m_ItemClass = Item::ITEM_CLASS_SWORD;		else if (ItemType == "BLADE") m_ItemClass = Item::ITEM_CLASS_BLADE;		else if (ItemType == "AR")    m_ItemClass = Item::ITEM_CLASS_AR;		else if (ItemType == "SR")    m_ItemClass = Item::ITEM_CLASS_SR;		else if (ItemType == "SG")    m_ItemClass = Item::ITEM_CLASS_SG;		else if (ItemType == "SMG")   m_ItemClass = Item::ITEM_CLASS_SMG;		else if (ItemType == "CROSS") m_ItemClass = Item::ITEM_CLASS_CROSS;		else if (ItemType == "MACE")  m_ItemClass = Item::ITEM_CLASS_MACE;		else		{			cout << "ActionGiveNewbieItem::read() : Unknown item type" << endl;			throw ("ActionGiveNewbieItem::read() : Unknown item type");		}	} 	catch (NoSuchElementException & nsee)	{		cout << nsee.toString() << endl;		throw Error(nsee.toString());	}	    __END_CATCH}////////////////////////////////////////////////////////////////////////////////// 咀记阑 角青茄促.////////////////////////////////////////////////////////////////////////////////void ActionGiveNewbieItem::execute (Creature * pCreature1 , Creature * pCreature2) 	throw (Error){	__BEGIN_TRY	Assert(pCreature1 != NULL);	Assert(pCreature2 != NULL);	Assert(pCreature1->isNPC());	Assert(pCreature2->isPC());	Player* pPlayer = pCreature2->getPlayer();	Assert(pPlayer != NULL);	// 刚历 努扼捞攫飘甫 困秦 GCNPCResponse甫 焊郴霖促.	GCNPCResponse okpkt;	pPlayer->sendPacket(&okpkt);	// 檬焊磊啊 浇饭捞绢啊 酒囱 版快绰 绝促.	if (!pCreature2->isSlayer()) return;	Slayer*    pSlayer    = dynamic_cast<Slayer*>(pCreature2);	FlagSet*   pFlagSet   = pSlayer->getFlagSet();	Inventory* pInventory = pSlayer->getInventory();	Zone*      pZone      = pSlayer->getZone();	////////////////////////////////////////////////////////////	// 柳楼 檬焊牢瘤甫 八荤茄促.	// 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> nullList;	if (m_ItemClass == Item::ITEM_CLASS_SWORD)	{		// 公扁		pItem[0] = CREATE_ITEM(Item::ITEM_CLASS_SWORD, 0, nullList);		// 器记		pItem[1] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, nullList);		pItem[2] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, nullList);		pItem[3] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, nullList);		pItem[4] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 5, nullList);	}	else if (m_ItemClass == Item::ITEM_CLASS_BLADE)	{		// 公扁		pItem[0] = CREATE_ITEM(Item::ITEM_CLASS_BLADE, 0, nullList);		// 器记		pItem[1] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, nullList);		pItem[2] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, nullList);		pItem[3] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, nullList);		pItem[4] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 5, nullList);	}	else if (m_ItemClass == Item::ITEM_CLASS_CROSS)	{		// 公扁		pItem[0] = CREATE_ITEM(Item::ITEM_CLASS_CROSS, 0, nullList);		// 器记		pItem[1] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, nullList);		pItem[2] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 5, nullList);		pItem[3] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 5, nullList);		pItem[4] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 5, nullList);	}	else if (m_ItemClass == Item::ITEM_CLASS_MACE)	{		// 公扁		pItem[0] = CREATE_ITEM(Item::ITEM_CLASS_MACE, 0, nullList);		// 器记		pItem[1] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, nullList);		pItem[2] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 5, nullList);		pItem[3] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 5, nullList);		pItem[4] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 5, nullList);	}	else if (m_ItemClass == Item::ITEM_CLASS_AR)	{		// 公扁		pItem[0] = CREATE_ITEM(Item::ITEM_CLASS_AR, 0, nullList);		// 器记		pItem[1] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, nullList);		pItem[2] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, nullList);		pItem[3] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 5, nullList);		pItem[4] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 5, nullList);		// 藕芒		pItem[5] = CREATE_ITEM(Item::ITEM_CLASS_MAGAZINE, 2, nullList);		Magazine* pMagazine = dynamic_cast<Magazine*>(pItem[5]);		pMagazine->setNum(9);	}	else if (m_ItemClass == Item::ITEM_CLASS_SR)	{		// 公扁		pItem[0] = CREATE_ITEM(Item::ITEM_CLASS_SR, 0, nullList);		// 器记		pItem[1] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, nullList);		pItem[2] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, nullList);		pItem[3] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 5, nullList);		pItem[4] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 5, nullList);		// 藕芒		pItem[5] = CREATE_ITEM(Item::ITEM_CLASS_MAGAZINE, 6, nullList);		Magazine* pMagazine = dynamic_cast<Magazine*>(pItem[5]);		pMagazine->setNum(9);	}	else if (m_ItemClass == Item::ITEM_CLASS_SG)	{		// 公扁		pItem[0] = CREATE_ITEM(Item::ITEM_CLASS_SG, 0, nullList);		// 器记		pItem[1] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, nullList);		pItem[2] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, nullList);		pItem[3] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 5, nullList);		pItem[4] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 5, nullList);		// 藕芒		pItem[5] = CREATE_ITEM(Item::ITEM_CLASS_MAGAZINE, 0, nullList);		Magazine* pMagazine = dynamic_cast<Magazine*>(pItem[5]);		pMagazine->setNum(9);	}	else if (m_ItemClass == Item::ITEM_CLASS_SMG)	{		// 公扁		pItem[0] = CREATE_ITEM(Item::ITEM_CLASS_SMG, 0, nullList);		// 器记		pItem[1] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, nullList);		pItem[2] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 0, nullList);		pItem[3] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 5, nullList);		pItem[4] = CREATE_ITEM(Item::ITEM_CLASS_POTION, 5, nullList);		// 藕芒		pItem[5] = CREATE_ITEM(Item::ITEM_CLASS_MAGAZINE, 4, nullList);		Magazine* pMagazine = dynamic_cast<Magazine*>(pItem[5]);		pMagazine->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());				if (pItem[i]->getItemClass() == Item::ITEM_CLASS_MAGAZINE)				{					Magazine* pMag = dynamic_cast<Magazine*>(pItem[i]);					gcCreateItem.setItemNum(pMag->getNum());				}				else				{					gcCreateItem.setItemNum(pItem[i]->getNum());				}				gcCreateItem.setInvenX(pt.x);				gcCreateItem.setInvenY(pt.y);				pPlayer->sendPacket(&gcCreateItem);			}			else			{				SAFE_DELETE(pItem[i]);			}		}	}	// 捣档 霖促匙...	//pSlayer->setGoldEx(pSlayer->getGold() + 500);	// by sigi. 2002.9.18	pSlayer->increaseGoldEx(500);	GCModifyInformation gcModifyInformation;	gcModifyInformation.addLongData(MODIFY_GOLD, pSlayer->getGold());	pPlayer->sendPacket(&gcModifyInformation);	////////////////////////////////////////////////////////////	// 酒捞袍阑 罐疽栏聪, 泅犁 FlagSet阑 历厘茄促.	// 0锅阑 檬焊 酒捞袍 罐疽促 敲贰弊肺 沥沁促.	// 捞巴篮 绢叼鳖瘤唱 东户 内靛促.	////////////////////////////////////////////////////////////	pFlagSet->turnOn(FLAGSET_RECEIVE_NEWBIE_ITEM);	if (m_ItemClass == Item::ITEM_CLASS_SWORD || m_ItemClass == Item::ITEM_CLASS_BLADE)	{		// 公荤老 版快 1		pFlagSet->turnOn(FLAGSET_RECEIVE_NEWBIE_ITEM_FIGHTER);	}	else if (m_ItemClass == Item::ITEM_CLASS_CROSS || m_ItemClass == 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());	__END_CATCH}////////////////////////////////////////////////////////////////////////////////// get debug string////////////////////////////////////////////////////////////////////////////////string ActionGiveNewbieItem::toString () const 	throw (){	__BEGIN_TRY	StringStream msg;	msg << "ActionGiveNewbieItem("	    << ")";	return msg.toString();	__END_CATCH}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -