# TargetSelector

# 说明

TargetSelector命名空间提供了目标选择功能,可以根据不同的条件和策略选择最佳攻击目标。

# 如何使用

// 获取最佳攻击目标
AIBaseClient* target = TargetSelector::GetTarget(900.0f, eDamageType::Magical);
if (target && target->IsValidTarget()) {
    // 使用目标...
}

// 设置目标选择模式
TargetSelector::SetMode(eTargetingMode::AutoPriority);

// 检查目标是否免疫伤害
if (!TargetSelector::IsInvulnerable(target, eDamageType::Magical)) {
    // 释放技能...
}

# GetMode

eTargetingMode GetMode()

获取当前目标选择模式。

eTargetingMode mode = TargetSelector::GetMode();
if (mode == eTargetingMode::LowHP) {
    // 当前为低血量优先模式
}

# GetPriority

float GetPriority(AIBaseClient* hero)

获取英雄的优先级。

参数名 参数类型 描述
hero AIBaseClient* 目标英雄
auto enemy = ObjectManager::GetEnemies()[0];
float priority = TargetSelector::GetPriority(enemy);

# GetSelectedTarget

AIBaseClient* GetSelectedTarget()

获取玩家手动选择的目标。

AIBaseClient* target = TargetSelector::GetSelectedTarget();
if (target && target->IsValidTarget()) {
    // 使用玩家选择的目标
}

# GetTarget

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

根据设定的目标选择模式获取最佳目标。

参数名 参数类型 描述
range float 选择范围
damageType eDamageType 伤害类型
ignoreShieldSpells bool 是否忽略护盾技能
TargetBoundingRadius bool 是否考虑目标碰撞体积
ignoredChamps std::vector<AIBaseClient*> const& 忽略的英雄列表
rangeCheckFrom Vector 距离检测起点
AIBaseClient* target = TargetSelector::GetTarget(900.0f, eDamageType::Magical);
if (target) {
    // 使用选择的目标
}

# GetTarget

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

从指定英雄的位置获取最佳目标。

参数名 参数类型 描述
champion AIBaseClient* 参考英雄
range float 选择范围
damageType eDamageType 伤害类型
ignoreShieldSpells bool 是否忽略护盾技能
TargetBoundingRadius bool 是否考虑目标碰撞体积
ignoredChamps std::vector<AIBaseClient*> const& 忽略的英雄列表
rangeCheckFrom Vector 距离检测起点
auto ally = ObjectManager::GetAllies()[0];
AIBaseClient* target = TargetSelector::GetTarget(ally, 800.0f, eDamageType::Physical);
if (target) {
    // 使用选择的目标
}

# IsInvulnerable

bool IsInvulnerable(AIBaseClient* target, eDamageType damageType, bool ignoreShields = true)

判断目标是否无敌或免疫特定伤害类型。

参数名 参数类型 描述
target AIBaseClient* 目标单位
damageType eDamageType 伤害类型
ignoreShields bool 是否忽略护盾
auto target = TargetSelector::GetTarget(900.0f, eDamageType::Magical);
if (target && !TargetSelector::IsInvulnerable(target, eDamageType::Magical)) {
    // 目标可以受到魔法伤害
}

# SetMenu_OnlyAttackSelectedTarget

void SetMenu_OnlyAttackSelectedTarget(bool v)

设置是否只攻击选中目标。

参数名 参数类型 描述
v bool 是否启用
// 启用只攻击选中目标
TargetSelector::SetMenu_OnlyAttackSelectedTarget(true);

// 禁用只攻击选中目标
TargetSelector::SetMenu_OnlyAttackSelectedTarget(false);

# SetMode

void SetMode(eTargetingMode mode)

设置目标选择模式。

参数名 参数类型 描述
mode eTargetingMode 目标选择模式
// 设置为自动优先级模式
TargetSelector::SetMode(eTargetingMode::AutoPriority);

// 设置为最近距离模式
TargetSelector::SetMode(eTargetingMode::Closest);

# SetTarget

void SetTarget(AIBaseClient* hero)

手动设置目标选择器的目标。

参数名 参数类型 描述
hero AIBaseClient* 目标英雄
auto enemy = ObjectManager::GetEnemies()[0];
TargetSelector::SetTarget(enemy);