立即开始
超级宏
这是一个新功能,目前在测试开发阶段。
超级宏目前支持全版本 1.14.2(60级) / 1.12.1(60级) / 乌龟服 / 2.4.3(70级) / 2.5.3(80级) / 3.3.5(80级) / 3.4.3(80级) 客户端,可以对原有的宏功能进行增强。目前属于开发测试阶段,逐渐完善中
教学视频: https://www.bilibili.com/video/BV1FVxuejEbn/
如何开启
开启黑兔改模型之后,自动开启
请注意,使用超级宏前,最好彻底关闭杀毒软件,并将黑兔文件夹加入白名单。杀毒软件有可能影响程序运行
如果关闭杀毒也没效果,可以尝试安装微软库文件,可能是文件缺失
Download Visual C++ Redistributable for Visual Studio 2015 from Official Microsoft Download Center
1.12.1 乌龟服 2.4.3 3.3.5客户端,安装86(32位), 其他安装64位库
标准格式
/s S lua语句
举例子
/s S if HeathTargetPct(0,50) then Spell(116) else Spell(133) end
解释: /s S+空格 是固定格式。这个格式会被黑兔识别解析。
if HeathTargetPct(0,50) then Spell(116) else Spell(133) end 是一段lua代码,其中方法是黑兔增强的宏方法。
翻译就是如果当前目标的血量在百分0到百分50之间,就使用技能116(火球术),否则使用技能133(寒冰箭)
例子2
/s S t = AttackTime1() if t>200 or Power(1)>50 then M('/use 英勇打击') if t>200 then Sleep(1,t-200,function() if Power(1)>50 then M('/use 英勇打击') else StopCasting() end end) end end
这是战士卡英勇的宏,参数根据自己需求调整
1.12客户端和乌龟服需要使用下面
/s S t = AttackTime1() if t>200 or Power(1)>50 then Script("CastSpellByName('英勇打击')") if t>200 then Sleep(1,t-200,function() if Power(1)>50 then Script("CastSpellByName('英勇打击')") else Script("SpellStopCasting()") end end) end end上面是一个增强宏的标准格式,可以配合游戏内原有宏使用
超级宏函数库
超级宏不仅仅使用游戏内的宏编辑界面来操作,在黑兔软件界面也可以提前制作好一些函数,随时同步供给游戏内使用
此功能需要黑兔版本>= 1.10.30
例如如上图所示,在黑兔软件上编辑内容
function abc()
p=AP() Say('攻强='..p)
end然后在游戏宏中使用
/s S abc()
完全相当于
/s S function abc() p=AP() Say('攻强='..p) end abc()
巧用黑兔编辑基础库,可以解决游戏内宏字数限制问题
内置的函数
AutoLoot (黑兔版本>=1.10.14)
一键范围拾取 (不弯腰拾取,多按几下)
void AutoLoot()
(黑兔版本1.10.22)增加bool类型参数,传true的时候,拾取绑定的物品也会被拾取
/s S AutoLoot(true)
例子:
/s S AutoLoot()
将上面的做个宏,然后设置个快捷键。可以一键拾取范围内的物品AttackPower (黑兔版本>=1.10.14)
获取自身的攻击强度
int AttackPower()
简写方法名 int AP()
例子:
/s S p=AP() Say('攻强='..p)Spell
使用技能
void Spell(技能ID)
简写方法名 void S(技能ID)
例子:施放一级圣光术,其中635是一级圣光术的技能ID
/s S Spell(635)Macro
可以调用游戏内本身的宏,来达到复杂操作
void Macro(魔兽本身的宏)
简写方法名 void M(魔兽本身的宏)
注意:在1.12.1客户端和乌龟服,由于和有些插件冲突。会导致调用技能失效,可以用Script函数代替
例子:通过魔兽自带的宏施放正义圣印
/s S Macro('/cast 正义圣印')Script
可以调用游戏内本身的脚本,来达到复杂操作
注意:只支持1.12.1客户端和乌龟服
void Script(魔兽本身的脚本)
例子:通过魔兽自带的宏施放正义圣印
/s S Script("CastSpellByName('圣光术')")
等同于
/script CastSpellByName('圣光术')
等同于
/cast 圣光术Say
在控制台说话的方法,其他人看不到,用于调试
void Say(内容)
简写方法名 void Say(内容)
例子:通过魔兽自带的宏施放正义圣印
/s S Say('我是大帅哥')HeathTargetPct
可以通过目标的血量百分比来判断要使用什么技能,例如可以判断血量在百分0到20之间的时候,用斩杀,其他时间用嗜血
bool HeathTargetPct(目标血量大于百分比,目标血量小于百分比)
简写方法名 bool HTP(目标血量大于百分比,目标血量小于百分比)
例子:如果目标血量大于等于百分之0,小于等于百分50.那么使用技能116(一级寒冰箭),否则使用技能133(一级火球术)
/s S if HeathTargetPct(0,50) then Spell(116) else Spell(133) endHeathTargetLost
可以通过目标血量缺口,来判断使用什么法术。比如血量缺口2000,使用圣光术等级4 , 血量缺口5000 使用圣光术等级9 . 之类的
bool HeathTargetLost(目标血量缺失)
简写方法名 bool HTL(目标血量缺失)
例子:如果如果目标缺失10滴血,那么使用技能116(一级寒冰箭),否则使用技能133(一级火球术)
/s S if HeathTargetLost(10) then Spell(116) else Spell(133) endTargetSpellId
返回当前目标正在读条的技能ID,如果没有施法返回0
可以被用来和脚踢等技能配合,判断是否施法来施法技能。 也可以精准的通过方法返回的技能ID,来制作打断特定法术的宏
int TargetSpellId()
简写方法名 int TSI()
例子:输出目标正在读条的技能
/s S id=TargetSpellId() Say('输出='..id)AttackTime1
获取主手武器剩余计时条时间 - 单位毫秒
int AttackTime1()
简写方法名 int AT1()
例子:输出主手武器剩余计时条时间
/s S a=AttackTime1() Say('输出='..a)AttackTime2
获取副手武器剩余计时条时间 - 单位毫秒
int AttackTime2()
简写方法名 int AT2()
例子:输出副手武器剩余计时条时间
/s S a=AttackTime2() Say('输出='..a)Power
获取自身的能量值
int Power(int 能量类型)
简写方法名 int P(int 能量类型)
参数说明:
0 法力
1 怒气
2 集中值
3 能量
4 快乐值
5 符文
6 符文能量
例子:输出自身当前法力值
/s S a=Power(0) Say('输出='..a)PowerTarget
获取目标的能量值
int PowerTarget(int 能量类型)
简写方法名 int PT(int 能量类型)
参数说明:
0 法力
1 怒气
2 集中值
3 能量
4 快乐值
5 符文
6 符文能量
例子:输出目标的当前法力值
/s S a=PowerTarget(0) Say('输出='..a)Sleep
异步延迟执行函数,相同的唯一编号的Sleep方法只有第一个会被执行。执行完毕重置
void Sleep(int 唯一编号,int 延迟时间,function 方法)
参数说明:
唯一编号,传递int类型。如果没有特别需求,传递1
延迟时间,单位毫秒。 会在设置的时间后,运行传入的第三个参数
参考
/s S t = AttackTime1() if t>200 or Power(1)>50 then M('/use 英勇打击') if t>200 then Sleep(1,t-200,function() if Power(1)>50 then M('/use 英勇打击') else StopCasting() end end) end end
这是战士卡英勇的宏,参数根据自己需求调整使用得当会很有用,可以被用来做一些固定时间做什么事情。例如喊话
SpellCooldownTime
获取自己技能冷却,单位毫秒
int SpellCooldownTime(技能ID)
简写方法名 int SCT()
例子:输出圣盾术冷却时间
/s S p=SCT(642) Say('结果='..p)StopCasting
停止当前施法
void StopCasting()
简写方法名 void SC()
注意: 如果在1.12服务器和乌龟服,可以使用 /s S Script("SpellStopCasting()") 替代
例子:停止当前施法
/s S SC()ComboPoints
获取目标身上你的连击点数
int ComboPoints()
简写方法名 int CP()
例子:获取目标身上你的连击点
/s S p=CP() Say('结果='..p)TargetTargetIsSelf
判断目标的目标是不是自己
bool TargetTargetIsSelf()
简写方法名 bool TTIS()
例子:判断目标的目标是不是自己
/s S p=TTIS() if p then Say('结果=true') else Say('结果=false') endAuraRemainingTime
通过传入的光环ID,返回两个返回值
返回1: 获取自身光环剩余时间 - 单位毫秒
返回2: 获取自身光环层数
int,int AuraRemainingTime(int spell_Id)
简写方法名 int,int ART(int spellId)
注意: 参数spell_id是一个法术ID,但是有些时候不一定你释放的法术ID。具体需要通过光环的名字去数据库网站查询一下对应的法术ID
例子:输出正义圣印的持续时间 - 单位毫秒
/s S a,b=ART(21084) Say('输出='..a..' b='..b)TargetAuraRemainingTime
通过传入的光环ID,返回两个返回值
返回1: 获取目标光环剩余时间 - 单位毫秒
返回2: 获取目标光环层数
int,int TargetAuraRemainingTime(int spell_Id)
简写方法名 int,int TART(int spellId,bool isSelf)
**注意: **参数spell_id是一个法术ID,但是有些时候不一定你释放的法术ID。具体需要通过光环的名字去数据库网站查询一下对应的法术ID
**注意: **参数isSelf是一个bool值,true表示获取自己施放的光环事件 黑兔版本1.10.20开始支持这个参数
在1.12.1服务器(60级)版本服务器没有发送目标身上的BUFF或者DEBUFF剩余时间,只能目标存在这个光环的时候统一返回冷却时间99999999。不存在返回0
服务器(80级)正常
例子:输出目标身上正义圣印的持续时间 - 单位毫秒
/s S a,b=TART(21084) Say('输出='..a..' b='..b)IsCombat
返回当前玩家是否战斗中
bool IsCombat()
TeamMembers
黑兔版本>=1.11.4
获取团队成员列表,返回一个table,table里是团队成员的名字字符串
table TeamMembers()
例子:在超级宏编辑器中输入
function test_TeamMembers()
local members = TeamMembers()
print("开始循环团队信息")
for i = 1, #members do
local m = members[i]
print(m.name)
print(m.name, "小队:",m.subgroup+1)
print(" 唯一编号(guid):",m.guid)
end
end
游戏里输入
/s S test_TeamMembers()
会看到输出
糖糖代理:开始循环团队信息
糖糖代理:(自己)
糖糖代理:(自己) 小队: 1
糖糖代理: 唯一编号(guid): 5
糖糖代理:Bb
糖糖代理:Bb 小队: 1
糖糖代理: 唯一编号(guid): 27
糖糖代理:测少阿文
糖糖代理:测少阿文 小队: 1
糖糖代理: 唯一编号(guid): 51GetUnitInfo
黑兔版本>=1.11.4
通过字符串类型的guid,获取单位信息,返回一个table,table里是单位的信息
table GetUnitInfo(guid) 注意guid是字符串类型
例子:在超级宏编辑器中输入
function test_GetUnitInfo()
local info = GetUnitInfo("5") -- 这里的5就是你自己的guid,你可以通过.heitu info命令查看
if info then
print(info.name, " 职业:", info.classId, "血量:", info.health, "/", info.maxHealth)
print(" 战斗中:", info.isCombat, "施法:", info.castSpellId)
if info.auras and #info.auras > 0 then
for j, aura in ipairs(info.auras) do
print(" 光环:", aura.spellId, "层数:", aura.applications)
end
end
end
end
游戏里输入
/s S test_GetUnitInfo()
会看到输出
糖糖代理:(自己) 职业: 1 血量: 15341 / 15341
糖糖代理: 战斗中: 施法: 0
糖糖代理: 光环: 414812 层数: 0
糖糖代理: 光环: 71 层数: 0