赵大叔 发表于 2019-2-25 23:15:46

【罗技】法师宏合集 添加一键附魔 自动升级稀有转换材料

本帖最后由 赵大叔 于 2019-3-13 23:34 编辑

原宏出自 絕對水餃感谢大佬提供的思路,在此基础上进行修改完善,侵删


原帖地址
http://bbs.d.163.com/forum.php?mod=viewthread&tid=173614959&highlight=%D0%C2%CA%D6%B8%A3%D2%F4


宏下载:


下载地址:
http://bbs.d.163.com/forum.php?mod=attachment&aid=MjkwNjk1MHw5Zjc0NjJhNHwxNTUyNDkxMjA1fDI2NDU0MTZ8MTczNzA4MjM5



3月13日更新代码:
1.大大提高自动升级稀有和转换材料速度15s升级转换完所有再也不用长时间等待
------------------------------------------------------------------
2月26日更新代码:
1.模块化部分代码,可读性更强
2.增加修改按键技能,所有附加功能都可自定义按键
3.优化代码时间复杂度
4.优化升级稀有、自动附魔等待时间和鼠标指针位置
------------------------------------------------------------------
反馈问题集中汇总

1.Q:为什么我得宏导入进去按键都没有反应?
A:要关联暗黑3的两个启动程序,32位64位都要关联,Lua是依托于宿主程序执行,不绑定无法运行



3.Q:为什么导入宏按键都不好使?A:首先你要保证你得鼠标按键是默认的(也就是键位没有自定义为其它组合键)      确保问题1你已经解决      使用自动升级稀有功能时,shift不要按住太久,否则就会退出功能
      找到如下代码段,将前面两个横线去掉,打开鼠标事件报告功能


4.Q:为什么我的奥陨宏能够正常循环,附加功能无法运行?A:一定要记得关闭奥陨宏之后才能使用附加功能,也就是关闭标识符按键才可以

5.Q:为什么循环的时候原力波放不出来?A:部分技能释放后可以打断原力波、陨石的施法后摇      原力波释放的时候可能动画效果显示不完全      但只要人物跳起来,技能按键上显示数字增益就代表释放成功

------------------------------------------------------------------
由于Lua不支持真正意义上的多线程,水饺大佬的宏是利用单线程逻辑进行技能循环
所以电脑性能和网络延迟对技能释放可能会有影响
亲测20轮元素,也就是5分钟,卡元素误差为1-2S

目前尝试使用协同程序实现模拟多线程,欢迎大佬指导一二

一、原宏使用方法


G5先对元素,关闭大小写键即可关闭
G4按键启动/暂停宏,关闭大小写键即可关闭
传送:鼠标移动到神目圈内按下左CTRL键标记传送坐标
重新标记:标记传送坐标后,在未传送之前再次按下左CTRL键则重新标记
Tips:
1.电进入奥瞬间对元素
2.若人物死亡,直接使用G5点击复活键则自动对元素
3.对好元素不可以切出游戏,否则需要重新对元素
4.不死亡、不换房间、不切出游戏,无需重新对元素


完善技能间隔,循环时间3.2s,一轮元素5发陨石,奥元素2发
完善等待时间,开始循环会在下一轮元素点释放技能
例如:火3开宏会在火2s循环,火1s开宏电元素开始循环


二、修改添加功能


完善技能配置,无视配装,只根据技能调整配置
主要分为带传送和带黑洞两种
技能按键可自行修改,脚本中修改序号选择

1.带传送或不带传送BD(不可黑洞,也可不使用传送)

塔套电甲传送


鸟套传送魔武


鸟套电甲魔武


2.带黑洞BD(可使用传送)

塔套电甲黑洞(机动性太差)


塔套传送黑洞(貌似站不住)


散件传送黑洞


散件穿怪黑洞


修改技能开始标识按键
使用中发现对好元素后大小写开启无法打字,可自行修改开始标识按键
可修改为ScrollLock或CapsLock或NumLock


三、增加部分快捷功能


注意:以下功能需未对元素时,大小写键盘关闭时有效
          需要先打开相应界面
赌博右键连点          默认:Ctrl+右键
拾取左键连点          默认:Ctrl+左键
分解背包所有物品   默认:Ctrl+中键
自动附魔                默认:中键
注意:务必选择好词缀附魔一次,否则默认附魔第一条词缀


升级稀有或转换材料
大件物品:左Shift+中键 (占据两格物品)
小件物品:右Shift+中键 (占据一格物品)
Tips:
---升级和转换功能背包物品尽量占据格数一致,否则会出现漏物品现象
---升级和转换过程中再次点击左ctrl停止
---升级和转换会从鼠标位置自左向右、自上至下开始
---升级和转换会自动从鼠标位置开始,避免因中途暂停而重新开始

------------------------------------------------------------------
附加功能代码段
赌博
--赌博
function DuBo()
k=0
while k<50
do
PressAndReleaseMouseButton(3)
Sleep(10)
k=k+1
end
分解
--分解
function FenJie()
      MoveMouseTo(6000,17000)
      Sleep(100)
      PressAndReleaseMouseButton(1)
      Sleep(50)
      k=0
      while k<60
      do
                ThingX=k%10-- 分解列
                ThingY=math.floor(k/10)--分解行
                MoveMouseTo(49000+1700*ThingX,36000+3000*ThingY)
                Sleep(2)
                PressAndReleaseMouseButton(1)
                Sleep(2)
                PressAndReleaseKey("Enter")
                Sleep(2)
                PressAndReleaseMouseButton(1)
                Sleep(2)
                PressAndReleaseKey("Enter")
                Sleep(2)
                k=k+1
      end
end自动升级装换材料
--升级稀有转换材料
function ShengJiZhuanHuan(mode)
      Thx,Thy=GetMousePosition()
      if (Thx<48151 or Thx>65149 or Thy<34501 or Thy>52499) then
                k=1
      elseif mode==2 then
                k=math.floor((Thx-48150)/1700)+1+10*math.floor((Thy-34500)/6000)
      else
                k=math.floor((Thx-48150)/1700)*6+math.floor((Thy-34500)/3000)+1
      end
      
      local Pos={
                {Posx=20000,Posy=51000,KeyNum=1,SleepTime=StepTime},
                {Posx=29000,Posy=51000,KeyNum=1,SleepTime=StepTime},
                {Posx=24500,Posy=51000,KeyNum=1,SleepTime=StepTime},
                {Posx=8100,Posy=50000,KeyNum=1,SleepTime=StepTime}
      }
      
      while k<(60/mode+1)
      do
                if mode==2 then
                        ThingX=(k-1)%10-- 升级列
                        ThingY=math.floor((k-1)/10)--升级行
                else
                        ThingX=math.floor((k-1)/6)-- 升级列
                        ThingY=(k-1)%6--升级行
                end
               
                Sleep(StepTime)
                if not MoveAndPress(Pos) then break end
                if not MoveAndPress(Pos) then break end
               
                LoopPos={Posx=49000+1700*ThingX,Posy=36000+3000*mode*ThingY,KeyNum=3,SleepTime=StepTime}
                if not MoveAndPress(LoopPos) then break end      
                if not MoveAndPress(Pos) then break end
                if not MoveAndPress(Pos) then break end
                Sleep(StepTime)
                k=k+1
      end
end自动附魔
--自动附魔
function FuMo()
      MoveMouseTo(8500,24000)
      Sleep(50)
      PressAndReleaseMouseButton(1)
      Sleep(2)
      MoveMouseTo(9000,47400)
      Sleep(50)
      PressAndReleaseMouseButton(1)
      Sleep(500)
      PressAndReleaseMouseButton(1)
end按键退出判定
--按键判定
function MoveAndPress(InPos)
      MoveMouseTo(InPos.Posx,InPos.Posy)
      if IsModifierPressed("lctrl") then
                return false
      end
      Sleep(InPos.SleepTime)
      if IsModifierPressed("lctrl") then
                return false
      end
      PressAndReleaseMouseButton(InPos.KeyNum)
      Sleep(InPos.SleepTime)      
      if IsModifierPressed("lctrl") then
                return false
      end
      return true
end


触发段代码

<font face="微软雅黑">if(event=="MOUSE_BUTTON_PRESSED"and arg==KeyGroup.PKey and IsModifierPressed(KeyGroup.MKey))then--赌博
                DuBo()--赌博物品:页、行、列
                GuanBi()
      end
      if(event=="MOUSE_BUTTON_PRESSED"and arg==KeyGroup.PKey and IsModifierPressed(KeyGroup.MKey))then----分解
                FenJie()
                GuanBi()
      end
      if(event=="MOUSE_BUTTON_PRESSED"and arg==KeyGroup.PKey and IsModifierPressed(KeyGroup.MKey))then----S升级稀有或转换材料
                ShengJiZhuanHuan(2)
                GuanBi()
      end
      if(event=="MOUSE_BUTTON_PRESSED"and arg==KeyGroup.PKey and IsModifierPressed(KeyGroup.MKey))then----升级小件稀有
                ShengJiZhuanHuan(1)
                GuanBi()
      end
      if(event=="MOUSE_BUTTON_PRESSED"and arg==FM and not IsModifierPressed("shift") and not IsModifierPressed("ctrl"))then----自动附魔
                FuMo()
                GuanBi()
      end
      if(event=="MOUSE_BUTTON_PRESSED"and arg==KeyGroup.PKey and IsModifierPressed(KeyGroup.MKey)) then----拾取
                k=25
                while k>0
                do
                        PressAndReleaseMouseButton(1)
                        Sleep(15)
                        k=k-1
                end
                GuanBi()
      end</font>





少侠云重 发表于 2019-2-25 23:26:25

收藏,好东西

骑兵之轮回 发表于 2019-2-25 23:31:52

犀利了         

我会发光155 发表于 2019-2-26 00:28:30

Lordk 发表于 2019-2-26 00:53:08

标记一发 明天试

gqlai2002 发表于 2019-2-26 01:11:32

收藏,等明天

寂静之旅 发表于 2019-2-26 06:43:18

支持!如果测试稳定,可否开放共享

赵大叔 发表于 2019-2-26 08:53:42

寂静之旅 发表于 2019-2-26 06:43
支持!如果测试稳定,可否开放共享

正在测试,目前ahk版已经写完,不过尊重凯恩规则就不在这讨论了

常小鱼 发表于 2019-2-26 09:02:14

大佬牛皮   

吃吃个鸡 发表于 2019-2-26 09:51:05

大佬,28197392@qq.com能否发个ahk,谢谢。

风行天涯 发表于 2019-2-26 09:58:35

谢谢分享。。。。。。。。。。。。。。

寂静之旅 发表于 2019-2-26 10:06:15

赵大叔 发表于 2019-2-26 08:53
正在测试,目前ahk版已经写完,不过尊重凯恩规则就不在这讨论了

静候佳音{:17_624:}

茫茫人海却空城 发表于 2019-2-26 10:31:30

支持支持!

lionlee0724 发表于 2019-2-26 10:34:27

赵大叔 发表于 2019-2-26 08:53
正在测试,目前ahk版已经写完,不过尊重凯恩规则就不在这讨论了

能否求个分享   173252705@qq.com

感谢~~~

lionlee0724 发表于 2019-2-26 10:38:12

另外请教个问题,如果我的技能快捷键对应的是QWER

那么AnJian 里面X的数字应该是对应多少呢?
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【罗技】法师宏合集 添加一键附魔 自动升级稀有转换材料