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

📄 slayer.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		}	}	// 厘馒窍绊 乐绰 巴 吝俊 茫绰促.	{		for (int i = 0; i < WEAR_MAX; i++) 		{			Item* pItem = m_pWearItem[i];			if (pItem != NULL) 			{				bool bCheck = true;				if (i == WEAR_RIGHTHAND && isTwohandWeapon(pItem))					bCheck = false;				if (bCheck) 				{					if ( wasteIfTimeLimitExpired( pItem ) )					{						deleteWearItem( (WearPart)i );						if ( i == WEAR_LEFTHAND && isTwohandWeapon( pItem ) )							deleteWearItem( WEAR_RIGHTHAND );						SAFE_DELETE( pItem );					}				}			}		}	}	// 付快胶俊 甸绊 乐绰 酒捞袍阑 眉农茄促.	{		Item* pSlotItem = m_pExtraInventorySlot->getItem();		if (pSlotItem != NULL && wasteIfTimeLimitExpired( pSlotItem ) )		{			deleteItemFromExtraInventorySlot();			SAFE_DELETE( pSlotItem );		}	}	// 坷配官捞甫 眉农茄促.	// 老窜 汗棱秦辑 坷配官捞绰 矫埃力茄 救窃/*	{		if (m_pMotorcycle != NULL && wasteIfTimeLimitExpired( m_pMotorcycle ) )		{		}	}*/	__END_CATCH}void Slayer::loadItem( bool checkTimeLimit )	throw (InvalidProtocolException, Error){	__BEGIN_TRY	PlayerCreature::loadItem();	// 牢亥配府甫 积己茄促. 	// 积己窍扁 傈俊 傈俊 乐带 巴篮 瘤况霖促.	SAFE_DELETE(m_pInventory);	m_pInventory = new Inventory(10, 6);	m_pInventory->setOwner(getName());	// 酒捞袍阑 肺靛茄促.	g_pItemLoaderManager->load(this);	// 备概茄 酒捞袍阑 肺靛茄促.	PlayerCreature::loadGoods();	// 肺靛茄 酒捞袍甸阑 殿废窍绊...	registerInitObject();	// 贸澜 立加茄 荤恩老 版快 檬焊磊侩 酒捞袍技飘甫 老窜 霖 促澜..	if( m_pFlagSet->isOn( FLAGSET_RECEIVE_NEWBIE_ITEM_AUTO ) )	{		addNewbieItemToInventory( this );		addNewbieGoldToInventory( this );		addNewbieItemToGear( this );		// 林菌阑 版快 玲促绰 敲贰弊甫 波霖促.		m_pFlagSet->turnOff( FLAGSET_RECEIVE_NEWBIE_ITEM_AUTO );		m_pFlagSet->save( getName() );	}	if ( checkTimeLimit )	{		checkItemTimeLimit();	}	// 涝绊 乐绰 渴俊 蝶扼 瓷仿摹甫 拌魂秦 霖促.	initAllStat();	//cout << "Slayer::loadItem() : STR[CURRENT]" << (int)m_STR[ATTR_CURRENT] << endl;	//cout << "Slayer::loadItem() : STR[MAX]" << (int)m_STR[ATTR_MAX] << endl;	//cout << "Slayer::loadItem() : STR[BASIC]" << (int)m_STR[ATTR_BASIC] << endl;	//cout << "Slayer::loadItem() : DEX[CURRENT]" << (int)m_DEX[ATTR_CURRENT] << endl;	//cout << "Slayer::loadItem() : DEX[MAX]" << (int)m_DEX[ATTR_MAX] << endl;	//cout << "Slayer::loadItem() : DEX[BASIC]" << (int)m_DEX[ATTR_BASIC] << endl;	//cout << "Slayer::loadItem() : INT[CURRENT]" << (int)m_INT[ATTR_CURRENT] << endl;	//cout << "Slayer::loadItem() : INT[MAX]" << (int)m_INT[ATTR_MAX] << endl;	//cout << "Slayer::loadItem() : INT[BASIC]" << (int)m_INT[ATTR_BASIC] << endl;	__END_CATCH}bool Slayer::load ()	throw (InvalidProtocolException, Error){	__BEGIN_TRY	for (int i=0; i<SKILL_DOMAIN_VAMPIRE; i++)	{		m_SkillDomainLevels[i] = 0;//		m_SkillDomainExps[i]   = 0;	}	Statement* pStmt   = NULL;	Result*    pResult = NULL;	int reward = 0;	BEGIN_DB	{		pStmt   = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pResult = pStmt->executeQuery(			"SELECT Name, Competence, CompetenceShape, Sex, 			HairStyle, HairColor, SkinColor, Phone, 			STR, STRGoalExp,			DEX, DEXGoalExp,			INTE, INTGoalExp,			Rank, RankGoalExp, 			CurrentHP, HP, CurrentMP, MP, 			Fame, Gold, GuildID, 			BladeLevel, BladeGoalExp, 			SwordLevel, SwordGoalExp, 			GunLevel, GunGoalExp, 			EnchantLevel, EnchantGoalExp, 			HealLevel, HealGoalExp, 			ETCLevel, ETCGoalExp, 			ZoneID, XCoord, YCoord, Sight, 			GunBonusExp, RifleBonusExp, 			Alignment,			StashGold, StashNum, ResurrectZone, Reward   			FROM Slayer WHERE Name = '%s' AND Active = 'ACTIVE'",			m_Name.c_str()		);		if (pResult->getRowCount() == 0) 		{			//throw Error("Critical Error : data intergrity broken. (肺弊牢 辑滚俊辑 霸烙 辑滚肺 逞绢坷绰 悼救俊 某腐磐啊 昏力登菌嚼聪促.)");			SAFE_DELETE(pStmt);			return false;		}		pResult->next();		uint i = 0;		setName(pResult->getString(++i));		int competence = pResult->getInt(++i);		if ( competence >= 4 ) competence = 3;		setCompetence(competence);		setCompetenceShape(pResult->getInt(++i));		setSex(pResult->getString(++i));		setHairStyle(pResult->getString(++i));		setHairColor(pResult->getInt(++i));		setSkinColor(pResult->getInt(++i));		setPhoneNumber(atoi(pResult->getString(++i)));		m_STR[ATTR_BASIC]   = pResult->getInt(++i);		m_STR[ATTR_MAX]     = m_STR[ATTR_BASIC];		m_STR[ATTR_CURRENT] = m_STR[ATTR_BASIC];//		m_STRExp            = pResult->getInt(++i);		Exp_t STRGoalExp        = pResult->getInt(++i);		m_pAttrs[ATTR_KIND_STR] = new Attr( m_STR[ATTR_BASIC], STRGoalExp, SlayerAttrExpTable::s_SlayerAttrExpTable[ATTR_KIND_STR] );		m_DEX[ATTR_BASIC]   = pResult->getInt(++i);		m_DEX[ATTR_MAX]     = m_DEX[ATTR_BASIC];		m_DEX[ATTR_CURRENT] = m_DEX[ATTR_BASIC];//		m_DEXExp            = pResult->getInt(++i);		Exp_t DEXGoalExp        = pResult->getInt(++i);		m_pAttrs[ATTR_KIND_DEX] = new Attr( m_DEX[ATTR_BASIC], DEXGoalExp, SlayerAttrExpTable::s_SlayerAttrExpTable[ATTR_KIND_DEX] );				m_INT[ATTR_BASIC]   = pResult->getInt(++i);		m_INT[ATTR_MAX]     = m_INT[ATTR_BASIC];		m_INT[ATTR_CURRENT] = m_INT[ATTR_BASIC];//		m_INTExp            = pResult->getInt(++i);		Exp_t INTGoalExp        = pResult->getInt(++i);		m_pAttrs[ATTR_KIND_INT] = new Attr( m_INT[ATTR_BASIC], INTGoalExp, SlayerAttrExpTable::s_SlayerAttrExpTable[ATTR_KIND_INT] );				Rank_t CurRank               = pResult->getInt(++i);//		RankExp_t RankExp            = pResult->getInt(++i);		RankExp_t RankGoalExp        = pResult->getInt(++i);		m_pRank = new Rank( CurRank, RankGoalExp, RankExpTable::s_RankExpTables[RANK_TYPE_SLAYER] );//		cout << getRankGoalExp() << endl;		//cout << "Slayer::load() : STR[CURRENT]" << (int)m_STR[ATTR_CURRENT] << endl;		//cout << "Slayer::load() : STR[MAX]" << (int)m_STR[ATTR_MAX] << endl;		//cout << "Slayer::load() : STR[BASIC]" << (int)m_STR[ATTR_BASIC] << endl;		//cout << "Slayer::load() : DEX[CURRENT]" << (int)m_DEX[ATTR_CURRENT] << endl;		//cout << "Slayer::load() : DEX[MAX]" << (int)m_DEX[ATTR_MAX] << endl;		//cout << "Slayer::load() : DEX[BASIC]" << (int)m_DEX[ATTR_BASIC] << endl;		//cout << "Slayer::load() : INT[CURRENT]" << (int)m_INT[ATTR_CURRENT] << endl;		//cout << "Slayer::load() : INT[MAX]" << (int)m_INT[ATTR_MAX] << endl;		//cout << "Slayer::load() : INT[BASIC]" << (int)m_INT[ATTR_BASIC] << endl;		m_HP[ATTR_CURRENT]  = pResult->getInt(++i);		m_HP[ATTR_MAX]      = pResult->getInt(++i);		m_HP[ATTR_BASIC]    = 0;		m_MP[ATTR_CURRENT]  = pResult->getInt(++i);		m_MP[ATTR_MAX]      = pResult->getInt(++i);		m_MP[ATTR_BASIC]    = 0;		setFame(pResult->getInt(++i));		setGold(pResult->getInt(++i));		setGuildID(pResult->getInt(++i));		//setInMagics(pResult->getString(++i));		setSkillDomainLevel(SKILL_DOMAIN_BLADE,   pResult->getInt(++i));//		setSkillDomainExp  (SKILL_DOMAIN_BLADE,   pResult->getInt(++i));		setGoalExp         (SKILL_DOMAIN_BLADE,   pResult->getInt(++i));		setSkillDomainLevel(SKILL_DOMAIN_SWORD,   pResult->getInt(++i));//		setSkillDomainExp  (SKILL_DOMAIN_SWORD,   pResult->getInt(++i));		setGoalExp         (SKILL_DOMAIN_SWORD,   pResult->getInt(++i));		setSkillDomainLevel(SKILL_DOMAIN_GUN,     pResult->getInt(++i));//		setSkillDomainExp  (SKILL_DOMAIN_GUN,     pResult->getInt(++i));		setGoalExp         (SKILL_DOMAIN_GUN,     pResult->getInt(++i));		//setSkillDomainLevel(SKILL_DOMAIN_RIFLE   , pResult->getInt(++i));		//setSkillDomainExp(SKILL_DOMAIN_RIFLE   , pResult->getInt(++i));		//setGoalExp(SKILL_DOMAIN_RIFLE	  , pResult->getInt(++i));		setSkillDomainLevel(SKILL_DOMAIN_ENCHANT, pResult->getInt(++i));//		setSkillDomainExp  (SKILL_DOMAIN_ENCHANT, pResult->getInt(++i));		setGoalExp         (SKILL_DOMAIN_ENCHANT, pResult->getInt(++i));		setSkillDomainLevel(SKILL_DOMAIN_HEAL,    pResult->getInt(++i));//		setSkillDomainExp  (SKILL_DOMAIN_HEAL,    pResult->getInt(++i));		setGoalExp         (SKILL_DOMAIN_HEAL,    pResult->getInt(++i));		setSkillDomainLevel(SKILL_DOMAIN_ETC,     pResult->getInt(++i));//		setSkillDomainExp  (SKILL_DOMAIN_ETC,     pResult->getInt(++i));		setGoalExp         (SKILL_DOMAIN_ETC,     pResult->getInt(++i));//		setZoneID(pResult->getInt(++i));		ZoneID_t zoneID = pResult->getInt(++i);		setX(pResult->getInt(++i));		setY(pResult->getInt(++i));		setSight(pResult->getInt(++i));		setSight(13);		setGunBonusExp(pResult->getInt(++i));		setRifleBonusExp(pResult->getInt(++i));		setAlignment(pResult->getInt(++i));//		for (int j = 0; j < 4; j++) setHotKey(j, pResult->getInt(++i));		setStashGold(pResult->getInt(++i));		setStashNum(pResult->getBYTE(++i));		setResurrectZoneID(pResult->getInt(++i));		reward = pResult->getInt(++i);		// 弊成 促矫 拌魂秦滚赴促. 2002.7.15 by sigi		// 傍侥 官差搁 AbilityBalance.cpp狼 computeHP档 荐沥秦具茄促.//		m_HP[ATTR_MAX]      = m_STR[ATTR_CURRENT]*2;		try		{			setZoneID( zoneID );		}		catch ( Error& e )		{			// 辨靛 酒瘤飘 巩力肺 夯促.			// 辨靛 酒瘤飘啊 茄 霸烙 辑滚俊父 粮犁窍骨肺 促弗 霸烙辑滚肺 立加且 锭 弊 酒瘤飘肺 甸绢啊瘤 给茄促.			// 辨靛 酒瘤飘 涝备肺 颗变促.			setZoneID( 13 );			setX( 30 );			setY( 30 );		}		SAFE_DELETE(pStmt);	} 	END_DB(pStmt)	// zone 狼 object registery 俊 立辟茄促.	ObjectRegistry & OR = getZone()->getObjectRegistry();	OR.registerObject(this);/*	if (reward != 0)	{		uint MaxExp     = 0;		uint DomainType = SKILL_DOMAIN_MAX;		uint sum        = 0;		for (int i=0; i<SKILL_DOMAIN_VAMPIRE; i++)		{			if (MaxExp <= m_SkillDomainExps[i])			{				MaxExp     = m_SkillDomainExps[i];				DomainType = i;			}			sum += m_SkillDomainLevels[i];		}		bool bSuccess = false;		switch (DomainType)		{			case SKILL_DOMAIN_SWORD:			case SKILL_DOMAIN_BLADE:			case SKILL_DOMAIN_GUN:			case SKILL_DOMAIN_ENCHANT:			case SKILL_DOMAIN_HEAL:				bSuccess = true;				break;			default:				bSuccess = false;				break;		}		if (bSuccess)		{			BEGIN_DB			{				pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();				pStmt->executeQuery("UPDATE Slayer SET Reward = 0 WHERE Name='%s'", m_Name.c_str());				SAFE_DELETE(pStmt);			} 			END_DB(pStmt)			GCModifyInformation gcModifyInformation;						if (0 <= sum && sum <= 10)			{				for (int count=0; count<5; count++)				{					setGoalExp(DomainType, 1);					increaseDomainExp(this, DomainType, 1, gcModifyInformation);				}				for (int count=0; count<4; count++)				{					m_STRGoalExp = 1; m_DEXGoalExp = 1; m_INTGoalExp = 1;					divideAttrExp(this, 1, 1, 1, 1, gcModifyInformation, 0);				}			}			else if (11 <= sum && sum <= 20)			{				for (int count=0; count<4; count++)				{					setGoalExp(DomainType, 1);					increaseDomainExp(this, DomainType, 1, gcModifyInformation);				}				for (int count=0; count<3; count++)				{					m_STRGoalExp = 1; m_DEXGoalExp = 1; m_INTGoalExp = 1;					divideAttrExp(this, 1, 1, 1, 1, gcModifyInformation, 0);				}			}			else if (21 <= sum && sum <= 30)			{				for (int count=0; count<2; count++)				{					setGoalExp(DomainType, 1);					increaseDomainExp(this, DomainType, 1, gcModifyInformation);				}				for (int count=0; count<2; count++)				{					m_STRGoalExp = 1; m_DEXGoalExp = 1; m_INTGoalExp = 1;					divideAttrExp(this, 1, 1, 1, 1, gcModifyInformation, 0);				}			}			else			{				for (int count=0; count<1; count++)				{					setGoalExp(DomainType, 1);					increaseDomainExp(this, DomainType, 1, gcModifyInformation);				}				for (int count=0; count<1; count++)				{					m_STRGoalExp = 1; m_DEXGoalExp = 1; m_INTGoalExp = 1;					divideAttrExp(this, 1, 1, 1, 1, gcModifyInformation, 0);				}			}		}	}*/	// Slayer Outlook Information 阑 备己茄促.	m_SlayerInfo.setObjectID(m_ObjectID);    m_SlayerInfo.setName(m_Name);    m_SlayerInfo.setX(m_X);    m_SlayerInfo.setY(m_Y);    m_SlayerInfo.setDir(m_Dir);    m_SlayerInfo.setSex(m_Sex);    m_SlayerInfo.setHairStyle(m_HairStyle);	// 0捞唱 1 鼻茄阑 啊瘤绊 乐栏搁	// 款康磊肺 胶橇扼捞飘甫 免仿秦拎具 茄促. 	m_SlayerInfo.setCompetence(m_CompetenceShape);	// 胶懦阑 肺爹茄促.	BEGIN_DB	{		pStmt   = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pResult = pStmt->executeQuery("SELECT SkillType, SkillLevel, SkillExp, Delay, CastingTime, NextTime FROM SkillSave WHERE OwnerID = '%s'", m_Name.c_str());		while(pResult->next()) 		{			int        i          = 0;			SkillSlot* pSkillSlot = new SkillSlot();			pSkillSlot->setName(m_Name);			pSkillSlot->setSkillType(pResult->getInt(++i));			pSkillSlot->setExpLevel(pResult->getInt(++i));			pSkillSlot->setExp (pResult->getInt(++i));			pSkillSlot->setInterval (pResult->getInt(++i));			pSkillSlot->setCastingTime (pResult->getInt(++i));			//pSkillSlot->setRunTime (pResult->getInt(++i));			pSkillSlot->setRunTime();			// 捞 胶懦阑 镜 荐 乐绰瘤 绝绰瘤 眉农 茄德..			// 胶懦牢器甫 罐酒柯促.			SkillInfo * pSkillInfo = g_pSkillInfoManager->getSkillInfo(pSkillSlot->getSkillType() );			Assert( pSkillInfo != NULL );			// 硅快绰 饭骇焊促 瘤陛 泅犁狼 档皋牢 饭骇捞 撤栏搁 寸楷洒 给敬促.			if( pSkillInfo->getLevel() > m_SkillDomainLevels[pSkillInfo->getDomainType()] && pSkillInfo->getDomainType() != SKILL_DOMAIN_ETC ) 			{				pSkillSlot->setDisable();

⌨️ 快捷键说明

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