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

📄 itemrewardinfo.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
#include "ItemRewardInfo.h"#include "RewardClass.h"#include "PlayerCreature.h"#include "Inventory.h"#include "ItemInfoManager.h"#include "ItemFactoryManager.h"#include "Player.h"#include "Zone.h"#include "DB.h"#include "ItemUtil.h"#include "PacketUtil.h"#include "StringStream.h"#include "PetInfo.h"#include "item/PetItem.h"#include "PetTypeInfo.h"#include "VSDateTime.h"#include "Gpackets/GCCreateItem.h"ItemRewardInfo::ItemRewardInfo( RewardID_t rID, RewardClass_t rClass, Item::ItemClass iClass, ItemType_t iType, const string& option, DWORD time )	: RewardInfo( rID, rClass ){	m_IClass = iClass;	m_IType = iType;	makeOptionList( option, m_OptionType );	m_TimeLimit = time;}ItemRewardInfo::~ItemRewardInfo(){}QuestMessage ItemRewardInfo::canGiveReward( PlayerCreature* pPC ) const	throw(Error){	__BEGIN_TRY	Inventory* pInventory = pPC->getInventory();	ItemInfo* pItemInfo = g_pItemInfoManager->getItemInfo( m_IClass, m_IType );	_TPOINT tp;	if ( pItemInfo == NULL ) return FAIL_BUG;	if ( pInventory->getEmptySlot( pItemInfo->getVolumeWidth(), pItemInfo->getVolumeHeight(), tp ) ) return COMPLETE_SUCCESS;	return COMPLETE_FAIL_NO_INVENTORY_SPACE;	__END_CATCH}QuestMessage ItemRewardInfo::giveReward( PlayerCreature *pPC ) const	throw(Error){	__BEGIN_TRY	_TPOINT tp;	GenderRestriction gender = GENDER_BOTH;	switch( pPC->getSex() )	{		case MALE:			gender = GENDER_MALE;			break;		case FEMALE:			gender = GENDER_FEMALE;			break;		default:			break;	}	Item* pItem = g_pItemFactoryManager->createItem( m_IClass, m_IType, m_OptionType );	if ( pItem == NULL )	{		return FAIL_BUG;	}	if ( m_IClass == Item::ITEM_CLASS_PET_ITEM )	{		PetInfo* pPetInfo = new PetInfo;		pPetInfo->setPetType(m_IType);		pPetInfo->setPetLevel(0);		pPetInfo->setPetAttr(0xff);		pPetInfo->setPetExp(0);		pPetInfo->setPetAttrLevel(0);		pPetInfo->setFoodType(m_IType*4-6);		pPetInfo->setPetHP(360);		pPetInfo->setFeedTime( VSDateTime::currentDateTime() );		pPetInfo->setGamble(0);		pPetInfo->setCutHead(0);		PetTypeInfo* pPetTypeInfo = PetTypeInfoManager::getInstance()->getPetTypeInfo( pPetInfo->getPetType() );		if ( pPetTypeInfo != NULL )		{			pPetInfo->setPetCreatureType( pPetTypeInfo->getPetCreatureType( pPetInfo->getPetLevel() ) );		}		PetItem* pPetItem = dynamic_cast<PetItem*>(pItem);		Assert( pPetItem != NULL );		pPetItem->setPetInfo( pPetInfo );		pPetInfo->setPetItem( pPetItem );	}	setItemGender( pItem, gender );	Inventory* pInventory = pPC->getInventory();	pPC->getZone()->registerObject( pItem );		if ( !pInventory->addItem( pItem, tp ) )	{		SAFE_DELETE( pItem );		filelog("Quest.log", "ItemRewardInfo::giveReward() : canGiveReward() 甫 犬牢窍瘤 臼疽芭唱 刚啊 部看嚼聪促.");		return COMPLETE_FAIL_NO_INVENTORY_SPACE;	}	pItem->create( pPC->getName(), STORAGE_INVENTORY, 0, tp.x, tp.y );	GCCreateItem gcCreateItem;	makeGCCreateItem( &gcCreateItem, pItem, tp.x, tp.y );	pPC->getPlayer()->sendPacket( &gcCreateItem );	if ( m_TimeLimit != 0 )	{		pPC->addTimeLimitItem( pItem, m_TimeLimit );		pPC->sendTimeLimitItemInfo();	}	pItem->whenPCTake(pPC);	return COMPLETE_SUCCESS;	__END_CATCH}/*void ItemRewardInfo::loadRewardClass( RewardClass& rClass )	throw(Error){	__BEGIN_TRY	Statement* pStmt = NULL;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		Result* pResult = pStmt->executeQuery(				"SELECT RewardID, IClass, IType, OptionType, TimeLimit FROM ItemRewardInfo where RewardClass=%u", rClass.getRewardClass() );		while ( pResult->next() ) 		{			int index = 0;			RewardID_t		rID			= (RewardID_t)		pResult->getInt( ++index );			Item::ItemClass	iClass		= (Item::ItemClass)	pResult->getInt( ++index );			ItemType_t		iType		= (ItemType_t)		pResult->getInt( ++index );			string			options		= 					pResult->getString( ++index );			DWORD			timeLimit	= (DWORD)			pResult->getInt( ++index );			ItemRewardInfo* pIRewardInfo = new ItemRewardInfo( rID, rClass.getRewardClass(), iClass, iType, options, timeLimit );			rClass.addRewardInfo( pIRewardInfo );		}		SAFE_DELETE(pStmt);	}	END_DB(pStmt)	__END_CATCH}*/string ItemRewardInfo::toString() const throw(){	__BEGIN_TRY	StringStream msg;	msg << "ItemRewardInfo("		<< "ItemClass : " << (int) m_IClass		<< ", ItemType : " << (int) m_IType		<< ", ItemOption : " << getOptionTypeToString( m_OptionType ).c_str()		<< ", TimeLimitSec : " << m_TimeLimit		<< ") : " << endl << RewardInfo::toString().c_str();	return msg.toString();	__END_CATCH}

⌨️ 快捷键说明

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