当前位置: 首页>>代码示例>>C++>>正文


C++ CServerDE::IntRandom方法代码示例

本文整理汇总了C++中CServerDE::IntRandom方法的典型用法代码示例。如果您正苦于以下问题:C++ CServerDE::IntRandom方法的具体用法?C++ CServerDE::IntRandom怎么用?C++ CServerDE::IntRandom使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CServerDE的用法示例。


在下文中一共展示了CServerDE::IntRandom方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: PostPropRead

void CultistAI::PostPropRead(ObjectCreateStruct *pStruct)
{
	CServerDE* pServerDE = GetServerDE();
	if (!pServerDE || !pStruct) return;

	char* pFilename= DNULL;
	char* pSkin = DNULL;


	if (m_bClownSkin)
	{
		pFilename = "Models\\Enemies\\m_Cultist1.abc";
		m_bMale   = DTRUE;

		switch(pServerDE->IntRandom(1,3))
		{
			case 1:		pSkin = "Skins_ao\\Enemies_ao\\m_Cultist4.dtx";	break;
			case 2:		pSkin = "Skins_ao\\Enemies_ao\\m_Cultist5.dtx";	break;
			case 3:		pSkin = "Skins_ao\\Enemies_ao\\m_Cultist6.dtx";	break;
		}
	}
	else if (m_bRobeSkin)
	{
		pFilename = "Models_ao\\Enemies_ao\\oldschool.abc";
		pSkin     = "Skins_ao\\Enemies_ao\\oldschool.dtx";
		m_bMale   = DTRUE;
	}
	else if (m_bMale)
	{
		pFilename = "Models\\Enemies\\m_Cultist1.abc";

		switch(pServerDE->IntRandom(1,3))
		{
			case 1:		pSkin = "Skins\\Enemies\\m_Cultist1.dtx";	break;
			case 2:		pSkin = "Skins\\Enemies\\m_Cultist2.dtx";	break;
			case 3:		pSkin = "Skins\\Enemies\\m_Cultist3.dtx";	break;
		}
	}
	else
	{
		pFilename = "Models\\Enemies\\f_Cultist1.abc";

		switch(pServerDE->IntRandom(1,3))
		{
			case 1:		pSkin = "Skins\\Enemies\\f_Cultist1.dtx";	break;
			case 2:		pSkin = "Skins\\Enemies\\f_Cultist2.dtx";	break;
			case 3:		pSkin = "Skins\\Enemies\\f_Cultist3.dtx";	break;
		}
	}

	_mbscpy((unsigned char*)pStruct->m_Filename, (const unsigned char*)pFilename);
	_mbscpy((unsigned char*)pStruct->m_SkinName, (const unsigned char*)pSkin);
}
开发者ID:bsmr-games,项目名称:Blood2,代码行数:53,代码来源:CultistAI.cpp

示例2: PostPropRead

void CivilianAI::PostPropRead(ObjectCreateStruct *pStruct)
{
	CServerDE* pServerDE = GetServerDE();
	if (!pServerDE || !pStruct) return;

	char* pFilename= DNULL;
	char* pSkin = DNULL;

	DFLOAT fDetail = 4;	//m_pServerDE->GetVarValueFloat(m_pServerDE->GetGameConVar("GlobalDetail"));

	if(StateStrToInt(m_szAIState) == STATE_Special8)
	{
		pFilename = "Models\\Enemies\\m_civilian1.abc";
		pSkin = "Skins\\Enemies\\m_civilian4.dtx";
	}
	else if (m_bSororitySkin)
	{
		pFilename = "Models\\Enemies\\f_civilian1.abc";
		pSkin     = "Skins_ao\\Enemies_ao\\f_civilian3.dtx";
	}
	else if(m_bLabTech)
	{
		pFilename = "Models\\Enemies\\labtech.abc";

		if(fDetail <= 0)
		{
			pSkin = "Skins\\Enemies\\labtech1.dtx";
		}
		else
		{
			switch(pServerDE->IntRandom(1,3))
			{
				case 1:		pSkin = "Skins\\Enemies\\labtech1.dtx";	break;
				case 2:		pSkin = "Skins\\Enemies\\labtech2.dtx";	break;
				case 3:		pSkin = "Skins\\Enemies\\labtech3.dtx";	break;
				default:	pSkin = "Skins\\Enemies\\labtech1.dtx";	break;
			}
		}
	}
	else if(m_bMale)
	{
		pFilename = "Models\\Enemies\\m_civilian1.abc";

		if(fDetail <= 0)
		{
			pSkin = "Skins\\Enemies\\m_civilian1.dtx";
		}
		else
		{
			switch(pServerDE->IntRandom(1,3))
			{
				case 1:		pSkin = "Skins\\Enemies\\m_civilian1.dtx";	break;
				case 2:		pSkin = "Skins\\Enemies\\m_civilian2.dtx";	break;
				case 3:		pSkin = "Skins\\Enemies\\m_civilian3.dtx";	break;
				default:	pSkin = "Skins\\Enemies\\m_civilian1.dtx";	break;
			}
		}
	}
	else
	{
		pFilename = "Models\\Enemies\\f_civilian1.abc";

		if(fDetail <= 0)
		{
			pSkin = "Skins\\Enemies\\f_civilian1.dtx";
		}
		else
		{
			switch(pServerDE->IntRandom(1,3))
			{
				case 1:		pSkin = "Skins\\Enemies\\f_civilian1.dtx";	break;
				case 2:		pSkin = "Skins\\Enemies\\f_civilian1.dtx";	break;
				case 3:		pSkin = "Skins\\Enemies\\f_civilian1.dtx";	break;
				default:	pSkin = "Skins\\Enemies\\f_civilian1.dtx";	break;
			}
		}
	}
	
	_mbscpy((unsigned char*)pStruct->m_Filename, (const unsigned char*)pFilename);
	_mbscpy((unsigned char*)pStruct->m_SkinName, (const unsigned char*)pSkin);
}
开发者ID:Arc0re,项目名称:lithtech,代码行数:81,代码来源:CivilianAI.cpp

示例3: HandleDamage

void CDestructable::HandleDamage(HOBJECT hSender, HMESSAGEREAD hRead)
{
	CServerDE* pServerDE = BaseClass::GetServerDE();
	if (!pServerDE) return;

	DVector vDir,vPos;

	pServerDE->ReadFromMessageVector(hRead, &vDir);
	DFLOAT fDamage = pServerDE->ReadFromMessageFloat(hRead);
	DBYTE nDamageType	= pServerDE->ReadFromMessageByte(hRead);
	HOBJECT hWhoHit = pServerDE->ReadFromMessageObject(hRead);
	pServerDE->ReadFromMessageVector(hRead, &vPos);

//	char buf[50];
	DFLOAT fOldHitPoints = m_fHitPoints;
	fDamage = fDamage * m_fResistance;

	// Just return if we can't take damage
	if (m_bGodMode || (m_bTriggerOnly && nDamageType != DAMAGE_TYPE_DEATH) || fDamage < 0)
	{
		return;
	}

	if (!IsPlayerToPlayerDamageOk(hSender, hWhoHit))
	{
		return;
	}

	// If instant death, don't bother calculating stuff.. 
	if( m_bDestructable && nDamageType == DAMAGE_TYPE_DEATH)
	{
		m_fArmorPoints = 0;
		m_fHitPoints = 0;
		m_fDeathHitPoints = 0;
		m_fLastDamagePercent = 100.0f;
		m_fLastDamageAmount = (DFLOAT)m_fMaxHitPoints;

		nDamageType &= 0x0f;	// Mask off the damage type flags
		m_nLastDamageType = nDamageType;
	}
	else
	{
		// Special pre-damage base character modifiers
		if (IsAICharacter(m_hObject))
		{
			m_nNodeHit = CalculateHitLimb(vDir,vPos,fDamage);

			if(m_nNodeHit == -1 && !(nDamageType & DAMAGE_TYPE_NORMAL))
				m_nNodeHit = SetProperNode(pServerDE->IntRandom(0,NUM_ALL_NODES - 3));
			else if(m_nNodeHit >= 0)
				m_nNodeHit = SetProperNode(m_nNodeHit);
			else
				return;

			//Compute one side got hit for recoils
			DVector vU, vR, vF, vTmpDir;
			DRotation rRot;
			pServerDE->GetObjectRotation(m_hObject, &rRot);
			pServerDE->GetRotationVectors(&rRot, &vU, &vR, &vF);

			VEC_COPY(vTmpDir, vDir);

			VEC_MULSCALAR(vTmpDir,vTmpDir,-1.0f);
			DFLOAT fAmount = (DFLOAT) atan2(vTmpDir.x, vTmpDir.z);    
			DFLOAT fAmount2 = (DFLOAT) atan2(vF.x, vF.z);

			if(fAmount < 0.0f)
				fAmount = (MATH_PI*2) + fAmount;
			if(fAmount2 < 0.0f)
				fAmount2 = (MATH_PI*2) + fAmount2;

			DFLOAT fAngle = fAmount2 - fAmount;

			if(fAngle <= MATH_PI/2 || fAngle >= 3*MATH_PI/2)	//Hit the front
			{
				m_nSideHit = 0;
			}
			else //Hit the back
			{
				m_nSideHit = 6;	
			}

			if (m_hLastDamager)
				pServerDE->BreakInterObjectLink(m_hObject, m_hLastDamager);

			m_hLastDamager = hWhoHit;

			if(m_hLastDamager)
				pServerDE->CreateInterObjectLink(m_hObject, m_hLastDamager);

			if(m_nNodeHit == NODE_NECK)
			{
				AI_Mgr* pAI = (AI_Mgr*)pServerDE->HandleToObject(m_hObject);

				if(pAI->m_bCabal || pServerDE->IsKindOf(pServerDE->GetObjectClass(m_hObject), pServerDE->GetClass("SoulDrudge")))
					m_fHitPoints = 0;
				
				fDamage *= 1.5f;
			}
			else if(m_nNodeHit == NODE_TORSO)
//.........这里部分代码省略.........
开发者ID:bsmr-games,项目名称:Blood2,代码行数:101,代码来源:Destructable.cpp


注:本文中的CServerDE::IntRandom方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。