# AIBaseClient

# 说明

AIBaseClient类提供了AI单位相关的功能,包括AI单位的行为控制、状态获取和操作等基础功能。该类继承自GameObject类,用于控制和获取游戏中AI单位的各种属性和行为。

# 如何使用

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    bool isMoving = aiClient->IsMoving();
    // 使用AI客户端进行其他操作
}

# ActionState

eGameObjectActionState ActionState()

获取当前AI单位的行动状态。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    eGameObjectActionState state = aiClient->ActionState();
    // 使用行动状态进行判断
}

# AllShield

float AllShield()

获取AI单位的全部护盾值。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float totalShield = aiClient->AllShield();
    // 处理护盾信息
}

# Armor

float Armor()

获取当前AI单位的护甲值。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float armor = aiClient->Armor();
    // 使用护甲值进行计算
}

# AttackCastDelay

float AttackCastDelay()

获取当前AI单位的攻击施放延迟。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float castDelay = aiClient->AttackCastDelay();
    // 使用攻击施放延迟进行计算
}

# AttackDelay

float AttackDelay()

获取当前AI单位的攻击延迟。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float delay = aiClient->AttackDelay();
    // 使用攻击延迟进行计算
}

# AttackRange

float AttackRange()

获取当前AI单位的攻击范围。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float atkRange = aiClient->AttackRange();
    // 使用攻击范围进行判断
}

# AttackSpeedMod

float AttackSpeedMod()

获取当前AI单位的攻击速度修正值。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float atkSpeedMod = aiClient->AttackSpeedMod();
    // 使用攻击速度修正值进行计算
}

# BaseAttackDamage

float BaseAttackDamage()

获取当前AI单位的基础攻击力。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float baseAD = aiClient->BaseAttackDamage();
    // 使用基础攻击力进行计算
}

# BasicAttack

SpellData* BasicAttack()

获取当前AI单位的基础攻击数据。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    SpellData* basicAttack = aiClient->BasicAttack();
    // 使用基础攻击数据进行处理
}

# Buffs

std::vector<BuffInstance*>const& Buffs()

获取当前AI单位的所有Buff。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    auto& buffs = aiClient->Buffs();
    for (auto buff : buffs) {
        // 处理每个buff
    }
}

# BuyItem

void BuyItem(int ItemID)

购买指定ID的物品。

参数名字 参数类型 描述
ItemID int 物品ID
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    // 购买长剑
    aiClient->BuyItem(1036);
}

# CalcDamage

double CalcDamage(AIBaseClient* target, eDamageType damageType, double amount)

计算对目标造成的伤害值。

参数名字 参数类型 描述
target AIBaseClient* 目标单位
damageType eDamageType 伤害类型
amount double 伤害基础值
AIBaseClient* aiClient = GetAIBaseClient();
AIBaseClient* target = GetTargetUnit();
if (aiClient && target) {
    double damage = aiClient->CalcDamage(target, eDamageType::Physical, 100.0);
    // 使用计算的伤害值进行判断
}

# CanAttack

bool CanAttack()

判断当前AI单位是否可以攻击。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->CanAttack()) {
    // 单位可以攻击
}

# CanCast

bool CanCast()

判断当前AI单位是否可以施法。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->CanCast()) {
    // 单位可以施法
}

# CanMove

bool CanMove()

判断当前AI单位是否可以移动。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->CanMove()) {
    // 单位可以移动
}

# CanSelect

bool CanSelect()

判断当前AI单位是否可以被选择。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->CanSelect()) {
    // 单位可以被选择
}

# ChampionName

const char* ChampionName()

获取AI单位的英雄名称。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    const char* name = aiClient->ChampionName();
    // 使用英雄名称进行处理
}

# ChangeSkin

void ChangeSkin(const char* model, std::uint32_t skin)

更改AI单位的皮肤。

参数名字 参数类型 描述
model const char* 模型名称
skin std::uint32_t 皮肤ID
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    // 更改为ID为5的皮肤
    aiClient->ChangeSkin(aiClient->ChampionName(), 5);
}

# Crit

float Crit()

获取当前AI单位的暴击几率。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float critChance = aiClient->Crit();
    // 使用暴击几率进行计算
}

# CritDamageMultiplier

float CritDamageMultiplier()

获取当前AI单位的暴击伤害倍率。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float critMult = aiClient->CritDamageMultiplier();
    // 使用暴击伤害倍率进行计算
}

# DashSpeed

float DashSpeed()

获取AI单位冲刺(dash)的速度。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsDashing()) {
    float speed = aiClient->DashSpeed();
    // 使用冲刺速度信息
}

# Direction

Vector const& Direction()

获取当前AI单位的朝向方向。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    Vector dir = aiClient->Direction();
    // 使用朝向方向进行计算
}

# Distance

float Distance(AIBaseClient* anotherUnit, bool squared = false)

计算当前AI单位与另一个单位之间的距离。

参数名字 参数类型 描述
anotherUnit AIBaseClient* 另一个单位
squared bool 是否返回平方距离,默认为false
AIBaseClient* aiClient = GetAIBaseClient();
AIBaseClient* target = GetTargetUnit();
if (aiClient && target) {
    float dist = aiClient->Distance(target);
    if (dist < 500.0f) {
        // 当距离小于500时执行操作
    }
}

# Distance

float Distance(const Vector& point, bool squared = false)

计算当前AI单位与指定位置之间的距离。

参数名字 参数类型 描述
point Vector 目标位置
squared bool 是否返回平方距离,默认为false
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    Vector targetPos(100.0f, 0.0f, 200.0f);
    float dist = aiClient->Distance(targetPos);
    if (dist < 500.0f) {
        // 当距离小于500时执行操作
    }
}

# FindItem

InventoryItem* FindItem(int itemId)

根据物品ID查找物品。

参数名字 参数类型 描述
itemId int 物品ID
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    // 查找ID为3157的物品(沙漏)
    InventoryItem* zhonya = aiClient->FindItem(3157);
    if (zhonya) {
        // 物品存在,进行处理
    }
}

# FlatArmorMod

float FlatArmorMod()

获取当前AI单位的额外护甲值。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float bonusArmor = aiClient->FlatArmorMod();
    // 使用额外护甲值进行计算
}

# FlatSpellBlockMod

float FlatSpellBlockMod()

获取当前AI单位的额外魔法抗性。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float bonusMR = aiClient->FlatSpellBlockMod();
    // 使用额外魔法抗性进行计算
}

# GetAutoAttackDamage

double GetAutoAttackDamage(AIBaseClient* target, bool includePassive = false)

计算对目标的普通攻击伤害。

参数名字 参数类型 描述
target AIBaseClient* 目标单位
includePassive bool 是否包含被动效果,默认为false
AIBaseClient* aiClient = GetAIBaseClient();
AIBaseClient* target = GetTargetUnit();
if (aiClient && target) {
    double aaDamage = aiClient->GetAutoAttackDamage(target, true);
    // 使用计算的普通攻击伤害进行判断
}

# GetBuff

BuffInstance* GetBuff(std::uint32_t buffNameHash)

根据Buff名称的哈希值获取特定Buff实例。

参数名字 参数类型 描述
buffNameHash std::uint32_t Buff名称的哈希值
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    BuffInstance* stun = aiClient->GetBuff(HashName_Buff("stunbuff"));
    if (stun) {
        // 处理眩晕buff
    }
}

# GetBuffCaster

AIBaseClient* GetBuffCaster(std::uint32_t buffNameHash)

获取指定Buff的施放者。

参数名字 参数类型 描述
buffNameHash std::uint32_t Buff名称的哈希值
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    AIBaseClient* caster = aiClient->GetBuffCaster(HashName_Buff("ignite"));
    if (caster) {
        // 处理点燃施放者
    }
}

# GetBuffCount

int GetBuffCount(std::uint32_t buffNameHash)

获取指定Buff的层数。

参数名字 参数类型 描述
buffNameHash std::uint32_t Buff名称的哈希值
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    int stacks = aiClient->GetBuffCount(HashName_Buff("twitchdeadlyvenom"));
    // 使用层数进行判断
}

# GetBuffCountAlt

int GetBuffCountAlt(std::uint32_t buffNameHash)

获取指定Buff的替代层数计数。

参数名字 参数类型 描述
buffNameHash std::uint32_t Buff名称的哈希值
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    int altStacks = aiClient->GetBuffCountAlt(HashName_Buff("brabumbuff"));
    // 使用替代层数进行判断
}

# GetBuffEndTime

float GetBuffEndTime(std::uint32_t buffNameHash)

获取指定Buff的结束时间。

参数名字 参数类型 描述
buffNameHash std::uint32_t Buff名称的哈希值
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float endTime = aiClient->GetBuffEndTime(HashName_Buff("stunbuff"));
    // 使用结束时间进行判断
}

# GetIgniteDamage

double GetIgniteDamage(AIBaseClient* target)

计算点燃对目标造成的伤害。

参数名字 参数类型 描述
target AIBaseClient* 目标单位
AIBaseClient* aiClient = GetAIBaseClient();
AIBaseClient* target = GetTargetUnit();
if (aiClient && target) {
    double igniteDamage = aiClient->GetIgniteDamage(target);
    // 使用计算的点燃伤害进行判断
}

# GetItem

InventoryItem* GetItem(eSpellSlot slot)

获取指定槽位的物品。

参数名字 参数类型 描述
slot eSpellSlot 物品槽位
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    InventoryItem* item = aiClient->GetItem(eSpellSlot::Item1);
    if (item) {
        // 使用物品数据进行处理
    }
}

# GetPath

void GetPath(Vector const&amp; Start, Vector const&amp; End, std::vector&lt;Vector&gt;&amp; Output)

计算从起点到终点的路径。

参数名字 参数类型 描述
Start Vector 起始位置
End Vector 目标位置
Output std::vector<Vector>& 输出参数,用于存储计算的路径
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    Vector start = aiClient->Position();
    Vector end(1000.0f, 0.0f, 1000.0f);
    std::vector<Vector> calculatedPath;
    aiClient->GetPath(start, end, calculatedPath);
    // 使用计算的路径进行处理
}

# GetSmiteDamage

double GetSmiteDamage(AIBaseClient* target)

计算惩戒对目标造成的伤害。

参数名字 参数类型 描述
target AIBaseClient* 目标单位
AIBaseClient* aiClient = GetAIBaseClient();
AIBaseClient* jungle = GetJungleMonster();
if (aiClient && jungle) {
    double smiteDamage = aiClient->GetSmiteDamage(jungle);
    // 使用计算的惩戒伤害进行判断
}

# GetSpell

SpellDataInst* GetSpell(eSpellSlot slot)

获取指定槽位的技能实例。

参数名字 参数类型 描述
slot eSpellSlot 技能槽位
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    SpellDataInst* qSpell = aiClient->GetSpell(eSpellSlot::Q);
    if (qSpell) {
        // 使用Q技能的数据进行处理
    }
}

# GetSpellDamage

double GetSpellDamage(AIBaseClient* target, std::uint32_t spellNameHash)

计算技能对目标造成的伤害。

参数名字 参数类型 描述
target AIBaseClient* 目标单位
spellNameHash std::uint32_t 技能名称的哈希值
AIBaseClient* aiClient = GetAIBaseClient();
AIBaseClient* target = GetTargetUnit();
if (aiClient && target) {
    double qDamage = aiClient->GetSpellDamage(target, HashName_SpellData("AatroxQ"));
    // 使用计算的技能伤害进行判断
}

# GetSpellDamage

double GetSpellDamage(AIBaseClient* target, eSpellSlot slot, int stage = 0)

计算指定槽位的技能对目标造成的伤害。

参数名字 参数类型 描述
target AIBaseClient* 目标单位
slot eSpellSlot 技能槽位
stage int 技能阶段,默认为0
AIBaseClient* aiClient = GetAIBaseClient();
AIBaseClient* target = GetTargetUnit();
if (aiClient && target) {
    double rDamage = aiClient->GetSpellDamage(target, eSpellSlot::R);
    // 使用计算的R技能伤害进行判断
}

# GetSpellSlot

eSpellSlot GetSpellSlot(std::uint32_t SDataName)

根据技能数据名称获取技能槽位。

参数名字 参数类型 描述
SDataName std::uint32_t 技能数据名称的哈希值
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    eSpellSlot flashSlot = aiClient->GetSpellSlot(HashName_SpellData("SummonerFlash"));
    if (flashSlot != eSpellSlot::Unknown) {
        // 处理闪现技能
    }
}

# GetSpellState

eSpellState GetSpellState(eSpellSlot slot)

获取指定槽位技能的状态。

参数名字 参数类型 描述
slot eSpellSlot 技能槽位
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    eSpellState state = aiClient->GetSpellState(eSpellSlot::R);
    // 使用R技能的状态进行判断
}

# Gold

float Gold()

获取当前AI单位拥有的金币数量。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float gold = aiClient->Gold();
    // 使用金币数量进行判断
}

# HPBarPosition

void HPBarPosition(Vector& Output)

获取当前AI单位生命条的屏幕位置。

参数名字 参数类型 描述
Output Vector& 输出参数,用于存储生命条位置
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    Vector hpBarPos;
    aiClient->HPBarPosition(hpBarPos);
    // 使用生命条位置进行处理
}

# HPBarStacks

float HPBarStacks()

获取当前AI单位的生命条层数。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float hpStacks = aiClient->HPBarStacks();
    // 使用生命条层数进行处理
}

# Hash

std::uint32_t Hash()

获取AI单位的哈希值。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    std::uint32_t hash = aiClient->Hash();
    // 使用哈希值进行标识或比较
}

# HasBuff

bool HasBuff(std::uint32_t buffNameHash)

判断AI单位是否拥有指定的Buff。

参数名字 参数类型 描述
buffNameHash std::uint32_t Buff名称的哈希值
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->HasBuff(HashName_Buff("zhonyasringshield"))) {
    // 单位有中亚沙漏效果
}

# HasBuffOfType

bool HasBuffOfType(eBuffType Type)

判断AI单位是否拥有指定类型的Buff。

参数名字 参数类型 描述
Type eBuffType Buff类型
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->HasBuffOfType(eBuffType::Stun)) {
    // 单位有眩晕类型的buff
}

# HasBuffOfType

bool HasBuffOfType(const std::vector&lt;eBuffType&gt;& Types)

判断AI单位是否拥有指定类型列表中的任一Buff。

参数名字 参数类型 描述
Types std::vector<eBuffType> Buff类型列表
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    std::vector<eBuffType> ccTypes = {eBuffType::Stun, eBuffType::Silence, eBuffType::Taunt};
    if (aiClient->HasBuffOfType(ccTypes)) {
        // 单位有控制类型的buff
    }
}

# Health

float Health()

获取AI单位当前的生命值。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float health = aiClient->Health();
    // 检查AI单位的生命值
}

# HealthPercent

float HealthPercent()

获取AI单位的生命值百分比。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float healthPct = aiClient->HealthPercent();
    if (healthPct < 30.0f) {
        // 当生命值低于30%时执行操作
    }
}

# Icon

uintptr_t* Icon()

获取当前AI单位的图标指针。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    uintptr_t* icon = aiClient->Icon();
    // 使用图标指针进行处理
}

# IsAsleep

bool IsAsleep()

判断当前AI单位是否处于睡眠状态。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsAsleep()) {
    // 单位处于睡眠状态
}

# IsChanneling

bool IsChanneling()

判断当前AI单位是否正在引导技能。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsChanneling()) {
    // 单位正在引导技能
}

# IsCharmed

bool IsCharmed()

判断当前AI单位是否处于魅惑状态。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsCharmed()) {
    // 单位处于魅惑状态
}

# IsControlled

bool IsControlled()

判断当前AI单位是否处于被控制状态。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsControlled()) {
    // 单位处于被控制状态
}

# IsCastingInterruptableSpell

int IsCastingInterruptableSpell()

判断当前AI单位是否正在施放可打断的技能。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    int priority = aiClient->IsCastingInterruptableSpell();
    if (priority > 0) {
        // 可以打断目标的技能,优先级为priority
    }
}

返回值:

  • 2 = 高优先级
  • 1 = 低优先级
  • 0 = 没有施放可打断技能

# IsDashing

bool IsDashing()

判断AI单位当前是否正在冲刺(dash)。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsDashing()) {
    // AI单位正在冲刺中
}

# IsDisarmed

bool IsDisarmed()

判断当前AI单位是否处于缴械状态。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsDisarmed()) {
    // 单位处于缴械状态
}

# IsEpicMonster

bool IsEpicMonster()

判断当前AI单位是否是史诗级野怪(如大龙、小龙等)。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsEpicMonster()) {
    // 单位是史诗级野怪
}

# IsFacing

bool IsFacing(AIBaseClient* target)

判断当前AI单位是否面向目标单位。

参数名字 参数类型 描述
target AIBaseClient* 目标单位
AIBaseClient* aiClient = GetAIBaseClient();
AIBaseClient* target = GetTargetUnit();
if (aiClient && target && aiClient->IsFacing(target)) {
    // 当前单位正面向目标
}

# IsFeared

bool IsFeared()

判断当前AI单位是否处于恐惧状态。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsFeared()) {
    // 单位处于恐惧状态
}

# IsFleeing

bool IsFleeing()

判断当前AI单位是否处于逃跑状态。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsFleeing()) {
    // 单位处于逃跑状态
}

# IsGhosted

bool IsGhosted()

判断当前AI单位是否处于幽灵状态。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsGhosted()) {
    // 单位处于幽灵状态
}

# IsInvulnerable

bool IsInvulnerable()

判断当前AI单位是否处于无敌状态。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsInvulnerable()) {
    // 单位处于无敌状态
}

# IsLargeMonster

bool IsLargeMonster()

判断当前AI单位是否是大型野怪。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsLargeMonster()) {
    // 单位是大型野怪
}

# IsMagicImmune

bool IsMagicImmune()

判断当前AI单位是否具有魔法免疫。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsMagicImmune()) {
    // 单位具有魔法免疫
}

# IsMelee

bool IsMelee()

判断当前AI单位是否是近战单位。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsMelee()) {
    // 单位是近战单位
}

# IsMeleeMinion

bool IsMeleeMinion()

判断当前AI单位是否是近战小兵。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsMeleeMinion()) {
    // 单位是近战小兵
}

# IsMinion

bool IsMinion()

判断当前AI单位是否是小兵。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsMinion()) {
    // 单位是小兵
}

# IsMoving

bool IsMoving()

判断AI单位当前是否正在移动。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsMoving()) {
    // AI单位正在移动中
}

# IsMovingInSameDirection

bool IsMovingInSameDirection(AIBaseClient* target)

判断当前AI单位是否与目标单位朝相同方向移动。

参数名字 参数类型 描述
target AIBaseClient* 目标单位
AIBaseClient* aiClient = GetAIBaseClient();
AIBaseClient* target = GetTargetUnit();
if (aiClient && target && aiClient->IsMovingInSameDirection(target)) {
    // 两个单位朝相同方向移动
}

# IsPet

bool IsPet(bool includeClones = true)

判断当前AI单位是否是宠物(如蜘蛛、蚂蚱、安妮熊等)。

参数名字 参数类型 描述
includeClones bool 是否包含克隆体,默认为true
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsPet()) {
    // 单位是宠物
}

# IsPhysicalImmune

bool IsPhysicalImmune()

判断当前AI单位是否具有物理免疫。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsPhysicalImmune()) {
    // 单位具有物理免疫
}

# IsPlant

bool IsPlant()

判断当前AI单位是否是植物(果实)。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsPlant()) {
    // 单位是植物(果实)
}

# IsRanged

bool IsRanged()

判断当前AI单位是否是远程单位。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsRanged()) {
    // 单位是远程单位
}

# IsRangedMinion

bool IsRangedMinion()

判断当前AI单位是否是远程小兵。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsRangedMinion()) {
    // 单位是远程小兵
}

# IsReady

bool IsReady(eSpellSlot slot, int t = 0)

判断指定槽位的技能是否已准备好。

参数名字 参数类型 描述
slot eSpellSlot 技能槽位
t int 额外时间(毫秒),默认为0
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsReady(eSpellSlot::R)) {
    // R技能已准备好
}

# IsRooted

bool IsRooted()

判断当前AI单位是否处于定身状态。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsRooted()) {
    // 单位处于定身状态
}

# IsSiegeMinion

bool IsSiegeMinion()

判断当前AI单位是否是炮车兵。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsSiegeMinion()) {
    // 单位是炮车兵
}

# IsSilenced

bool IsSilenced()

判断当前AI单位是否处于沉默状态。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsSilenced()) {
    // 单位处于沉默状态
}

# IsStealthed

bool IsStealthed()

判断当前AI单位是否处于隐身状态。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsStealthed()) {
    // 单位处于隐身状态
}

# IsStunned

bool IsStunned()

判断当前AI单位是否处于眩晕状态。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsStunned()) {
    // 单位处于眩晕状态
}

# IsSuperMinion

bool IsSuperMinion()

判断当前AI单位是否是超级兵。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsSuperMinion()) {
    // 单位是超级兵
}

# IsSupressed

bool IsSupressed()

判断当前AI单位是否处于压制状态。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsSupressed()) {
    // 单位处于压制状态
}

# IsTargetable

bool IsTargetable()

判断当前AI单位是否可被选为目标。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsTargetable()) {
    // 单位可被选为目标
}

# IsTaunted

bool IsTaunted()

判断当前AI单位是否处于嘲讽状态。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsTaunted()) {
    // 单位处于嘲讽状态
}

# IsValidTarget

bool IsValidTarget(float range = FLT_MAX, bool checkTeam = true, Vector const& from = Vector::Zero, bool ignoreInvulnerable = false)

判断AI单位是否是有效目标。

参数名字 参数类型 描述
range float 检查范围,默认为最大浮点数
checkTeam bool 是否检查队伍,默认为true
from Vector 检查的起始位置,默认为零向量
ignoreInvulnerable bool 是否忽略无敌状态,默认为false
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsValidTarget(800.0f)) {
    // 目标有效且在800范围内
}

# IsWard

bool IsWard()

判断当前AI单位是否是眼位。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsWard()) {
    // 单位是眼位
}

# IsZombie

bool IsZombie()

判断当前AI单位是否处于僵尸状态。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->IsZombie()) {
    // 单位处于僵尸状态
}

# IssueOrder

bool IssueOrder(eGameObjectOrder order, AIBaseClient* unit, bool triggerEvent = true)

向AI单位发送指令,指定目标单位。

参数名字 参数类型 描述
order eGameObjectOrder 指令类型
unit AIBaseClient* 目标单位
triggerEvent bool 是否触发事件,默认为true
AIBaseClient* aiClient = GetAIBaseClient();
AIBaseClient* target = GetTargetUnit();
if (aiClient && target) {
    bool success = aiClient->IssueOrder(eGameObjectOrder::AttackUnit, target);
}

# IssueOrder

bool IssueOrder(eGameObjectOrder order, Vector const& position, bool triggerEvent = true)

向AI单位发送指令,指定目标位置。

参数名字 参数类型 描述
order eGameObjectOrder 指令类型
position Vector 目标位置
triggerEvent bool 是否触发事件,默认为true
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    Vector targetPos(100.0f, 0.0f, 200.0f);
    bool success = aiClient->IssueOrder(eGameObjectOrder::MoveTo, targetPos);
}

# Level

int Level()

获取当前AI单位的等级。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    int level = aiClient->Level();
    // 使用单位等级进行判断
}

# Mana

float Mana()

获取AI单位当前的法力值。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float mana = aiClient->Mana();
    // 使用法力值信息
}

# ManaPercent

float ManaPercent()

获取AI单位的法力值百分比。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float manaPct = aiClient->ManaPercent();
    if (manaPct > 50.0f) {
        // 当法力值高于50%时执行操作
    }
}

# ManaCost

float ManaCost(eSpellSlot slot)

获取指定技能消耗的法力值。

参数名字 参数类型 描述
slot eSpellSlot 技能槽位
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float cost = aiClient->ManaCost(eSpellSlot::Q);
    // 使用Q技能的法力消耗进行判断
}

# MaxHealth

float MaxHealth()

获取AI单位的最大生命值。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float maxHealth = aiClient->MaxHealth();
    float currentHealth = aiClient->Health();
    float healthPercentage = (currentHealth / maxHealth) * 100.0f;
}

# MaxMana

float MaxMana()

获取AI单位的最大法力值。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float maxMana = aiClient->MaxMana();
    float currentMana = aiClient->Mana();
    float manaPercentage = (currentMana / maxMana) * 100.0f;
}

# MoveTo

bool MoveTo(const Vector& position)

控制AI单位移动到指定位置。

参数名字 参数类型 描述
position Vector 目标位置的三维坐标
AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    Vector targetPos(100.0f, 0.0f, 200.0f);
    bool success = aiClient->MoveTo(targetPos);
}

# MoveSpeed

float MoveSpeed()

获取当前AI单位的移动速度。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float ms = aiClient->MoveSpeed();
    // 使用移动速度进行计算
}

# Owner

AIBaseClient* Owner()

获取当前AI单位的拥有者。如果调用此函数的对象是提伯斯(Tibbers),将返回安妮(拥有者)。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    AIBaseClient* owner = aiClient->Owner();
    if (owner) {
        // 处理拥有者
    }
}

# Path

std::vector&lt;Vector&gt;const&amp; Path()

获取当前AI单位的移动路径。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    auto& path = aiClient->Path();
    if (!path.empty()) {
        // 处理移动路径
    }
}

# PhysicalShield

float PhysicalShield()

获取AI单位的物理护盾值。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float physShield = aiClient->PhysicalShield();
    // 处理物理护盾信息
}

# Position

Vector const& Position()

获取AI单位当前的位置。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    Vector position = aiClient->Position();
    // 使用位置信息
}

# ServerPosition

Vector const& ServerPosition()

获取当前AI单位在服务器上的位置。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    Vector serverPos = aiClient->ServerPosition();
    // 使用服务器位置进行计算
}

# SkinId

std::uint32_t SkinId()

获取当前AI单位的皮肤ID。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    std::uint32_t skinId = aiClient->SkinId();
    // 使用皮肤ID进行判断
}

# SkinName

const char* SkinName()

获取当前AI单位的皮肤名称。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    const char* skinName = aiClient->SkinName();
    // 使用皮肤名称进行处理
}

# SpellBlock

float SpellBlock()

获取当前AI单位的魔法抗性。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float magicResist = aiClient->SpellBlock();
    // 使用魔法抗性进行计算
}

# SpellBook

Spellbook* SpellBook()

获取当前AI单位的技能书。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    Spellbook* book = aiClient->SpellBook();
    if (book) {
        // 使用技能书进行处理
    }
}

# StatusFlags

eGameObjectStatusFlags StatusFlags()

获取当前AI单位的状态标志。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    eGameObjectStatusFlags flags = aiClient->StatusFlags();
    // 使用状态标志进行判断
}

# Stop

void Stop()

停止AI单位当前的所有行为。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    aiClient->Stop();
}

# TotalAttackDamage

float TotalAttackDamage()

获取当前AI单位的总攻击力(基础+额外)。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float totalAD = aiClient->TotalAttackDamage();
    // 使用总攻击力进行计算
}

# TotalMagicalDamage

float TotalMagicalDamage()

获取当前AI单位的总法术强度。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient) {
    float totalAP = aiClient->TotalMagicalDamage();
    // 使用总法术强度进行计算
}

# VisibleOnScreen

bool VisibleOnScreen()

判断当前AI单位是否在屏幕上可见。

AIBaseClient* aiClient = GetAIBaseClient();
if (aiClient && aiClient->VisibleOnScreen()) {
    // 单位在屏幕上可见
}