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

📄 vampireportalitem.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//////////////////////////////////////////////////////////////////////////////// Filename    : VampirePortalItem.cpp// Written By  : excel96// Description : //////////////////////////////////////////////////////////////////////////////#include "VampirePortalItem.h"#include "DB.h"#include "Slayer.h"#include "Vampire.h"#include "Belt.h"#include "Motorcycle.h"#include "Stash.h"#include "ItemInfoManager.h"#include "ItemUtil.h"#include "skill/EffectVampirePortal.h"ItemID_t VampirePortalItem::m_ItemIDRegistry = 0;Mutex    VampirePortalItem::m_Mutex;VampirePortalItemInfoManager* g_pVampirePortalItemInfoManager = NULL;VampirePortalItemLoader*      g_pVampirePortalItemLoader = NULL;//////////////////////////////////////////////////////////////////////////////// class VampirePortalItem member methods//////////////////////////////////////////////////////////////////////////////VampirePortalItem::VampirePortalItem()	throw(){	__BEGIN_TRY	m_ItemType                = 0;	m_Charge                  = 0;	m_ZoneID                  = 0;	m_X                       = 0;	m_Y                       = 0;	//m_pEffectVampirePortal[0] = NULL;	//m_pEffectVampirePortal[1] = NULL;	__END_CATCH}VampirePortalItem::VampirePortalItem(ItemType_t itemType, const list<OptionType_t>& optionType)	throw(){	__BEGIN_TRY	m_ItemType = itemType;	m_Charge   = getMaxCharge();	switch (m_ItemType)	{		case 3:		case 4:		case 5:			m_ZoneID = 1003;			m_X = 50;			m_Y = 70;			break;		case 6:		case 7:		case 8:			m_ZoneID = 1007;			m_X = 62;			m_Y = 65;			break;		case 9:		case 10:		case 11:			m_ZoneID = 61;			m_X = 102;			m_Y = 220;			break;		default:			m_ZoneID = 0;			m_X = 0;			m_Y = 0;			break;	}	if (!g_pItemInfoManager->isPossibleItem(getItemClass(), m_ItemType, optionType))	{		filelog("itembug.log", "VampirePortalItem::VampirePortalItem() : Invalid item type or option type");		throw ("VampirePortalItem::VampirePortalItem() : Invalid item type or optionType");	}	//m_pEffectVampirePortal[0] = NULL;	//m_pEffectVampirePortal[1] = NULL;	__END_CATCH}VampirePortalItem::~VampirePortalItem()	throw(){	__BEGIN_TRY	__END_CATCH}void VampirePortalItem::create(const string & ownerID, Storage storage, StorageID_t storageID, BYTE x, BYTE y, ItemID_t itemID) 	throw(Error){	__BEGIN_TRY	Statement* pStmt = NULL;	if (itemID==0)	{		__ENTER_CRITICAL_SECTION(m_Mutex)		m_ItemIDRegistry += g_pItemInfoManager->getItemIDSuccessor();		m_ItemID = m_ItemIDRegistry;		__LEAVE_CRITICAL_SECTION(m_Mutex)	}	else	{		m_ItemID = itemID;	}		BEGIN_DB 	{		StringStream sql;		sql << "INSERT INTO VampirePortalItemObject "			<< "(ItemID,ObjectID,ItemType,OwnerID, Storage,StorageID,X,Y, Charge,TargetZID,TargetX,TargetY) VALUES (" 			<< m_ItemID << "," << m_ObjectID << "," << m_ItemType << ",'" << ownerID << "'," 			<< (int)storage << "," << storageID << "," << (int)x << "," << (int)y << ","			<< m_Charge << "," << (int)m_ZoneID << "," << (int)m_X << "," << (int)m_Y			<< ")";		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pStmt->executeQuery(sql.toString());		SAFE_DELETE(pStmt);	}	END_DB(pStmt)	__END_CATCH}//--------------------------------------------------------------------------------// save item//--------------------------------------------------------------------------------void VampirePortalItem::tinysave(const char* field) const	throw(Error){	__BEGIN_TRY	Statement* pStmt = NULL;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pStmt->executeQuery( "UPDATE VampirePortalItemObject SET %s WHERE ItemID=%ld",								field, m_ItemID);		SAFE_DELETE(pStmt);	}	END_DB(pStmt)		__END_CATCH}void VampirePortalItem::save(const string & ownerID, Storage storage, StorageID_t storageID, BYTE x, BYTE y) 	throw(Error){	__BEGIN_TRY	Statement* pStmt = NULL;	BEGIN_DB 	{		/*		StringStream sql;		sql << "UPDATE VampirePortalItemObject SET "			<< "ObjectID   = "  << m_ObjectID			<< ",ItemType  = "  << m_ItemType			<< ",OwnerID   = '" << ownerID << "'"			<< ",Storage   = "  <<(int)storage			<< ",StorageID = "  << storageID			<< ",X         = "  <<(int)x			<< ",Y         = "  <<(int)y			<< ",Charge    = "  << m_Charge			<< ",TargetZID = "  << (int)m_ZoneID			<< ",TargetX   = "  << (int)m_X			<< ",TargetY   = "  << (int)m_Y			<< " WHERE ItemID = " << m_ItemID;		pStmt->executeQuery(sql.toString());		*/		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pStmt->executeQuery( "UPDATE VampirePortalItemObject SET ObjectID=%ld, ItemType=%d, OwnerID='%s', Storage=%d, StorageID=%ld, X=%d, Y=%d, Charge=%d, TargetZID=%d, TargetX=%d, TargetY=%d WHERE ItemID=%ld",								m_ObjectID, m_ItemType, ownerID.c_str(), (int)storage, storageID, (int)x, (int)y, m_Charge, (int)m_ZoneID, (int)m_X, (int)m_Y, m_ItemID );		SAFE_DELETE(pStmt);	}	END_DB(pStmt)		__END_CATCH}VolumeWidth_t VampirePortalItem::getVolumeWidth() const 	throw(Error){	__BEGIN_TRY	return g_pVampirePortalItemInfoManager->getItemInfo(m_ItemType)->getVolumeWidth();	__END_CATCH}	VolumeHeight_t VampirePortalItem::getVolumeHeight() const 	throw(Error){	__BEGIN_TRY	return g_pVampirePortalItemInfoManager->getItemInfo(m_ItemType)->getVolumeHeight();	__END_CATCH}	Weight_t VampirePortalItem::getWeight() const 	throw(Error){	__BEGIN_TRY	return g_pVampirePortalItemInfoManager->getItemInfo(m_ItemType)->getWeight();	__END_CATCH}string VampirePortalItem::toString() const 	throw(){	__BEGIN_TRY	StringStream msg;	msg << "VampirePortalItem("		<< "ItemID:"     << m_ItemID		<< ",ItemType:"  <<(int)m_ItemType		<< ",Charge:"    << m_Charge		<< ",TargetZID:" << (int)m_ZoneID		<< ",TargetX:"   << (int)m_X		<< ",TargetY:"   << (int)m_Y		<< ")";	return msg.toString();	__END_CATCH}int VampirePortalItem::getMaxCharge(void) const	throw(){	__BEGIN_TRY	VampirePortalItemInfo* pInfo = dynamic_cast<VampirePortalItemInfo*>(g_pVampirePortalItemInfoManager->getItemInfo(m_ItemType));	Assert(pInfo != NULL);	return pInfo->getMaxCharge();	__END_CATCH}Durability_t VampirePortalItem::getDurability() const 	throw(Error){	__BEGIN_TRY	WORD highBits = m_X << 8;	WORD lowBits  = m_Y;	return (WORD)(highBits | lowBits);	__END_CATCH}Silver_t VampirePortalItem::getSilver() const 	throw() { 	__BEGIN_TRY	return m_ZoneID; 	__END_CATCH}EnchantLevel_t VampirePortalItem::getEnchantLevel() const 	throw() { 	__BEGIN_TRY	return m_Charge; 	__END_CATCH}

⌨️ 快捷键说明

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