2018年6月23日星期六

暗黑破坏神3 一键切换巅峰代码详解

国内版:https://blog.lijie.org/2018/06/23/%E6%9A%97%E9%BB%91%E7%A0%B4%E5%9D%8F%E7%A5%9E3-%E4%B8%80%E9%94%AE%E5%88%87%E6%8D%A2%E5%B7%85%E5%B3%B0/

使用罗技的鼠标宏实现在暗黑3中一键切换巅峰的功能,注释很详细了。实例始用野蛮人,一般来说组队死灵法师需要这样的功能。
需要注意的是,下面最终代码里面的鼠标坐标仅仅适用于我的显示器,至于大家的显示器在游戏中的按钮的坐标,大家可以在将鼠标移动到按钮上后,执行下面代码,看罗技鼠标console输出的数值就是你的坐标了。同时显示的还有你当前按键的编号(实例输出结果arg = 2,也就是你目前按的键在代码里对应的是2这个数字),也很关键。确定坐标和你想使用的快捷键的在程序宏中对应的编码很关键!
function OnEvent(event, arg) x,y = GetMousePosition(); --获取到当前鼠标位置,并且输出到脚本console界面,为下面获得每个按钮的坐标提供很大的帮助. OutputLogMessage("event = %s, arg = %s\n", event, arg); --输出当前按了哪个按键,同样非常关键. OutputLogMessage("z = %d, %d\n", x, y);  --输出当前鼠标坐标到console.end
执行上面的代码,可以看到目前按键信息以及坐标信息,如下图:
正式代码如下:
--本脚本以野蛮人作为测试,始用罗技G610键盘为例(鼠标同理)说明。实现按键盘的F5键将力量加满,体能为0;--按F6键将体能加满,力量为0.(此功能未实现,大家可以自己试试看)function OnEvent(event, arg) --此if语句判断是否按了F5,是的话加满力量,体能设为0. if(event == "G_PRESSED" and arg == 5) then --这里的5就是键盘上的f5,如果是鼠标,并且不清楚按键arg参数具体是多少,                                                   --可以将此处的if语句去除,看罗技console界面输出的结果.
x,y = GetMousePosition(); --获取到当前鼠标位置,并且输出到脚本console界面,                                          --为下面获得每个按钮的坐标提供很大的帮助. OutputLogMessage("event = %s, arg = %s\n", event, arg); --输出当前按了哪个按键,同样非常关键. OutputLogMessage("z = %d, %d\n", x, y);  --输出当前鼠标坐标到console.
PressKey("p");  --按P键,打开巅峰点面板. ReleaseKey("p"); Sleep(5);
MoveMouseTo(33160,44399);  --将鼠标移动到重置按钮处.这些坐标适用于我的显示器,你的显示器具体坐标还需要看上面的输出. PressAndReleaseMouseButton(1); --点击重置按钮,重置所有巅峰点.
--以下加移速. 装备上的移速来决定巅峰加多少移速点,我这里加了28点,也就是巅峰加了14%的移速. Sleep(5); MoveMouseTo(43815,31826);--将鼠标移动到加移速的按钮处. for i = 0, 27, 1 do Sleep(2); PressAndReleaseMouseButton(1); end --以上加移速
--以下加满怒气 MoveMouseTo(43576,36746); --将鼠标移动到加怒气的按钮处. PressKey("lCtrl"); --按左ctrl键 PressAndReleaseMouseButton(1);  --按左ctrl的时候,按一下左键即可加满怒气. Sleep(2); ReleaseKey("lCtrl"); --以上加满怒气
--以下加满力量 MoveMouseTo(43679,20468); --移动到力量按钮处. PressKey("lCtrl"); for i = 0, 40, 1 do  --按住ctrl键的清况下点击力量按钮40下,相当于4000力量. Sleep(2); PressAndReleaseMouseButton(1); end ReleaseKey("lCtrl"); --以上加满力量
--设置完毕后,按接受按钮. MoveMouseTo(28652,49440); PressAndReleaseMouseButton(1); endend

没有评论:

发表评论