C++射手BUFF,给自己、队友加状态核心代码


Published:   Comment: No Comments

游戏设置

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%后不间隔的给自己加血。

Last Modified:2024-12-05 16:17:39

我有话说