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

📄 vampire_backup.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 4 页
字号:
}//----------------------------------------------------------------------// getSkillInfo//----------------------------------------------------------------------void Vampire::sendVampireSkillInfo()	throw(){	__BEGIN_TRY	__BEGIN_DEBUG	VampireSkillInfo* pVampireSkillInfo = new VampireSkillInfo();	BYTE SkillCount = 0;	hash_map<SkillType_t, VampireSkillSlot*>::const_iterator itr = m_SkillSlot.begin();	for (; itr != m_SkillSlot.end(); itr++)	{		VampireSkillSlot* pVampireSkillSlot = itr->second;		Assert(pVampireSkillSlot != NULL);		// AttackMelee 殿狼 扁夯 傍拜 扁贱 沥焊绰 焊郴林瘤 臼酒具 茄促.		if (pVampireSkillSlot->getSkillType() >= SKILL_DOUBLE_IMPACT)		{			SubVampireSkillInfo* pSubVampireSkillInfo = new SubVampireSkillInfo();			pSubVampireSkillInfo->setSkillType(pVampireSkillSlot->getSkillType());			pSubVampireSkillInfo->setSkillTurn(pVampireSkillSlot->getInterval());			pSubVampireSkillInfo->setCastingTime(pVampireSkillSlot->getCastingTime());			pVampireSkillInfo->addListElement(pSubVampireSkillInfo);			SkillCount++;		}	}	GCSkillInfo gcSkillInfo;	gcSkillInfo.setPCType(PC_VAMPIRE);	SkillType_t LearnSkillType = g_pSkillInfoManager->getSkillTypeByLevel(SKILL_DOMAIN_VAMPIRE , m_Level);	// 泅犁 饭骇俊辑 硅匡 荐 乐绰 扁贱捞 乐绰瘤 夯促.	if (LearnSkillType != 0) 	{		// 硅匡 荐 乐绰 扁贱捞 乐绊 硅快瘤 臼篮 惑怕扼搁 硅快扼绊 舅妨霖促.		if (hasSkill(LearnSkillType) == NULL) 		{			pVampireSkillInfo->setLearnNewSkill(true);		}	}	pVampireSkillInfo->setListNum(SkillCount);	gcSkillInfo.addListElement(pVampireSkillInfo);	m_pPlayer->sendPacket(&gcSkillInfo);	__END_DEBUG	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////// 扁鸥 窃荐////////////////////////////////////////////////////////////////////////////////////void Vampire::setGoldEx(Gold_t gold)	throw(){	__BEGIN_TRY	setGold(gold);	/*	StringStream sql;	sql << "Gold = " << (int)m_Gold;	tinysave(sql.toString());	*/	// by sigi. 2002.5.15	char pField[80];	sprintf(pField, "Gold=%ld", m_Gold);	tinysave(pField);	__END_CATCH}void Vampire::saveSilverDamage(Silver_t damage)	throw(){	__BEGIN_TRY	setSilverDamage(damage);	/*	StringStream sql;	sql << "SilverDamage = " << (int)m_SilverDamage;	tinysave(sql.toString());	*/	// by sigi. 2002.5.15	char pField[80];	sprintf(pField, "SilverDamage=%d", m_SilverDamage);	tinysave(pField);	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// 家蜡 酒捞袍 hearbeat//////////////////////////////////////////////////////////////////////////////void Vampire::heartbeat(const Timeval& currentTime)    throw(){	__BEGIN_TRY	__BEGIN_DEBUG	// 林扁利栏肺 HP甫 雀汗矫难霖促.	if (m_HPRegenTime < currentTime)	{		Timeval diffTime = timediff(currentTime, m_HPRegenTime);		if (diffTime.tv_sec > 0)		{			// 1. 混酒乐绰 惑怕捞绊 (泅犁 HP啊 0 檬苞)			// 2. 内付 捞棋飘啊 嘿绢乐瘤 臼促搁.			// 3. Mephisto 捞棋飘啊 嘿绢乐瘤 臼促搁.			if (isAlive() 				&& !isFlag(Effect::EFFECT_CLASS_COMA)				&& !isFlag(Effect::EFFECT_CLASS_MEPHISTO))			{				// by sigi. 2002.6.19				bool bInCasket = isFlag(Effect::EFFECT_CLASS_CASKET);				HP_t CurHP = m_HP[ATTR_CURRENT];				HP_t NewHP = 0;				// 包 加俊 乐绰 版快绰				// SilverDamage甫 刚历 摹丰茄促.				if (bInCasket && m_SilverDamage > 0)				{					NewHP = 4 * diffTime.tv_sec;					int remainSilver = (int)m_SilverDamage - (int)NewHP;					// SilverDamage甫 促 摹丰窍绊 HP档 摹丰窍绰 版快					if (remainSilver < 0)					{						m_SilverDamage = 0;						NewHP = -remainSilver;										HP_t MaxHP = m_HP[ATTR_MAX];						m_HP[ATTR_CURRENT] = min((int)MaxHP, (int)(CurHP + NewHP));					}					// SilverDamage父 皑家矫虐绰 版快					else					{						m_SilverDamage = remainSilver;					}				}				else				{					HP_t MaxHP = m_HP[ATTR_MAX] - getSilverDamage();					// Normal       : 2					// Burrow(Hide) : 4					// Casket       : 6					// Wolf         : 2 (老馆 惑怕肺 埃林)					// Bat          : 0					if (isFlag(Effect::EFFECT_CLASS_HIDE))					{						NewHP = 4 * diffTime.tv_sec;					}					else if (isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_BAT))					{						NewHP = 0;					}					// by sigi. 2002.6.19					else if (isFlag(Effect::EFFECT_CLASS_CASKET))					{						NewHP = 4 * diffTime.tv_sec;					}					else					{						NewHP = 2 * diffTime.tv_sec;					}					m_HP[ATTR_CURRENT] = min((int)MaxHP, (int)(CurHP + NewHP));				}			}			m_HPRegenTime.tv_sec = m_HPRegenTime.tv_sec + diffTime.tv_sec;			m_HPRegenTime.tv_usec = m_HPRegenTime.tv_usec;		}	}	/*	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();				list<Item*>::iterator itr = find(ItemList.begin() , ItemList.end() , pItem);				if (itr == ItemList.end()) 				{					ItemList.push_back(pItem);					//酒捞袍 农扁狼 促澜 困摹 何磐 八祸窍扁 困窃.					i = i + ItemWidth - 1;				}			}		}	}	for (int i = 0; i < VAMPIRE_WEAR_MAX; i++) 	{		Item* pItem = m_pWearItem[i];		if (pItem != NULL) ItemList.push_back(pItem);	}	Item* pSlotItem = m_pExtraInventorySlot->getItem();	if (pSlotItem != NULL) 	{		ItemList.push_back(pSlotItem);	}	for (list<Item*>::iterator itr = ItemList.begin(); itr != ItemList.end(); itr++)	{		Item* pItem = *itr;		pItem->getEffectManager()->heartbeat();	}	*/	__END_DEBUG	__END_CATCH}void Vampire::getVampireRecord(VAMPIRE_RECORD& record) const	throw(){    __BEGIN_TRY	record.pSTR[0]     = m_STR[0];	record.pSTR[1]     = m_STR[1];	record.pSTR[2]     = m_STR[2];	record.pDEX[0]     = m_DEX[0];	record.pDEX[1]     = m_DEX[1];	record.pDEX[2]     = m_DEX[2];	record.pINT[0]     = m_INT[0];	record.pINT[1]     = m_INT[1];	record.pINT[2]     = m_INT[2];	record.pHP[0]      = m_HP[0];	record.pHP[1]      = m_HP[1];	record.pDamage[0]  = m_Damage[0];	record.pDamage[1]  = m_Damage[1];	record.Defense     = m_Defense[0];	record.ToHit       = m_ToHit[0];	record.Protection  = m_Protection[0];	record.AttackSpeed = m_AttackSpeed[0];	__END_CATCH}void Vampire::setResurrectZoneIDEx(ZoneID_t id)	throw(){	__BEGIN_TRY	setResurrectZoneID(id);	/*	StringStream sql;	sql << "ResurrectZone = " << (int)id;	tinysave(sql.toString());	*/	// by sigi. 2002.5.15	char pField[80];	sprintf(pField, "ResurrectZone=%d", id);	tinysave(pField);	__END_CATCH}void Vampire::saveAlignment(Alignment_t alignment)	    throw(){	__BEGIN_TRY	setAlignment(alignment);	/*	StringStream sql;	sql << "Alignment = " << (int)alignment;	tinysave(sql.toString());	*/	// by sigi. 2002.5.15	char pField[80];	sprintf(pField, "Alignment=%d", alignment);	tinysave(pField);	__END_CATCH}//----------------------------------------------------------------------// get debug string//----------------------------------------------------------------------string Vampire::toString () const	throw (){	__BEGIN_TRY	StringStream msg;	msg << "Vampire("		//<< "ObjectID:"   << (int)getObjectID()		<< ",Name:"      << m_Name		<< ",HairColor:" << (int)m_HairColor		<< ",SkinColor:" << (int)m_SkinColor		<< ",STR:"       << (int)m_STR[ATTR_CURRENT] << "/" << (int)m_STR[ATTR_MAX]		<< ",DEX:"       << (int)m_DEX[ATTR_CURRENT] << "/" << (int)m_DEX[ATTR_MAX]		<< ",INT:"       << (int)m_INT[ATTR_CURRENT] << "/" << (int)m_INT[ATTR_MAX]		<< ",HP:"        << (int)m_HP[ATTR_CURRENT] << "/" << (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		//<< ",InMagics:'" << ??? << "'"		<< ",Gold:"      << (int)m_Gold		<< ",ZoneID:"    << (int)getZoneID()		<< ",XCoord:"    << (int)m_X		<< ",YCoord:"    << (int)m_Y		<< ",Sight:"     << (int)m_Sight		<< ")";	return msg.toString();	__END_CATCH}void Vampire::saveSkills(void) const 	throw (Error){	__BEGIN_TRY	hash_map<SkillType_t, VampireSkillSlot*>::const_iterator itr = m_SkillSlot.begin();	for (; itr != m_SkillSlot.end(); itr++)	{		VampireSkillSlot* pVampireSkillSlot = itr->second;		Assert(pVampireSkillSlot != NULL);		// 扁夯 傍拜 胶懦捞 酒聪扼搁...		if (pVampireSkillSlot->getSkillType() >= SKILL_DOUBLE_IMPACT)		{			pVampireSkillSlot->save(m_Name);		}	}	__END_CATCH}IP_t Vampire::getIP(void) const{	Assert(m_pPlayer != NULL);	Socket* pSocket = m_pPlayer->getSocket();	Assert(pSocket != NULL);	return pSocket->getHostIP();}void Vampire::saveGears(void) const    throw (Error){	__BEGIN_TRY	// 厘馒窍绊 乐绰 酒捞袍甸阑 历厘茄促.	char pField[80];	for (int i=0; i < Vampire::VAMPIRE_WEAR_MAX; i++)	{		Item* pItem = m_pWearItem[i];		if (pItem != NULL)		{			Durability_t maxDurability = computeMaxDurability(pItem);			if (pItem->getDurability() < maxDurability)			{				//pItem->save(m_Name, STORAGE_GEAR, 0, i, 0);				// item历厘 弥利拳. by sigi. 2002.5.13				sprintf(pField, "Durability=%d", pItem->getDurability());				pItem->tinysave(pField);			}		}	}	__END_CATCH}void Vampire::saveExps(void) const    throw (Error){	__BEGIN_TRY	// 胶懦 勤甸矾俊辑 孽府 箭磊甫 临捞扁 困秦辑 10栏肺 唱穿绰 何盒甸篮,	// 辑滚 促款捞 登瘤 臼绊, 沥惑利栏肺 肺弊酒眶窍绰 版快俊 	// 技捞宏甫 疙矫利栏肺 秦林瘤 臼栏搁 10 捞窍 棵扼埃 何盒篮 朝酒啊 滚府霸 等促.	// 弊矾骨肺 咯扁辑 技捞宏甫 秦 霖促. 	StringStream sql;	sql << "UPDATE Vampire SET "		<< "Alignment = " << m_Alignment		<< ",Fame = " << m_Fame		<< ",Exp = " << m_Exp		<< ",GoalExp = " << m_GoalExp;	if (m_SilverDamage != 0)	{		sql << ",SilverDamage = " << m_SilverDamage;	}	sql << " WHERE Name = '" << m_Name << "'";	Statement* pStmt = NULL;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pStmt->executeQuery(sql.toString());		SAFE_DELETE(pStmt);	}	END_DB(pStmt)	__END_CATCH}//----------------------------------------------------------------------// getShapeInfo//----------------------------------------------------------------------// login且锭 贸府甫 弧府窍扁 困秦辑促.//----------------------------------------------------------------------// 老窜 32bit肺 32啊瘤甫 钎泅窍绰吧肺档 面盒窍促绊 夯促.// 攫哩啊? over登搁 bitset阑 结具摆瘤..//// (!) 祸彬篮 index祸蔼捞 酒聪绊 optionType阑 持绢辑 荤侩茄促.//     努扼捞攫飘俊辑 可记栏肺 祸蔼阑 茫酒辑 敬促.//// colors[1]篮 coatColor父 乐扁 锭巩捞促.//----------------------------------------------------------------------void Vampire::getShapeInfo (DWORD& flag, Color_t colors[PCVampireInfo::VAMPIRE_COLOR_MAX]) const//	throw (){	__BEGIN_DEBUG	Item* 						pItem;	OptionInfo* 				pOptionInfo;	int							vampireBit;	int							vampireColor;	// 檬扁拳	flag = 0;	//-----------------------------------------------------------------	// 汗厘	//-----------------------------------------------------------------	pItem = m_pWearItem[WEAR_BODY];	vampireBit = 0;	vampireColor = 0;	if (pItem!=NULL)	{		ItemType_t IType = pItem->getItemType();		if (pItem->getOptionType() != 0)		{			pOptionInfo = g_pOptionInfoManager->getOptionInfo(pItem->getOptionType());			colors[vampireColor] = (pOptionInfo==NULL? 377 : pOptionInfo->getColor());		}		//colors[vampireColor] = pItem->getOptionType();		//flag |= (getVampireCoatType(IType) << vampireBit);		// itemType阑 持绢霖促.		flag = IType;	} 	else 	{		colors[vampireColor] = 377;		//flag |= (VAMPIRE_COAT_BASIC << vampireBit);		// 扁夯 渴 :  巢磊绰 0, 咯磊绰 1		flag = (m_Sex? 0 : 1);	}	__END_DEBUG}

⌨️ 快捷键说明

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