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

📄 actiongivetestserverreward.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
////////////////////////////////////////////////////////////////////////////////// Filename    : ActionGiveTestServerReward.cpp// Written By  : 厘全芒// Description :////////////////////////////////////////////////////////////////////////////////#include "ActionGiveTestServerReward.h"#include "PlayerCreature.h"#include "GamePlayer.h"#include "Item.h"#include "ItemUtil.h"#include "OptionInfo.h"#include "Inventory.h"#include "Zone.h"#include "ItemFactoryManager.h"#include "DB.h"#include "Thread.h"#include "Slayer.h"#include "Vampire.h"#include "SpecialEventFlag.h"#include <list>#include "PacketUtil.h"#include "Gpackets/GCCreateItem.h"#include "Gpackets/GCNPCResponse.h"////////////////////////////////////////////////////////////////////////////////// ActionGiveTestServerReward////////////////////////////////////////////////////////////////////////////////ActionGiveTestServerReward::ActionGiveTestServerReward(): m_pLuaState(NULL), m_pLuaSlayerItem(NULL), m_pLuaVampireItem(NULL){	m_pLuaState = new LuaState;	m_pLuaState->init();	m_pLuaSlayerItem = new LuaTradeEventSlayerItem(m_pLuaState);	m_pLuaVampireItem = new LuaTradeEventVampireItem(m_pLuaState);}////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////ActionGiveTestServerReward::~ActionGiveTestServerReward(){    __BEGIN_TRY	SAFE_DELETE(m_pLuaState);	SAFE_DELETE(m_pLuaSlayerItem);	SAFE_DELETE(m_pLuaVampireItem);	__END_CATCH}//////////////////////////////////////////////////////////////////////////////////  load////////////////////////////////////////////////////////////////////////////////void ActionGiveTestServerReward::load()    throw (Error){    __BEGIN_TRY		Assert(m_pLuaState!=NULL);	int result = m_pLuaState->dofile(m_CommonFilename);	LuaState::logError(result);    __END_CATCH}////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////void ActionGiveTestServerReward::read(PropertyBuffer & propertyBuffer)    throw (Error){    __BEGIN_TRY	try	{		// read script id		m_CommonFilename = propertyBuffer.getProperty("CommonFilename");		m_SlayerFilename = propertyBuffer.getProperty("SlayerFilename");		m_VampireFilename = propertyBuffer.getProperty("VampireFilename");		load();	}	catch (NoSuchElementException & nsee)	{		throw Error(nsee.toString());	}	__END_CATCH}////////////////////////////////////////////////////////////////////////////////// 咀记阑 角青茄促.////////////////////////////////////////////////////////////////////////////////void ActionGiveTestServerReward::execute(Creature * pCreature1 , Creature * pCreature2) 	throw (Error){	__BEGIN_TRY	Assert(pCreature1 != NULL);	Assert(pCreature2 != NULL);	Assert(pCreature1->isNPC());	Assert(pCreature2->isPC());	PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature2);	Assert(pPC != NULL);	Player* pPlayer = pPC->getPlayer();	Assert(pPlayer != NULL);	GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);	Assert(pGamePlayer != NULL );	Inventory* pInventory = pPC->getInventory();	Assert( pInventory != NULL );	Zone* pZone = pPC->getZone();	Assert( pZone != NULL );	Item::ItemClass ItemClass;	ItemType_t		ItemType;	OptionType_t	OptionType;	Item*			pItem;	// 捞固 焊惑阑 罐阑 荐 乐绰瘤 眉农	if ( !(pGamePlayer->getSpecialEventCount() & SPECIAL_EVENT_TEST_SERVER_REWARD) )	{		GCNPCResponse response;		response.setCode( NPC_RESPONSE_REWARD_FAIL );		pPlayer->sendPacket( &response );		GCNPCResponse quit;		quit.setCode( NPC_RESPONSE_QUIT_DIALOGUE );		pPlayer->sendPacket( &quit );		return;	}	LuaSelectItem*	pLuaSelectItem = NULL;	string			luaFileName;	if ( pPC->isSlayer() )	{		// 风酒俊 浇饭捞绢 瓷仿摹狼 钦阑 set茄促.		Slayer* pSlayer = dynamic_cast<Slayer*>(pPC);		Assert( pSlayer != NULL );		Attr_t sum = pSlayer->getSTR( ATTR_BASIC )				   + pSlayer->getDEX( ATTR_BASIC )				   + pSlayer->getINT( ATTR_BASIC );		m_pLuaSlayerItem->setSum(sum);		pLuaSelectItem = m_pLuaSlayerItem;		luaFileName = m_SlayerFilename;	}	else if ( pPC->isVampire() )	{		// 风酒俊 轨颇捞绢狼 饭骇阑 set茄促.		Vampire* pVampire = dynamic_cast<Vampire*>(pPC);		Assert( pVampire != NULL );		int level = pVampire->getLevel();		m_pLuaVampireItem->setLevel(level);		pLuaSelectItem = m_pLuaVampireItem;		luaFileName = m_VampireFilename;	}	// 风酒狼 拌魂 搬苞甫 罐酒 酒捞袍阑 积己茄促.	pLuaSelectItem->prepare();		int result = pLuaSelectItem->executeFile( luaFileName );	LuaState::logError(result);	ItemClass 	= pLuaSelectItem->getItemClass();	ItemType  	= pLuaSelectItem->getItemType();	OptionType	= pLuaSelectItem->getOptionType();	pLuaSelectItem->clear();	if( ItemClass >= Item::ITEM_CLASS_MAX )	{		filelog( "TestServerRewardError.txt", "[ ItemInfo Error ] : ItemClass = %d , ItemType = %d , OptionType = %d", ItemClass, ItemType, OptionType );		GCNPCResponse quit;		quit.setCode( NPC_RESPONSE_QUIT_DIALOGUE );		pPlayer->sendPacket( &quit );		return;	}	// 急拱(Item)阑 父电促.	list<OptionType_t> optionTypeList;	if ( OptionType != 0 )		optionTypeList.push_back( OptionType );	pItem = g_pItemFactoryManager->createItem( ItemClass, ItemType, optionTypeList );	Assert( pItem != NULL );	// 牢亥配府俊 酒捞袍阑 持阑 后 磊府甫 罐酒柯促.	TPOINT p;		if (!pInventory->getEmptySlot(pItem, p)) 	{		SAFE_DELETE( pItem );		GCNPCResponse response;		response.setCode( NPC_RESPONSE_NO_EMPTY_SLOT );		pGamePlayer->sendPacket(&response);		GCNPCResponse quit;		quit.setCode( NPC_RESPONSE_QUIT_DIALOGUE );		pPlayer->sendPacket( &quit );		return;	}	// 急拱阑 牢亥配府俊 眠啊茄促.	pZone->getObjectRegistry().registerObject( pItem );	pInventory->addItem( p.x, p.y, pItem );	pItem->create( pPC->getName(), STORAGE_INVENTORY, 0, p.x, p.y );	// ItemTraceLog 甫 巢变促	if ( pItem != NULL && pItem->isTraceItem() )	{		remainTraceLog( pItem, pCreature1->getName(), pCreature2->getName(), ITEM_LOG_CREATE, DETAIL_EVENTNPC);	}	// 努扼捞攫飘俊 急拱捞 眠啊登菌澜阑 舅赴促.	GCCreateItem gcCreateItem;	makeGCCreateItem( &gcCreateItem, pItem, p.x, p.y );	pPlayer->sendPacket(&gcCreateItem);	// 急拱阑 罐疽促绊 Flag 甫 馋促.	pGamePlayer->setSpecialEventCount( pGamePlayer->getSpecialEventCount() & ~(SPECIAL_EVENT_TEST_SERVER_REWARD) );	// Flag 甫 历厘茄促.	pGamePlayer->saveSpecialEventCount();	// 焊惑阑 罐疽促绊 努扼捞攫飘俊 焊辰促.	GCNPCResponse response;	response.setCode( NPC_RESPONSE_REWARD_OK );	pPlayer->sendPacket( &response );	GCNPCResponse quit;	quit.setCode( NPC_RESPONSE_QUIT_DIALOGUE );	pPlayer->sendPacket( &quit );	__END_CATCH}////////////////////////////////////////////////////////////////////////////////// get debug string////////////////////////////////////////////////////////////////////////////////string ActionGiveTestServerReward::toString () const 	throw (){	__BEGIN_TRY	StringStream msg;	msg << "ActionGiveTestServerReward("	    << ")";	return msg.toString();	__END_CATCH}

⌨️ 快捷键说明

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