C++射手BUFF,给自己、队友加状态核心代码
Published: Comment: No Comments
Last Modified:2024-12-05 16:17:39
C++射手BUFF,给自己、队友加状态核心代码
if ((GetTickCount()-((DWORD)lpObj->YaoAutoBuffDelay)) > (DWORD)this->m_YaoAutoBuffDelay ||((lpObj->Life*100)/(lpObj->MaxLife+lpObj->AddLife)) < 70)
{
CSkill* lpSkillBuff;
bool isLowHealth = (lpObj->Life * 100) / (lpObj->MaxLife + lpObj->AddLife) < 70;
if (lpObj->Class == CLASS_FE)
{
lpSkillBuff = gSkillManager.GetSkill(lpObj,SKILL_GREATER_DEFENSE);
if (lpSkillBuff != nullptr)
{
this->SendSkillAttack(lpObj,lpObj->Index,lpSkillBuff->m_index); //给自己加防
this->GetTargetParty(lpObj,lpSkillBuff->m_index); //给队友加
}
lpSkillBuff = gSkillManager.GetSkill(lpObj,SKILL_GREATER_DAMAGE);
if (lpSkillBuff != nullptr)
{
this->SendSkillAttack(lpObj,lpObj->Index,lpSkillBuff->m_index); //给自己加攻
this->GetTargetParty(lpObj,lpSkillBuff->m_index);//队友加
}
lpSkillBuff = gSkillManager.GetSkill(lpObj, SKILL_HEAL);
if (lpSkillBuff != nullptr)
{
if (isLowHealth)
{
gSkillManager.SkillHeal(lpObj->Index, lpObj->Index, lpSkillBuff); // 加血
}
else
{
if ((GetTickCount()-((DWORD)lpObj->YaoAutoBuffDelay)) > (DWORD)this->m_YaoAutoBuffDelay)
{
gSkillManager.SkillHeal(lpObj->Index, lpObj->Index, lpSkillBuff); // 加血
}
}
}
}
if (!isLowHealth)
{
lpObj->YaoAutoBuffDelay = GetTickCount();
}
}
代码逻辑为当激活buff状态后、在特定延迟的时间内重复给自己和队友加BUFF、当自己的血量低于70%后不间隔的给自己加血。