# 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 {
// 执行攻击
}