# LockedTargetSelector

# 说明

LockedTargetSelector命名空间提供了锁定目标选择器功能,允许玩家锁定一个特定目标并保持锁定,直到目标被解锁或不再有效。这在团战或连招中非常有用,可以确保技能和攻击集中在同一个目标上。

# 如何使用

#include "Noble.h"

void OnGameUpdate()
{
    // 获取800范围内的锁定目标(如果已锁定)
    AIBaseClient* target = LockedTargetSelector::GetTarget(800, eDamageType::Physical);
    
    if (target)
    {
        // 有锁定的目标,使用技能攻击
        if (ObjectManager::Player()->GetSpell(eSpellSlot::Q)->IsReady())
        {
            // 使用Q技能攻击锁定的目标
            ObjectManager::Player()->GetSpell(eSpellSlot::Q)->CastOnUnit(target);
        }
    }
    else
    {
        // 没有锁定目标,可以使用普通目标选择器获取目标
        target = TargetSelector::GetTarget(800, eDamageType::Physical);
        if (target)
        {
            // 找到了目标,可以考虑锁定它(通过其他方式或功能)
            Console::Add("找到了目标: %s", target->ChampionName());
        }
    }
}

# GetTarget

AIBaseClient* LockedTargetSelector::GetTarget(float range, eDamageType damageType, bool ignoreShieldSpells = true, bool TargetBoundingRadius = false, std::vector<AIBaseClient*>const& ignoredChamps = {}, Vector rangeCheckFrom = Vector::Zero)

获取当前锁定的目标,如果目标无效或超出范围则返回nullptr。

参数名字 参数类型 描述
range float 检查范围
damageType eDamageType 伤害类型(物理、魔法或真实伤害)
ignoreShieldSpells bool 是否忽略护盾技能
TargetBoundingRadius bool 是否考虑目标的边界半径
ignoredChamps std::vector<AIBaseClient*>const& 要忽略的英雄列表
rangeCheckFrom Vector 范围检查的起始位置,默认为玩家位置
// 获取物理伤害类型的锁定目标,考虑900单位范围
AIBaseClient* lockedTarget = LockedTargetSelector::GetTarget(900, eDamageType::Physical);

if (lockedTarget)
{
    Console::Add("当前锁定目标: %s, 血量: %.1f", 
                 lockedTarget->ChampionName(), 
                 lockedTarget->Health());
}
else
{
    Console::Add("没有锁定的目标或目标超出范围");
}

# UnlockTarget

void LockedTargetSelector::UnlockTarget()

解锁当前锁定的目标,允许再次使用常规目标选择。

// 解锁当前目标
LockedTargetSelector::UnlockTarget();
Console::Add("已解锁目标");