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

📄 ousters.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	Item* pItem = m_pExtraInventorySlot->getItem();	if (pItem != NULL) {		//	Item::ItemClass IClass = pItem->getItemClass();		ExtraSlotInfo* pExtraSlotInfo = new ExtraSlotInfo();		pItem->makePCItemInfo( *pExtraSlotInfo );/*		pExtraSlotInfo->setObjectID(pItem->getObjectID());		pExtraSlotInfo->setItemClass(pItem->getItemClass());		pExtraSlotInfo->setItemType(pItem->getItemType());		pExtraSlotInfo->setOptionType(pItem->getOptionTypeList());		pExtraSlotInfo->setDurability(pItem->getDurability());		pExtraSlotInfo->setSilver(pItem->getSilver());		pExtraSlotInfo->setSilver(pItem->getEnchantLevel());		pExtraSlotInfo->setItemNum(pItem->getNum());		// 鞠胶龟靛扼搁 Sub 酒捞袍狼 眠啊 沥焊啊 鞘夸窍促.		if (IClass == Item::ITEM_CLASS_OUSTERS_ARMSBAND) 		{			OustersArmsband* pOustersArmsband = dynamic_cast<OustersArmsband*>(pItem);			Inventory* pOustersArmsbandInventory = ((OustersArmsband*)pItem)->getInventory();			BYTE SubItemCount = 0;			// 器南狼 箭磊父怒 酒捞袍狼 沥焊甫 佬绢 甸牢促.			for (int i = 0; i < pOustersArmsband->getPocketCount(); i++) 			{				Item* pOustersArmsbandItem = pOustersArmsbandInventory->getItem(i, 0);				if (pOustersArmsbandItem != NULL) 				{					SubItemInfo* pSubItemInfo = new SubItemInfo();					pSubItemInfo->setObjectID(pOustersArmsbandItem->getObjectID());					pSubItemInfo->setItemClass(pOustersArmsbandItem->getItemClass());					pSubItemInfo->setItemType(pOustersArmsbandItem->getItemType());					pSubItemInfo->setItemNum(pOustersArmsbandItem->getNum());					pSubItemInfo->setSlotID(i);					pExtraSlotInfo->addListElement(pSubItemInfo);					SubItemCount++;				}			}			pExtraSlotInfo->setListNum(SubItemCount);		}		// 惑狼 窍狼 Main Color 瘤陛篮 弊成 0 栏肺 悸泼 秦敌促.		pExtraSlotInfo->setMainColor(0);*/			pExtraInfo->addListElement(pExtraSlotInfo);		ItemCount++;	}	pExtraInfo->setListNum(ItemCount);	return pExtraInfo;	__END_DEBUG	__END_CATCH}//----------------------------------------------------------------------//// get Gear Info////----------------------------------------------------------------------GearInfo* Ousters::getGearInfo() const	throw(){	__BEGIN_TRY	__BEGIN_DEBUG	int ItemCount = 0;	GearInfo* pGearInfo = new GearInfo();	for (int i = 0; i < OUSTERS_WEAR_MAX; i++) 	{		Item* pItem = m_pWearItem[i];		if (pItem != NULL) 		{			//Item::ItemClass IClass = pItem->getItemClass();			GearSlotInfo* pGearSlotInfo = new GearSlotInfo();			pItem->makePCItemInfo( *pGearSlotInfo );			pGearSlotInfo->setSlotID(i);/*			pGearSlotInfo->setObjectID(pItem->getObjectID());			pGearSlotInfo->setItemClass(pItem->getItemClass());			pGearSlotInfo->setItemType(pItem->getItemType());			pGearSlotInfo->setOptionType(pItem->getOptionTypeList());			pGearSlotInfo->setDurability(pItem->getDurability());			pGearSlotInfo->setSilver(pItem->getSilver());			pGearSlotInfo->setEnchantLevel(pItem->getEnchantLevel());			// 鞠胶龟靛扼搁 Sub 酒捞袍狼 眠啊 沥焊啊 鞘夸窍促.			if (pItem->getItemClass() == Item::ITEM_CLASS_OUSTERS_ARMSBAND)			{				// 酒捞袍 牢器甫 罐酒柯促.				ItemInfo* pItemInfo = g_pItemInfoManager->getItemInfo(pItem->getItemClass(), pItem->getItemType());				// 器南狼 箭磊甫 罐酒柯促.				BYTE PocketNum = ((OustersArmsbandInfo*)pItemInfo)->getPocketCount();				// 骇飘狼 牢亥配府甫 罐酒柯促.				Inventory* pOustersArmsbandInventory = ((OustersArmsband*)pItem)->getInventory();				BYTE SubItemCount = 0;				// 器南狼 箭磊父怒 酒捞袍狼 沥焊甫 佬绢 甸牢促.				for (int i = 0; i < PocketNum ; i++)				{					Item* pOustersArmsbandItem = pOustersArmsbandInventory->getItem(i, 0);					if (pOustersArmsbandItem != NULL)					{						SubItemInfo* pSubItemInfo = new SubItemInfo();						pSubItemInfo->setObjectID(pOustersArmsbandItem->getObjectID());						pSubItemInfo->setItemClass(pOustersArmsbandItem->getItemClass());						pSubItemInfo->setItemType(pOustersArmsbandItem->getItemType());						pSubItemInfo->setItemNum(pOustersArmsbandItem->getNum());						pSubItemInfo->setSlotID(i);						pGearSlotInfo->addListElement(pSubItemInfo);						SubItemCount++;					}				}				pGearSlotInfo->setListNum(SubItemCount);			}			pGearSlotInfo->setSlotID(i);				// 惑狼 窍狼 Main Color 瘤陛篮 弊成 0 栏肺 悸泼 秦敌促.			pGearSlotInfo->setMainColor(0);*/					pGearInfo->addListElement(pGearSlotInfo);			ItemCount++;		}	}	pGearInfo->setListNum(ItemCount);	return pGearInfo;	__END_DEBUG	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// get Inventory Info//////////////////////////////////////////////////////////////////////////////InventoryInfo* Ousters::getInventoryInfo() const    throw(){	__BEGIN_TRY	__BEGIN_DEBUG	BYTE ItemCount = 0;	InventoryInfo* pInventoryInfo = new InventoryInfo();	list<Item*> ItemList;	VolumeHeight_t Height = m_pInventory->getHeight();	VolumeWidth_t Width = m_pInventory->getWidth();	for (int j = 0; j < Height; j++) 	{		for (int i = 0 ; i < Width ; i ++) 		{			if (m_pInventory->hasItem(i, j)) 			{				Item* pItem = m_pInventory->getItem(i , j);				VolumeWidth_t ItemWidth = pItem->getVolumeWidth();				//Item::ItemClass IClass = pItem->getItemClass();				list<Item*>::iterator itr = find(ItemList.begin() , ItemList.end() , pItem);				if (itr == ItemList.end()) 				{					ItemList.push_back(pItem);					// InventorySlotInfo甫 备己					InventorySlotInfo* pInventorySlotInfo = new InventorySlotInfo();					pItem->makePCItemInfo( *pInventorySlotInfo );					pInventorySlotInfo->setInvenX(i);					pInventorySlotInfo->setInvenY(j);/*					pInventorySlotInfo->setObjectID(pItem->getObjectID());					pInventorySlotInfo->setItemClass(pItem->getItemClass());					pInventorySlotInfo->setItemType(pItem->getItemType());					pInventorySlotInfo->setOptionType(pItem->getOptionTypeList());					pInventorySlotInfo->setSilver(pItem->getSilver());					pInventorySlotInfo->setDurability(pItem->getDurability());					pInventorySlotInfo->setEnchantLevel(pItem->getEnchantLevel());					pInventorySlotInfo->setInvenX(i);					pInventorySlotInfo->setInvenY(j);					pInventorySlotInfo->setItemNum(pItem->getNum());					// 鞠胶龟靛扼搁 Sub 酒捞袍狼 眠啊 沥焊啊 鞘夸窍促.					if (IClass == Item::ITEM_CLASS_OUSTERS_ARMSBAND) 					{						OustersArmsband* pOustersArmsband = dynamic_cast<OustersArmsband*>(pItem);						Inventory* pOustersArmsbandInventory = ((OustersArmsband*)pItem)->getInventory();						BYTE SubItemCount = 0;						// 器南狼 箭磊父怒 酒捞袍狼 沥焊甫 佬绢 甸牢促.						for (int i = 0; i < pOustersArmsband->getPocketCount() ; i++) 						{							Item* pOustersArmsbandItem = pOustersArmsbandInventory->getItem(i, 0);							if (pOustersArmsbandItem != NULL) 							{								SubItemInfo* pSubItemInfo = new SubItemInfo();								pSubItemInfo->setObjectID(pOustersArmsbandItem->getObjectID());								pSubItemInfo->setItemClass(pOustersArmsbandItem->getItemClass());								pSubItemInfo->setItemType(pOustersArmsbandItem->getItemType());								pSubItemInfo->setItemNum(pOustersArmsbandItem->getNum());								pSubItemInfo->setSlotID(i);								pInventorySlotInfo->addListElement(pSubItemInfo);								SubItemCount++;							}						}						pInventorySlotInfo->setListNum(SubItemCount);					}					pInventorySlotInfo->setMainColor(0);*/					pInventoryInfo->addListElement(pInventorySlotInfo);					ItemCount++;					i = i + ItemWidth - 1;				}			}		}	}	pInventoryInfo->setListNum(ItemCount);	return pInventoryInfo;	__END_DEBUG	__END_CATCH}//----------------------------------------------------------------------// getSkillInfo//----------------------------------------------------------------------void Ousters::sendOustersSkillInfo()	throw(){	__BEGIN_TRY	__BEGIN_DEBUG	OustersSkillInfo* pOustersSkillInfo = new OustersSkillInfo();	BYTE SkillCount = 0;	// 泅犁 矫埃, 巢篮 某胶泼 鸥烙阑 拌魂窍扁 困秦	Timeval currentTime;	getCurrentTime( currentTime );	hash_map<SkillType_t, OustersSkillSlot*>::const_iterator itr = m_SkillSlot.begin();	for (; itr != m_SkillSlot.end(); itr++)	{		OustersSkillSlot* pOustersSkillSlot = itr->second;		Assert(pOustersSkillSlot != NULL);		// AttackMelee 殿狼 扁夯 傍拜 扁贱 沥焊绰 焊郴林瘤 臼酒具 茄促.		if (pOustersSkillSlot->getSkillType() >= SKILL_DOUBLE_IMPACT)		{			SubOustersSkillInfo* pSubOustersSkillInfo = new SubOustersSkillInfo();			pSubOustersSkillInfo->setSkillType(pOustersSkillSlot->getSkillType());			pSubOustersSkillInfo->setExpLevel(pOustersSkillSlot->getExpLevel());			pSubOustersSkillInfo->setSkillTurn(pOustersSkillSlot->getInterval());			pSubOustersSkillInfo->setCastingTime(pOustersSkillSlot->getRemainTurn( currentTime ) );			pOustersSkillInfo->addListElement(pSubOustersSkillInfo);			SkillCount++;		}	}	GCSkillInfo gcSkillInfo;	gcSkillInfo.setPCType(PC_OUSTERS);	SkillType_t LearnSkillType = g_pSkillInfoManager->getSkillTypeByLevel(SKILL_DOMAIN_OUSTERS , m_Level);	// 泅犁 饭骇俊辑 硅匡 荐 乐绰 扁贱捞 乐绰瘤 夯促.	if (LearnSkillType != 0) 	{		// 硅匡 荐 乐绰 扁贱捞 乐绊 硅快瘤 臼篮 惑怕扼搁 硅快扼绊 舅妨霖促.		if (hasSkill(LearnSkillType) == NULL) 		{			pOustersSkillInfo->setLearnNewSkill(true);		}	}	pOustersSkillInfo->setListNum(SkillCount);	gcSkillInfo.addListElement(pOustersSkillInfo);	m_pPlayer->sendPacket(&gcSkillInfo);	__END_DEBUG	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////// 扁鸥 窃荐////////////////////////////////////////////////////////////////////////////////////void Ousters::setGold(Gold_t gold)	throw(){	__BEGIN_TRY    // MAX_MONEY 甫 逞绢啊绰 吧 阜绰促	// 2003.1.8  by bezz.	m_Gold = min( (Gold_t)MAX_MONEY, gold );	__END_CATCH}void Ousters::setGoldEx(Gold_t gold)	throw(){	__BEGIN_TRY	setGold(gold);	// by sigi. 2002.5.15	char pField[80];	sprintf(pField, "Gold=%ld", m_Gold);	tinysave(pField);	__END_CATCH}void Ousters::increaseGoldEx(Gold_t gold)	throw(){	__BEGIN_TRY	__BEGIN_DEBUG	// MAX_MONEY 甫 逞绢啊绰 吧 阜绰促	// 2003.1.8  by bezz.	if ( m_Gold + gold > MAX_MONEY )		gold = MAX_MONEY - m_Gold;	setGold(m_Gold+gold);    Statement* pStmt = NULL;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pStmt->executeQuery("UPDATE Ousters SET Gold=Gold+%u WHERE NAME='%s'", gold, m_Name.c_str());		SAFE_DELETE(pStmt);	} 	END_DB(pStmt)	__END_DEBUG	__END_CATCH}void Ousters::decreaseGoldEx(Gold_t gold)	throw(){	__BEGIN_TRY	__BEGIN_DEBUG	// 0 固父捞 登绰 吧 阜绰促. 0 固父捞 登搁 underflow 登辑 抄府啊 抄促.	// 2003.1.8  by bezz.	if ( m_Gold < gold )        gold = m_Gold;		setGold(m_Gold-gold);    Statement* pStmt = NULL;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pStmt->executeQuery("UPDATE Ousters SET Gold=Gold-%u WHERE NAME='%s'", gold, m_Name.c_str());		SAFE_DELETE(pStmt);	} 	END_DB(pStmt)	__END_DEBUG	__END_CATCH}void Ousters::saveSilverDamage(Silver_t damage)	    throw(){	__BEGIN_TRY	setSilverDamage(damage);	// by sigi. 2002.5.15	char pField[80];	sprintf(pField, "SilverDamage=%d", m_SilverDamage);	tinysave(pField);	__END_CATCH}bool Ousters::checkGoldIntegrity(){	__BEGIN_TRY	Statement* pStmt = NULL;	bool ret = false;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		Result* pResult = pStmt->executeQuery("SELECT Gold FROM Ousters WHERE NAME='%s'", m_Name.c_str());		if ( pResult->next() )		{			ret = pResult->getInt(1) == m_Gold;		}		SAFE_DELETE(pStmt);	} 	END_DB(pStmt)	return ret;	__END_CATCH}bool Ousters::checkStashGoldIntegrity(){	__BEGIN_TRY	Statement* pStmt = NULL;	bool ret = false;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		Result* pResult = pStmt->executeQuery("SELECT StashGold FROM Ousters WHERE NAME='%s'", m_Name.c_str());		if ( pResult->next() )		{			ret = pResult->getInt(1) == m_StashGold;		}		SAFE_DELETE(pStmt);	} 	END_DB(pStmt)	return ret;	__END_CATCH}///////////////////////

⌨️ 快捷键说明

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