首页 > 白马西风 > UnitXP_SP3功能
2025
11-25

UnitXP_SP3功能

最准确最具指导性的 UnitXP Service Pack 3 功能翻译。

让魔兽世界1.12原版变得更好更现代:

  • 姓名条显示会考虑视线范围。
  • 你的TAB键有更好的定位功能。
  • 能够调节摄像机的高度和位置。
  • 游戏内每秒帧数限制器。
  • 接收密语时闪烁任务栏图标。
  • 高质量的漂浮战斗文本。
  • 截图生成的是JPEG而不是TGA。
  • Lua 插件的逐步调试器。
  • 还有更多......


UnitXP_SP3是为 Vanilla 1.12 开发的一款游戏模组,旨在让游戏拥有更现代化、更优质的体验。

安装:

  • 从 https://codeberg.org/konaka/UnitXP_SP3/releases 下载

设置DLL文件:

  1. 将 UnitXP_SP3.dll 文件解压到游戏文件夹
  2. 编辑 dlls.txt 文件,增加一行内容 UnitXP_SP3.dll
  3. 通过 VanillaFixes.exe 启动游戏

设置Lua插件:

  1. 将 UnitXP_SP3_Addon 文件夹解压到 Interface/AddOns/
  2. 游戏内有一个小地图按钮可以打开配置界面。

UnitXP_SP3_Addon

当DLL和Lua插件都安装并加载时,会有一个小地图按钮打开配置界面。
通过 /unitxp 命令也能打开它。大多数功能都可以在这里配置。
目标功能可以通过游戏内菜单绑定到按键上。

额外的Lua功能

视线
local bool_abc = UnitXP("inSight", UNIT_ID_1, UNIT_ID_2);
如果 UNIT_ID_1 和 UNIT_ID_2 互相在视野内,则返回 TRUE。
距离
local double_abc = UnitXP("distanceBetween", UNIT_ID_1, UNIT_ID_2);
这样可以返回 UNIT_ID_1 和 UNIT_ID_2 之间的距离。距离判断对于远程伤害或治疗法术是准确的。
local double_abc = UnitXP("distanceBetween", UNIT_ID_1, UNIT_ID_2, "AoE");
这个距离判断对冰霜新星(神圣新星)AoE来说是准确的。
local double_abc = UnitXP("distanceBetween", UNIT_ID_1, UNIT_ID_2, "meleeAutoAttack");
这个距离判断对近战武器平砍来说是准确的。注意,近战技能和近战平砍不同:嘲讽的射程不同于普攻。
找背
local bool_abc = UnitXP("behind", UNIT_ID_1, UNIT_ID_2);
如果 UNIT_ID_1 在 UNIT_ID_2 背后,这个会返回 TRUE。
有些奇怪的怪物背部不是后背180度。你可以把范围设为更小,第三个参数默认是π/2,范围从较大的范围开始,较小的辐射范围会被判定为后方。
local back = UnitXP("behindThreshold", "set", 2);0 - π
计时器
local timer_id = UnitXP("timer", "arm", 1000, 2000, callback_function_name);
启动一个新的计时器,每1000毫秒触发一次,每2000毫秒重复一次执行。你可以通过将 callback_function_name 设为 0 停止重复。
计时器ID会作为第一个参数传递到回调函数中。
XP3计时器运行在与游戏不同的线程中,这样维护它们就不会消耗游戏时间。而且它们只会在时间到来时触发,而不是每一帧。
UnitXP("timer", "disarm", TIMER_ID);
由于XP3计时器在另一个线程中,游戏加载时不会停止。插件作者需要对PLAYER_LOGOUT事件做出反应并解除运行计时器。
local total = UnitXP("timer", "size");
返回运行计时器的总数。
操作系统通知
UnitXP("notify", "taskbarIcon");
UnitXP("notify", "systemSound");
在作系统中触发任务栏图标闪烁或声音提醒。这些功能仅在游戏处于后台时有效。
版本与加载
要判断游戏中是否存在xp3:
local xp3 = pcall(UnitXP, "nop", "nop");
存在时返回为真。
local xp3exist, xp3buildTime = pcall(UnitXP, "version", "coffTimeDateStamp");
xp3buildTime是XP3编译和构建的时间点。它是UNIX时间戳,这样你可以用数字来比较哪个更新。
local xp3exist, xp3info = pcall(UnitXP, "version", "additionalInformation");
xp3info是包含版本描述的字符串。它旨在供不同的XP3维护者用来区分版本。
性能概况
local performance = UnitXP("performanceProfile", "get");
performance会是一个显示XP3性能因子的字符串。
目标选择
这些函数可以通过游戏内的按键绑定菜单绑定到按键上。也可以通过Lua调用。
大多数定向功能遵循以下规则:

  • 当没有选择目标时,选择最近的敌人。
  • 选择玩家角色视线范围内的敌人。
  • 选择镜头前的敌人。有可能将瞄准锥角缩小于摄像机瞄准镜。第三个参数范围为,范围从,越大,越窄的瞄准锥。UnitXP("target", "rangeCone", 2.5);2.0 - infinate
  • 最远距离(farRange)默认是41,可以通过调整距离 26 - 60。UnitXP("target", "farRange", 60);
  • 当玩家处于战斗状态时,只选择处于战斗中的敌人。这一限制可以通过 UnitXP("target", "disableInCombatFilter"); 来消除。
  • 图腾、宠物和小动物则被忽视。
  • 定位函数在找到目标时返回TRUE,这样可以串联多个函数。

local found = UnitXP("target", "nearestEnemy");
锁定最近的敌人。这是唯一一个,不循环查找。
local found = UnitXP("target", "mostHP");
优先攻击血量最高的敌人。这是唯一一个,不循环查找。
local found = UnitXP("target", "worldBoss");
在Boss间循环。
local found = UnitXP("target", "nextEnemyInCycle");
local found = UnitXP("target", "previousEnemyInCycle");
在周围敌人循环。当反复触发该功能时,所有范围内的敌人都会被选中一次。
远程职业可能更喜欢用这个功能代替TAB键。
local found = UnitXP("target", "nextEnemyConsideringDistance");
local found = UnitXP("target", "previousEnemyConsideringDistance");
在周围敌人循环。敌人分为3个射程类别,这个功能会优先考虑近战距离的敌人,这样当近战距离有可选目标敌人时,其余的敌人会被忽略。0 - 8 8 - 25 25 - farRange
在射程内,这个功能会循环攻击所有范围内的敌人。0 - 8
在射程内,这个功能会循环攻击三个最近的范围内敌人。8 - 25
在射程内,功能会围绕5个最近的范围内敌人循环。25 - farRange
local found = UnitXP("target", "nextMarkedEnemyInCycle");
local found = UnitXP("target", "previousMarkedEnemyInCycle");
循环攻击标记敌人。默认顺序为:
8骷髅
7红叉(X)
6方块
5月亮
4三角
3紫钻
2大饼
1星星
你可以提供第三个参数来重新排序或限制特定标记:
local found = UnitXP("target", "nextMarkedEnemyInCycle", "138");循环顺序如下:
星星,编号1
紫钻,编号3
骷髅,编号8

觉得文章有用,微信打赏一元。



留下一个回复

你的email不会被公开。