本文整理汇总了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);
}
示例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);
}
示例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)
//.........这里部分代码省略.........