查看: 171012|回复: 276

[攻略] 教你如何编写一个简单的符合自己需求的AHK脚本(附代码

  [复制链接]
派蒂

10

主题

213

帖子

1195

积分

Lv.4

Rank: 4

注意!有可能会被封号!注意!有可能会被封号!注意!有可能会被封号!(不过发邮件给客服可解)下载的教程可以看这篇帖子http://bbs.17173.com/thread-11190886-1-1.html
开始正题,从一键喝药开始
  1. $1::
  2. Send {1}
  3. Send {2}
  4. Send {3}
  5. Send {4}
  6. Send {5}
  7. Return
复制代码
这个是简单的一键喝药脚本,第一行的$1::表示按下1触发12345五个键位$表示1这个键被下面的代码替代了,所以不会触发循环,return结束。大括号里面只有一个命令时可以不加,复杂的命令则必须要加
学会这个之后可以考虑一些别的操作
比如熔岩护盾这个技能由护甲决定数值,我们有坚岩药水+3000护甲放在键1,有一个其他药水可以在药水持续时间内加100%护甲放在键2
我们想要每次按下熔岩护盾时触发这两个药水获得更高的数值,可以这样写
  1. $^r::
  2. Send 1
  3. Send 2
  4. Sleep 20
  5. Send ^r
  6. Return
复制代码
把熔岩护盾这个技能放在ctrl+r(^表示ctrl键,^r就是ctrl+r),$屏蔽Ctrl+r键不会无限循环
为什么要放在ctrl+r是因为不会干扰你在168聊天吹
sleep 20 表示触发12之后等待20毫秒防止网络延迟,具体数值可以自己调整,return表示结束
然后是地雷自动引爆
有简单的
  1. Loop{
  2. Send d
  3. Sleep 350
  4. }
复制代码
loop表示循环执行下面的代码,这段代码就表示每隔350毫秒按一次d,除非手动退出ahk,否则不会停止
不过,因为有链爆地雷这个技能的存在,一直按d键会丢失大量dps,所以我们用右键松开引爆的方法(因为我喜欢右键扔雷,想改的话把所有的RButton改成你想要的键)
  1. $RButton::
  2. Send {RButton Down}
  3. Loop
  4. {
  5. GetKeyState, state, RButton , P
  6. if state = U
  7.     {
  8.     Send {RButton Up}
  9.     Sleep 130
  10.     Send {d}
  11.     Break
  12.     }
  13. }
  14. Return
复制代码
这段代码也很好理解
$RButton:: 表示屏蔽鼠标右键,并用下面的代码替代
Send, {RButton Down} 表示发送鼠标右键按下的指令
Loop{ 表示循环
{}里表示循环内容
GetKeyState, state, RButton , P 表示监视鼠标状态,state为状态参数,有U和D两种,U是Up表示抬起,D为Down表示按下,RButton表示被监视的键位是鼠标右键,P表示获取物理状态
if state = U表示如果鼠标的物理状态为抬起
{}里表示如果鼠标右键抬起会发生的事情
Send {RButton Up}表示发送弹起鼠标右键的指令
Sleep 130表示等待130毫秒防止网络延迟
Send {d}表示发送d键
break表示跳出循环
return表示结束地雷杖的可以参考一下这段
  1. $RButton::
  2. Send {RButton Down}
  3. Loop
  4. {
  5. GetKeyState, state, RButton , P
  6. if state = U
  7.     {
  8.     Send {RButton Up}
  9.     Sleep 130
  10.     Send {d}
  11.     Break
  12.     }
  13. }
  14. Loop
  15. {
  16. GetKeyState, state, RButton , P
  17. if state = U
  18.     {
  19.     Sleep 1630
  20.     Send {d}
  21.     Break
  22.     }
  23. }
  24. Return
复制代码
多加了个循环

还可以用下面这段代码表示只在流放之路运行时起效,避免在网页之类的地方干扰使用,放在第一行就好
  1. #IfWinActive ahk_exe PathOfExile_x64.exe
复制代码
注意这段代码是指PathOfExile_x64.exe这个进程,如果不确定的话ctrl+alt+del打开任务管理器查看一下

另外,所有的符号均是英文符号


对AHK有兴趣学习的可以去这个网站http://ahkcn.sourceforge.net/docs/commands/(中文化的AHK帮助文档)
上面的网站偶尔会挂掉,可以去下面这个

https://wyagd001.github.io/zh-cn/docs/commands/Send.htm#Raw
本帖最后于  2020-6-17 17:25 编辑

评分

参与人数 1崇高石 +20 收起 理由
玩家U_137400501 + 20 日推

总评分: 崇高石 + 20   查看全部评分

崇高石是流放之路版块儿的专属货币,可兑换礼包、悬赏币、QB等,还可以用来购买游戏补丁等。 >> 怎么获得崇高石

回复

使用道具 举报

伊泽洛

44

主题

1037

帖子

2164

积分

Lv.5

Rank: 5Rank: 5

好东西学到了
回复

使用道具 举报

塑型者

8

主题

417

帖子

5454

积分

Lv.8

Rank: 8Rank: 8

这个有点厉害,请问如果是药侠的话,那么12345,这五个药水是不是要每个药水下面都最好根据药剂持续时间编辑好sleep的时长?
回复

使用道具 举报

0

主题

129

帖子

1002

积分

Lv.4

Rank: 4

先mark在学 感觉学不会。。
回复

使用道具 举报

7

主题

126

帖子

484

积分

Lv.2

Rank: 2Rank: 2

看不懂,鼠标宏不是更安全吗
回复

使用道具 举报

伊泽洛

46

主题

420

帖子

2830

积分

Lv.5

Rank: 5Rank: 5

好东西收藏
回复

使用道具 举报

吉尔菲

1

主题

54

帖子

222

积分

Lv.2

Rank: 2Rank: 2

看不太懂 但是感觉有点东西
回复

使用道具 举报

塑型者

38

主题

1719

帖子

8542

积分

Lv.9

Rank: 9Rank: 9Rank: 9

一直用右键引爆宏,玩土也雷很轻松
回复

使用道具 举报

2

主题

20

帖子

180

积分

Lv.2

Rank: 2Rank: 2

手动点赞,厉害厉害
回复

使用道具 举报

派蒂

10

主题

213

帖子

1195

积分

Lv.4

Rank: 4

发表于 2020-1-16 22:18
这个有点厉害,请问如果是药侠的话,那么12345,这五个药水是不是要每个药水下面都最好根据药剂持续时间编 ...

sleep的作用是推迟下一个指令发送的时间,如果你想要一个药剂生效之后生效第二个的话可以sleep,如果只是想要全体药剂不间断的话,要使用循环,不过提醒一下,这种复杂的指令可能会导致封号,而且还需要考虑到网络延迟
回复

使用道具 举报

塑型者

8

主题

417

帖子

5454

积分

Lv.8

Rank: 8Rank: 8

发表于 2020-1-17 11:12
sleep的作用是推迟下一个指令发送的时间,如果你想要一个药剂生效之后生效第二个的话可以sleep,如果只是 ...

唉……真是没法两全啊,本来还想着套用你这个方法让所有的药剂根据时长来保证不断药呢,看样子还是得手动……
回复

使用道具 举报

2

主题

39

帖子

692

积分

Lv.3

Rank: 3Rank: 3Rank: 3

$W::
Sleep 200
Send {d}
Return
烟雾地雷放在W上这样写对吗?
回复

使用道具 举报

塑型者

35

主题

1172

帖子

7324

积分

Lv.9

Rank: 9Rank: 9Rank: 9

谢谢哦  受益匪浅!!!!!
回复

使用道具 举报

0

主题

175

帖子

584

积分

Lv.2

Rank: 2Rank: 2

之前只会简单的一键喝药 ,学习到了 楼主厉害
回复

使用道具 举报

派蒂

10

主题

213

帖子

1195

积分

Lv.4

Rank: 4

发表于 2020-1-17 11:30
$W::
Sleep 200
Send {d}

$代表$后面的键位被替换掉了你需要添加一个send {w}
回复

使用道具 举报

派蒂

10

主题

213

帖子

1195

积分

Lv.4

Rank: 4

发表于 2020-1-17 11:16
唉……真是没法两全啊,本来还想着套用你这个方法让所有的药剂根据时长来保证不断药呢,看样子还是得手动 ...

其实如果你不怕被封的话也可以自动喝药,我简单写了一个你参考一下
  1. $1::
  2. send 1
  3. send 2
  4. send 3
  5. send 4
  6. SetTimer, send_1, 4500
  7. SetTimer, send_2, 6000
  8. SetTimer, send_3, 4000
  9. SetTimer, send_4, 5000
  10. return

  11. send_1:
  12.     Send 1
  13. return

  14. send_2:
  15.     Send 2
  16. return

  17. send_3:
  18.     Send 3
  19. return

  20. send_4:
  21.     Send 4
  22. return
复制代码

按下1触发脚本,发送1234指令然后等待循环,4秒发送一次1,6秒发送一次2
回复

使用道具 举报

塑型者

8

主题

417

帖子

5454

积分

Lv.8

Rank: 8Rank: 8

发表于 2020-1-17 11:43
其实如果你不怕被封的话也可以自动喝药,我简单写了一个你参考一下
按下1触发脚本,发送1234指令然后等待 ...

非常感谢,我先存下……但真心怕封。

再次感谢。
回复

使用道具 举报

0

主题

18

帖子

94

积分

Lv.2

Rank: 2Rank: 2

总觉得这种东西很危险
回复

使用道具 举报

派蒂

23

主题

789

帖子

2837

积分

Lv.5

Rank: 5Rank: 5

这个真是技术贴。
回复

使用道具 举报

派蒂

10

主题

213

帖子

1195

积分

Lv.4

Rank: 4

发表于 2020-1-17 11:47
总觉得这种东西很危险

一键喝药之类的简单指令不会被封,不过稍微复杂点的例如上面的循环吃药就有可能,不过GGG对脚本的打击主要是打击工作室,个人的话发个邮件就可以解了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

论坛合作、疑问请点击给我发信息 点击链接加入群聊【17173有料社区】