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

📄 vampire_backup.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	if ((pVampEXPInfo->getAccumExp() != m_Exp + m_GoalExp) && m_Level > 1) 	{		//ofstream file("轨橇瓷仿摹炼沥.txt", ios::out | ios::app);		//file << "NAME:" << m_Name << endl;		//file << "==VampEXP==" << endl;		//file << "泅犁饭骇狼醚版氰摹 : " << (int)pVampEXPInfo->getAccumExp() << endl;		//file << "泅犁 穿利 版氰摹 : " << (int)m_Exp << endl;		//file << "泅犁 格钎 版氰摹 : " << (int)m_GoalExp << endl;		// 捞傈 饭骇狼 牢器甫 罐酒柯促.		VampEXPInfo* pBeforeVampEXPInfo = g_pVampEXPInfoManager->getVampEXPInfo(m_Level - 1);		// 捞傈 饭骇狼 醚 版氰摹 + 格钎 版氰摹 函拳樊 = 泅犁 穿利 版氰摹		m_Exp = pBeforeVampEXPInfo->getAccumExp() + (pVampEXPInfo->getGoalExp() - m_GoalExp);		//file << "荐沥等 穿利 版氰摹 : " << (int)m_Exp << endl;		//file << "荐沥等 格钎 版氰摹 : " << (int)m_GoalExp << endl;		//file << endl;		//file.close();		/*	   // by sigi. 2002.5.15		StringStream attrsave;		attrsave << "Exp = " << (int)m_Exp;		tinysave(attrsave.toString());		*/		char pField[80];		sprintf(pField, "Exp=%ld", m_Exp);		tinysave(pField);	}	initAllStat();	return true;	__END_CATCH}//----------------------------------------------------------------------//----------------------------------------------------------------------void Vampire::save () const	throw (Error){	__BEGIN_TRY	__ENTER_CRITICAL_SECTION(m_Mutex)	Statement* pStmt;	//--------------------------------------------------------------------------------	// 轨颇捞绢 沥焊甫 历厘茄促.	//--------------------------------------------------------------------------------	BEGIN_DB	{		StringStream sql;		sql << "UPDATE Vampire SET"			//<< " HairColor = " << (int)m_HairColor			//<< ", SkinColor = " << (int)m_SkinColor			//<< ", STR = " << (int)m_STR[ATTR_MAX]			//<< ", DEX = " << (int)m_DEX[ATTR_MAX]			//<< ", INTE = " << (int)m_INT[ATTR_MAX]			<< " CurrentHP = " << (int)m_HP[ATTR_CURRENT]			<< ", HP = " << (int)m_HP[ATTR_MAX]			//<< ", Fame = " << (int)m_Fame			//<< ", Exp = " << (int)m_Exp			//<< ", ExpOffset = " << (int)m_ExpOffset			//<< ", Level = " << (int)m_Level			//<< ", Bonus = " << (int)m_Bonus			//<< ", Gold = " << (int)m_Gold			<< ", ZoneID = " << (int)getZoneID()			<< ", XCoord = " << (int)m_X			<< ", YCoord = " << (int)m_Y			//<< ", Sight = " << (int)m_Sight			<< ", F5 = " << (int)m_HotKey[0]			<< ", F6 = " << (int)m_HotKey[1]			<< ", F7 = " << (int)m_HotKey[2]			<< ", F8 = " << (int)m_HotKey[3]			<< ", F9 = " << (int)m_HotKey[4]			<< ", F10 = " << (int)m_HotKey[5]			<< ", F11 = " << (int)m_HotKey[6]			<< ", F12 = " << (int)m_HotKey[7]			<< " WHERE Name = '" << m_Name << "'";			//<< ", InMagics = '" << ??? << "'"				pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pStmt->executeQuery(sql.toString());		//Assert(pStmt->getAffectedRowCount() != 1);		SAFE_DELETE(pStmt);	} 	END_DB(pStmt)		/*	//----------------------------------------------------------------------	// 酒捞袍阑 技捞宏茄促.	//----------------------------------------------------------------------	//--------------------------------------------------	// 牢亥配府狼 酒捞袍甸阑 技捞宏 茄促.	//--------------------------------------------------	m_pInventory->save(m_Name);	*/	//--------------------------------------------------	// 捞棋飘甫 技捞宏 茄促.	//--------------------------------------------------	m_pEffectManager->save(m_Name);	__LEAVE_CRITICAL_SECTION(m_Mutex)	__END_CATCH}//----------------------------------------------------------------------// tinysave//----------------------------------------------------------------------void Vampire::tinysave(const char* field)	// by sigi. 2002.5.15	    const throw(Error){    __BEGIN_TRY    Statement* pStmt = NULL;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pStmt->executeQuery("UPDATE Vampire SET %s WHERE Name='%s'", field, m_Name.c_str());		SAFE_DELETE(pStmt);	} 	END_DB(pStmt)    __END_CATCH}////////////////////////////////////////////////////////////////////////////////////// 胶懦 包访 窃荐////////////////////////////////////////////////////////////////////////////////////// 漂沥 Skill阑 府畔茄促.VampireSkillSlot* Vampire::getSkill (SkillType_t SkillType) const 	throw(){	__BEGIN_TRY	hash_map<SkillType_t, VampireSkillSlot*>::const_iterator itr = m_SkillSlot.find(SkillType);	if (itr != m_SkillSlot.end())	{		return itr->second;	}	return NULL;	__END_CATCH}// 漂沥 Skill阑 add 茄促void Vampire::addSkill(SkillType_t SkillType)	throw(){	__BEGIN_TRY	switch (SkillType)	{		case SKILL_UN_BURROW:		case SKILL_UN_TRANSFORM:		case SKILL_UN_INVISIBILITY:		case SKILL_THROW_HOLY_WATER:		case SKILL_EAT_CORPSE:		case SKILL_HOWL:			filelog("VampireError.log", "SkillType[%d], %s", SkillType, toString().c_str());			Assert(false);			break;		default:			break;	}	hash_map<SkillType_t, VampireSkillSlot*>::iterator itr = m_SkillSlot.find(SkillType);	if (itr == m_SkillSlot.end())	{		SkillInfo* pSkillInfo = g_pSkillInfoManager->getSkillInfo(SkillType);		Turn_t Delay = pSkillInfo->getMaxDelay();		VampireSkillSlot* pVampireSkillSlot = new VampireSkillSlot;		pVampireSkillSlot->setName(m_Name);		pVampireSkillSlot->setSkillType(SkillType);		pVampireSkillSlot->setInterval(Delay);		pVampireSkillSlot->setRunTime();		pVampireSkillSlot->create(m_Name);		m_SkillSlot[SkillType] = pVampireSkillSlot;	}	__END_CATCH}// 漂沥 SkillSlot阑 磊悼栏肺 后 浇儿阑 茫酒 持绰促.void Vampire::addSkill(VampireSkillSlot* pVampireSkillSlot)	throw(){	__BEGIN_TRY	SkillType_t SkillType = pVampireSkillSlot->getSkillType();	switch (SkillType)	{		case SKILL_UN_BURROW:		case SKILL_UN_TRANSFORM:		case SKILL_UN_INVISIBILITY:		case SKILL_THROW_HOLY_WATER:		case SKILL_EAT_CORPSE:		case SKILL_HOWL:			filelog("VampireError.log", "SkillType[%d], %s", SkillType, toString().c_str());			Assert(false);			break;		default:			break;	}	hash_map<SkillType_t, VampireSkillSlot*>::iterator itr = m_SkillSlot.find(pVampireSkillSlot->getSkillType());		if (itr == m_SkillSlot.end())	{		m_SkillSlot[pVampireSkillSlot->getSkillType()] = pVampireSkillSlot;	}	// 2002.1.16 by sigi	else	{		delete pVampireSkillSlot;	}	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////// 酒捞袍 馒/呕 包访 窃荐//////////////////////////////////////////////////////////////////////////////////////----------------------------------------------------------------------//// Vampire::WearItem()//// Item阑 厘馒芒俊 厘馒矫虐绊 瓷仿摹甫 拌魂茄促.////----------------------------------------------------------------------void Vampire::wearItem(WearPart Part, Item* pItem)	throw(){	__BEGIN_TRY	Assert(pItem != NULL);	Item* pPrevItem = NULL;	// 泅犁 扁裙俊辑绰...瓷仿摹啊 葛磊扼歹扼档 酒捞袍阑 公炼扒 荤侩且 荐绰	// 乐促. 窍瘤父 酒捞袍俊 狼茄 瓷仿摹啊 利侩捞 登瘤 臼绰促. 	// 弊矾骨肺 老窜 酒捞袍阑 秦寸窍绰 厘馒芒俊促 笼绢持绰促.	if (isWear(Part))	{		pPrevItem = getWearItem(Part);		m_pWearItem[Part] = pItem;		// by sigi. 2002.5.15		char pField[80];		//pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0);		sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part);		pItem->tinysave(pField);		addItemToExtraInventorySlot(pPrevItem);		//pPrevItem->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0);		sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT);		pPrevItem->tinysave(pField);	}	else	{		// 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促.		m_pWearItem[Part] = pItem;		// by sigi. 2002.5.15		char pField[80];		//pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0);		sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part);		pItem->tinysave(pField);	}	// 渴捞扼搁 渴俊 蝶弗 祸彬阑 沥秦霖促.	// 唱吝俊扼档 渴 鸥涝捞 咯矾 啊瘤啊 瞪 荐 乐栏府扼 积阿窍绰单,	// 泅犁肺辑绰 渴 鸥涝捞 窍唱捞骨肺, 祸彬父 技泼秦霖促.	if (pItem->getItemClass() == Item::ITEM_CLASS_VAMPIRE_COAT) 	{		OptionInfo* pOptionInfo = NULL;		// 可记捞 乐绰 渴捞扼搁 可记 祸彬阑...		if (pItem->getOptionType() != 0)		{			pOptionInfo = g_pOptionInfoManager->getOptionInfo(pItem->getOptionType());			m_VampireInfo.setCoatColor(pOptionInfo->getColor());		}		// 可记捞 绝绰 渴捞扼搁 可记捞 绝绰 祸彬阑...		else		{			m_VampireInfo.setCoatColor(377);		}		// item type阑 汲沥秦霖促. 		ItemType_t IType = pItem->getItemType();		m_VampireInfo.setCoatType( IType );	}	__END_CATCH}//----------------------------------------------------------------------// Vampire::WearItem()// Item阑 厘馒芒俊 厘馒矫虐绊 瓷仿摹甫 拌魂茄促.//----------------------------------------------------------------------void Vampire::wearItem(WearPart Part)	throw(){	__BEGIN_TRY	// 厘馒 霖厚吝牢 酒捞袍阑 罐酒柯促.	Item* pItem = getExtraInventorySlotItem();	Assert(pItem != NULL);	Item* pPrevItem = NULL;	// 刚历 渴阑 涝洒芭唱, 哈扁扁 傈俊 泅犁狼 瓷仿摹甫 滚欺俊促 历厘秦 敌促.	// 捞绰 唱吝俊 函茄 瓷仿摹父阑 傈价窍扁 困茄 巴捞促.	VAMPIRE_RECORD prev;	getVampireRecord(prev);	// 泅犁 扁裙俊辑绰...瓷仿摹啊 葛磊扼歹扼档 酒捞袍阑 公炼扒 荤侩且 荐绰	// 乐促. 窍瘤父 酒捞袍俊 狼茄 瓷仿摹啊 利侩捞 登瘤 臼绰促. 	// 弊矾骨肺 老窜 酒捞袍阑 秦寸窍绰 厘馒芒俊促 笼绢持绰促.	char pField[80];	if (isWear(Part))	{		pPrevItem = getWearItem(Part);		takeOffItem(Part, false, false);		m_pWearItem[Part] = pItem;		// by sigi. 2002.5.15		//pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0);		sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part);		pItem->tinysave(pField);		deleteItemFromExtraInventorySlot();		addItemToExtraInventorySlot(pPrevItem);		//pPrevItem->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0);		sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT);		pPrevItem->tinysave(pField);	}	else	{		m_pWearItem[Part] = pItem;		deleteItemFromExtraInventorySlot();		// by sigi. 2002.5.15		//pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0);		sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part);		pItem->tinysave(pField);	}	initAllStat();	sendRealWearingInfo();	sendModifyInfo(prev);	// 渴捞扼搁 渴俊 蝶弗 祸彬阑 沥秦霖促.	// 唱吝俊扼档 渴 鸥涝捞 咯矾 啊瘤啊 瞪 荐 乐栏府扼 积阿窍绰单,	// 泅犁肺辑绰 渴 鸥涝捞 窍唱捞骨肺, 祸彬父 技泼秦霖促.	if (pItem->getItemClass() == Item::ITEM_CLASS_VAMPIRE_COAT) 	{		OptionInfo* pOptionInfo = NULL;		// 可记捞 乐绰 渴捞扼搁 可记 祸彬阑...		if (pItem->getOptionType() != 0)		{			pOptionInfo = g_pOptionInfoManager->getOptionInfo(pItem->getOptionType());			m_VampireInfo.setCoatColor(pOptionInfo->getColor());		}		// 可记捞 绝绰 渴捞扼搁 可记捞 绝绰 祸彬阑...		else		{			m_VampireInfo.setCoatColor(377);		}		m_VampireInfo.setCoatType( pItem->getItemType() );		// 渴阑 哎酒涝菌栏聪, 林困俊促啊 渴 哎酒涝菌促绊 沥焊甫 朝赴促.		GCChangeShape pkt;		pkt.setObjectID(getObjectID());		pkt.setItemClass(Item::ITEM_CLASS_VAMPIRE_COAT);		pkt.setItemType(pItem->getItemType());		pkt.setOptionType(pItem->getOptionType());		pkt.setAttackSpeed(m_AttackSpeed[ATTR_CURRENT]);		Zone* pZone = getZone();		pZone->broadcastPacket(m_X, m_Y , &pkt, this);	}	if (m_pZone != NULL)	{		GCOtherModifyInfo gcOtherModifyInfo;		makeGCOtherModifyInfo(&gcOtherModifyInfo, this, &prev);		if (gcOtherModifyInfo.getShortCount() != 0 || gcOtherModifyInfo.getLongCount() != 0)		{			m_pZone->broadcastPacket(m_X, m_Y, &gcOtherModifyInfo, this);		}	}		__END_CATCH}//----------------------------------------------------------------------//// Vampire::takeOffItem()////----------------------------------------------------------------------void Vampire::takeOffItem(WearPart Part, bool bAddOnMouse, bool bSendModifyInfo)	throw(){	__BEGIN_TRY	VAMPIRE_RECORD prev;	// 厘馒芒俊 乐绰 酒捞袍阑 罐酒柯促.	Item* pItem = m_pWearItem[Part];	Assert(pItem != NULL);	m_pWearItem[Part] = NULL;	// wearItem俊辑 瘤沥等 浇儿俊 渴阑 捞固 涝绊 乐绰 版快俊, 弊巴阑 哈扁绊	// 促矫 渴阑 涝洒绰单, 弊矾搁 哈辨 锭 菩哦阑 茄锅, 涝菌阑 锭 促矫 菩哦阑	// 茄锅, 醚 滴 锅狼 菩哦阑 焊郴霸 等促. 弊巴阑 规瘤窍扁 困秦辑	// bool 函荐甫 窍唱 笼绢持菌促. -- 2002.01.24 辫己刮	if (bSendModifyInfo)	{		getVampireRecord(prev);		initAllStat();		sendRealWearingInfo();		sendModifyInfo(prev);	}	else	{		initAllStat();	}	//---------------------------------------------	// 乐绢急 救瞪 眉农 -_-; 烙矫 东户	// 酒捞袍阑 付快胶 目辑俊促 崔酒霖寸.	//---------------------------------------------	if (bAddOnMouse) 	{		addItemToExtraInventorySlot(pItem);		//pItem->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0);		// item历厘 弥利拳. by sigi. 2002.5.13		char pField[80];        sprintf(pField, "Storage=%d, Durability=%d", STORAGE_EXTRASLOT, pItem->getDurability());        pItem->tinysave(pField);	}	if (pItem->getItemClass() == Item::ITEM_CLASS_VAMPIRE_COAT)	{		m_VampireInfo.setCoatColor(377);		m_VampireInfo.setCoatType( 0 );		GCTakeOff pkt;		pkt.setObjectID(getObjectID());		pkt.setSlotID((SlotID_t)ADDON_COAT);		m_pZone->broadcastPacket(getX(), getY(), &pkt, this);	}	if (m_pZone != NULL)	{		GCOtherModifyInfo gcOtherModifyInfo;		makeGCOtherModifyInfo(&gcOtherModifyInfo, this, &prev);		if (gcOtherModifyInfo.getShortCount() != 0 || gcOtherModifyInfo.getLongCount() != 0)		{			m_pZone->broadcastPacket(m_X, m_Y, &gcOtherModifyInfo, this);		}	}	__END_CATCH}//----------------------------------------------------------------------// destroyGears// 厘馒 酒捞袍阑 Delete 茄促.//----------------------------------------------------------------------void Vampire::destroyGears() 	throw (){	__BEGIN_TRY	__BEGIN_DEBUG	for (int j = 0; j < VAMPIRE_WEAR_MAX; j++) 	{		Item* pItem = m_pWearItem[j];		if (pItem != NULL)		{			Item::ItemClass IClass = pItem->getItemClass();			//-------------------------------------------------------------

⌨️ 快捷键说明

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