# Orbwalker

# 说明

Orbwalker命名空间提供了走砍相关的功能,可以控制攻击和移动,判断是否可以攻击或移动,获取攻击范围等功能。

# 如何使用

// 基本走砍
Vector movePosition = Game::CursorPosition();
auto target = TargetSelector::GetTarget(1000.0f, eDamageType::Physical);
Orbwalker::Orbwalk(target, movePosition);

// 设置走砍模式
Orbwalker::ActiveMode_Set(eOrbwalkingMode::Combo);

// 判断是否可以攻击或移动
if (Orbwalker::CanAttack()) {
    // 执行攻击
} else if (Orbwalker::CanMove(90.0f)) {
    // 执行移动
}

# ActiveMode

eOrbwalkingMode ActiveMode()

获取当前走砍模式。

eOrbwalkingMode currentMode = Orbwalker::ActiveMode();
if (currentMode == eOrbwalkingMode::Combo) {
    // 连招模式逻辑
}

# ActiveMode_Set

void ActiveMode_Set(eOrbwalkingMode value)

设置当前走砍模式。

参数名 参数类型 描述
value eOrbwalkingMode 走砍模式
Orbwalker::ActiveMode_Set(eOrbwalkingMode::Combo);

# CanAttack

bool CanAttack()

判断当前是否可以进行普通攻击。

if (Orbwalker::CanAttack()) {
    // 执行攻击逻辑
}

# CanMove

bool CanMove(float extraWindup)

判断当前是否可以移动。

参数名 参数类型 描述
extraWindup float 额外的收招时间
if (Orbwalker::CanMove(90.0f)) {
    // 执行移动逻辑
}

# ForceTarget

void ForceTarget(AIBaseClient* target)

强制设置走砍目标。

参数名 参数类型 描述
target AIBaseClient* 目标单位
auto target = TargetSelector::GetTarget(1000.0f, eDamageType::Physical);
if (target) {
    Orbwalker::ForceTarget(target);
}

# GetAttackRange

float GetAttackRange(AIBaseClient* target)

获取对特定目标的攻击范围。

参数名 参数类型 描述
target AIBaseClient* 目标单位
auto target = TargetSelector::GetTarget(1000.0f, eDamageType::Physical);
if (target) {
    float attackRange = Orbwalker::GetAttackRange(target);
}

# GetLastAAFinishTick

int GetLastAAFinishTick()

获取上一次普通攻击结束的游戏时间刻。

int lastAttackFinishTick = Orbwalker::GetLastAAFinishTick();

# GetLastMovePosition

Vector const& GetLastMovePosition()

获取最后一次移动的位置。

Vector lastPos = Orbwalker::GetLastMovePosition();

# GetLastMoveTime

float GetLastMoveTime()

获取最后一次移动的时间。

float lastMoveTime = Orbwalker::GetLastMoveTime();

# GetLastTarget

AIBaseClient* GetLastTarget()

获取上一次攻击的目标。

AIBaseClient* lastTarget = Orbwalker::GetLastTarget();
if (lastTarget) {
    // 使用上一次的目标
}

# GetMyProjectileSpeed

float GetMyProjectileSpeed()

获取自身普通攻击弹道速度。

float projectileSpeed = Orbwalker::GetMyProjectileSpeed();

# GetRealAutoAttackRange

float GetRealAutoAttackRange(AIBaseClient* target)

获取考虑了双方碰撞体积后的真实普通攻击范围。

参数名 参数类型 描述
target AIBaseClient* 目标单位
auto target = TargetSelector::GetTarget(1000.0f, eDamageType::Physical);
if (target) {
    float realRange = Orbwalker::GetRealAutoAttackRange(target);
}

# GetTarget

AIBaseClient* GetTarget()

获取当前走砍目标。

AIBaseClient* currentTarget = Orbwalker::GetTarget();
if (currentTarget) {
    // 使用当前目标
}

# InAutoAttackRange

bool InAutoAttackRange(AIBaseClient* target)

判断目标是否在普通攻击范围内。

参数名 参数类型 描述
target AIBaseClient* 目标单位
auto target = TargetSelector::GetTarget(1000.0f, eDamageType::Physical);
if (target && Orbwalker::InAutoAttackRange(target)) {
    // 目标在攻击范围内
}

# IsAutoAttack

bool IsAutoAttack(const char* name, std::uint32_t NameHash = 0)

判断给定的技能名称是否为普通攻击。

参数名 参数类型 描述
name const char* 技能名称
NameHash std::uint32_t 名称哈希值(可选)
const char* spellName = "YourChampionBasicAttack";
if (Orbwalker::IsAutoAttack(spellName)) {
    // 是普通攻击
}

# IsAutoAttackReset

bool IsAutoAttackReset(std::uint32_t NameHash)

判断给定的技能是否重置普通攻击。

参数名 参数类型 描述
NameHash std::uint32_t 技能名称哈希值
std::uint32_t spellNameHash = HashName_SpellData("DariusAxeGrabCone");
if (Orbwalker::IsAutoAttackReset(spellNameHash)) {
    // 是攻击重置技能
}

# MoveTo

void MoveTo(Vector const& position, float holdAreaRadius = 0, bool overrideTimer = false, bool useFixedDistance = true, bool randomizeMinDistance = true)

移动到指定位置。

参数名 参数类型 描述
position Vector const& 目标位置
holdAreaRadius float 保持区域半径
overrideTimer bool 是否覆盖计时器
useFixedDistance bool 是否使用固定距离
randomizeMinDistance bool 是否随机化最小距离
Vector targetPos(1000.0f, 500.0f, 0.0f);
Orbwalker::MoveTo(targetPos);

# Orbwalk

void Orbwalk(AIBaseClient* target, Vector const& position, float extraWindup = 90, float holdAreaRadius = 0, bool useFixedDistance = true, bool randomizeMinDistance = true)

执行走砍操作,在攻击和移动之间平衡。

参数名 参数类型 描述
target AIBaseClient* 攻击目标
position Vector const& 移动位置
extraWindup float 额外的收招时间
holdAreaRadius float 保持区域半径
useFixedDistance bool 是否使用固定距离
randomizeMinDistance bool 是否随机化最小距离
auto target = TargetSelector::GetTarget(1000.0f, eDamageType::Physical);
Vector movePosition = Game::CursorPosition();
Orbwalker::Orbwalk(target, movePosition);

# ResetAutoAttackTimer

void ResetAutoAttackTimer()

重置普通攻击计时器。

// 在使用攻击重置技能后
Orbwalker::ResetAutoAttackTimer();

# SetAttack

void SetAttack(bool b)

设置是否启用攻击。

参数名 参数类型 描述
b bool 是否启用
// 禁用攻击
Orbwalker::SetAttack(false);

// 启用攻击
Orbwalker::SetAttack(true);

# SetMinimumOrbwalkDistance

void SetMinimumOrbwalkDistance(float d)

设置最小走砍距离。

参数名 参数类型 描述
d float 最小距离
Orbwalker::SetMinimumOrbwalkDistance(100.0f);

# SetMovement

void SetMovement(bool b)

设置是否启用移动。

参数名 参数类型 描述
b bool 是否启用
// 禁用移动
Orbwalker::SetMovement(false);

// 启用移动
Orbwalker::SetMovement(true);

# SetMovementDelay

void SetMovementDelay(int delay)

设置移动延迟。

参数名 参数类型 描述
delay int 延迟时间(毫秒)
Orbwalker::SetMovementDelay(50);

# SetOrbwalkingPoint

void SetOrbwalkingPoint(Vector const& point)

设置走砍点。

参数名 参数类型 描述
point Vector const& 目标位置
Vector orbwalkPoint(1000.0f, 500.0f, 0.0f);
Orbwalker::SetOrbwalkingPoint(orbwalkPoint);

# ShouldWait

bool ShouldWait()

判断当前是否应该等待(例如等待小兵血量降低再补刀)。

if (Orbwalker::ShouldWait()) {
    // 继续等待
} else {
    // 执行攻击
}