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

📄 vampire.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		// 捞傈 饭骇狼 牢器甫 罐酒柯促.		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=%lu", m_Exp);		tinysave(pField);	}*/	// rank啊 0捞搁 檬扁蔼捞 汲沥登瘤 臼疽促绰 狼固捞促. by sigi. 2002.9.13	if (getRank()==0)	{		saveInitialRank();	}	// 肋给等 拌鞭阑 犁炼沥 秦霖促./*	RankEXPInfo* pRankEXPInfo = g_pRankEXPInfoManager[RANK_TYPE_VAMPIRE]->getRankEXPInfo(m_Rank);	if ((pRankEXPInfo->getAccumExp() != m_RankExp + m_RankGoalExp) 		&& m_Rank > 1 && m_Rank < VAMPIRE_MAX_RANK) 	{		//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;		// 捞傈 饭骇狼 牢器甫 罐酒柯促.		RankEXPInfo* pBeforeRankEXPInfo = g_pRankEXPInfoManager[RANK_TYPE_VAMPIRE]->getRankEXPInfo(m_Rank - 1);		// 捞傈 饭骇狼 醚 版氰摹 + 格钎 版氰摹 函拳樊 = 泅犁 穿利 版氰摹		m_RankExp = pBeforeRankEXPInfo->getAccumExp() + (pRankEXPInfo->getGoalExp() - m_RankGoalExp);		//file << "荐沥等 穿利 版氰摹 : " << (int)m_Exp << endl;		//file << "荐沥等 格钎 版氰摹 : " << (int)m_GoalExp << endl;		//file << endl;		//file.close();		char pField[80];		sprintf(pField, "RankExp=%lu", m_RankExp);		tinysave(pField);	}*/	initAllStat();	// 傈里 曼啊 Flag 眉农	if ( RaceWarLimiter::isInPCList( this ) )	{		setFlag( Effect::EFFECT_CLASS_RACE_WAR_JOIN_TICKET );	}	if (m_pZone->isHolyLand()        && g_pWarSystem->hasActiveRaceWar()        && !isFlag( Effect::EFFECT_CLASS_RACE_WAR_JOIN_TICKET ))    {        ZONE_COORD ResurrectCoord;        g_pResurrectLocationManager->getPosition( this, ResurrectCoord );        setZoneID( ResurrectCoord.id );        setX( ResurrectCoord.x );        setY( ResurrectCoord.y );    }	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"			//<< " BatColor = " << (int)m_BatColor			//<< ", 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]			<< ", SilverDamage = " << (int)m_SilverDamage			//<< ", Fame = " << (int)m_Fame			//<< ", Exp = " << (int)m_Exp			//<< ", ExpOffset = " << (int)m_ExpOffset			//<< ", Rank = " << (int)m_Rank			//<< ", RankExp = " << (int)m_RankExp			//<< ", 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 string & 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.c_str(), 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}// 己瘤胶懦阑 瘤况林绰 窃荐促.void Vampire::removeCastleSkill(SkillType_t SkillType)	throw(){	__BEGIN_TRY	// 己瘤 胶懦父 瘤匡 荐 乐促.	if ( g_pCastleSkillInfoManager->getZoneID( SkillType ) == 0 ) return;	hash_map<SkillType_t, VampireSkillSlot*>::iterator itr = m_SkillSlot.find(SkillType);		if (itr != m_SkillSlot.end())	{		VampireCastleSkillSlot* pCastleSkillSlot = dynamic_cast<VampireCastleSkillSlot*>(itr->second);		SAFE_DELETE( pCastleSkillSlot );		m_SkillSlot.erase( itr );	}	__END_CATCH}// 爱绊 乐绰 葛电 己瘤胶懦阑 瘤况林绰 窃荐捞促.void Vampire::removeAllCastleSkill()	throw(){	__BEGIN_TRY	hash_map<SkillType_t, VampireSkillSlot*>::iterator itr = m_SkillSlot.begin();	while ( itr != m_SkillSlot.end() )	{		if ( itr->second != NULL )		{			VampireSkillSlot* pSkillSlot = itr->second;			if ( g_pCastleSkillInfoManager->getZoneID( pSkillSlot->getSkillType() ) == 0 )			{				// 己瘤胶懦捞 酒聪搁 促澜铂肺 逞绢埃促.				++itr;				continue;			}			// 己瘤胶懦捞搁 瘤况霖促. 馆汗磊 荤侩俊 林狼			SAFE_DELETE( pSkillSlot );			hash_map<SkillType_t, VampireSkillSlot*>::iterator prevItr = itr;						++itr;			m_SkillSlot.erase( prevItr );		}		else		{			// 捞扒 钢鳖.... Assert 秦具 登瘤 臼唱 -_-;			Assert(false);		}	}	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////// 酒捞袍 馒/呕 包访 窃荐//////////////////////////////////////////////////////////////////////////////////////----------------------------------------------------------------------//// Vampire::WearItem()//// Item阑 厘馒芒俊 厘馒矫虐绊 瓷仿摹甫 拌魂茄促.////----------------------------------------------------------------------void Vampire::wearItem(WearPart Part, Item* pItem)	throw(){	__BEGIN_TRY	Assert(pItem != NULL);	Item* pPrevItem = NULL;	Item* pLeft = NULL;	Item* pRight = NULL;	// 泅犁 扁裙俊辑绰...瓷仿摹啊 葛磊扼歹扼档 酒捞袍阑 公炼扒 荤侩且 荐绰	// 乐促. 窍瘤父 酒捞袍俊 狼茄 瓷仿摹啊 利侩捞 登瘤 臼绰促. 	// 弊矾骨肺 老窜 酒捞袍阑 秦寸窍绰 厘馒芒俊促 笼绢持绰促.	// vampire 公扁 眠啊. 2002.8.16. by sigi	// 剧颊 公扁老 版快俊绰 剧颊 厘馒芒俊促 窍唱狼 酒捞袍 器牢磐甫 且寸...	if (isTwohandWeapon(pItem))	{		// 剧颊俊 酒捞袍阑 甸绊 乐阑 版快		if (isWear(WEAR_RIGHTHAND) && isWear(WEAR_LEFTHAND))		{			pLeft  = getWearItem(WEAR_RIGHTHAND);			pRight = getWearItem(WEAR_LEFTHAND);						// 剧颊 公扁甫 甸绊 乐阑 版快			if (pLeft == pRight)			{				// 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绊,				m_pWearItem[WEAR_RIGHTHAND] = pItem;				m_pWearItem[WEAR_LEFTHAND]  = 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(pLeft);				//pLeft->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0);				sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT);				pLeft->tinysave(pField);			}			// 成成			else			{				// 剧颊俊 八苞 规菩甫 甸绊 乐菌绰单...剧颊 公扁甫 甸妨绊 窍搁,				// 八篮 付快胶 器牢磐俊 崔酒临 荐 乐瘤父, 规菩绰 绢痘霸 且 荐啊 绝促.				// 牢亥配府俊 持绢拎具 且 刨单, 瘤陛 寸厘篮 绢痘霸 且 瘤甫 葛福摆匙...				// 傲 涝阑 荐 绝促绰 菩哦阑 焊郴林磊...				//cerr << "剧颊俊 漠苞 规菩甫 甸绊 乐绢辑, 剧颊 公扁甫 厘馒且 荐 绝嚼聪促." << endl;				return;			}		}		// 剧颊俊 酒捞袍阑 甸绊 乐瘤 臼阑 版快		else 		{			char pField[80];			// 坷弗率俊 酒捞袍阑 甸绊 乐阑 版快			if (isWear(WEAR_RIGHTHAND))			{				pRight = getWearItem(WEAR_RIGHTHAND);				// 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促.				m_pWearItem[WEAR_RIGHTHAND] = pItem;				m_pWearItem[WEAR_LEFTHAND]  = 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);				// 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促.				addItemToExtraInventorySlot(pRight);				//pRight->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0);				sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT);				pRight->tinysave(pField);			}			// 哭率俊 酒捞袍阑 甸绊 乐阑 版快			else if (isWear(WEAR_LEFTHAND))			{				pLeft = getWearItem(WEAR_LEFTHAND);				// 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促.				m_pWearItem[WEAR_RIGHTHAND] = pItem;				m_pWearItem[WEAR_LEFTHAND]  = 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);				// 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促.				addItemToExtraInventorySlot(pLeft);				//pLeft->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0);				sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT);				pLeft->tinysave(pField);			}			// 酒公率档 酒捞袍阑 甸绊 乐瘤 臼阑 版快			else

⌨️ 快捷键说明

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