//没登陆

欢迎您来到凯恩之角,奈非天!

帖子:14

符文:26

31#
难道要,在绑定另外一个G键,点了以后,释放之前的按键么
发表于 2020-3-25 19:31:52 |显示全部楼层

帖子:282

符文:54

32#
i秦时明月 发表于 2020-3-25 19:31
难道要,在绑定另外一个G键,点了以后,释放之前的按键么

1.jpg

有个东西还没有讲到,我先用之前讲过内容写一个实现你看下,看看能不能理解。等我之后讲到框架里专门的控制器时,这种东西的写法就非常简单了
发表于 2020-3-25 19:58:34 |显示全部楼层

帖子:14

符文:26

33#
完全理解,谢谢楼主,楼主是个热心人!! 有机会一起玩游戏!
发表于 2020-3-25 20:01:22 |显示全部楼层

帖子:14

符文:26

34#
雪落丶丿寒 发表于 2020-3-25 19:58
有个东西还没有讲到,我先用之前讲过内容写一个实现你看下,看看能不能理解。等我之后讲到框架里专门的 ...

这是LOL 走A 和一直显示攻击距离的宏,感谢楼主

dofile('K:/G502/workspace/spring.lua');

gongshu=1.95

function click_key(key)
        local status=false
        return function()
        if(status) then
                release(key)
        else
        press(key)
        end
        status=not status
        end
end

function hit_and_run()
        ms=500/gongshu +20
        while(true) do
        PressAndReleaseKey("z")
        sleep(ms)
        PressAndReleaseKey("x")
        sleep(ms)
        end
end


function init()
        main(run,6,nil,click_key('c'))
        local hit_and_run_ctrl=queue_ctrl(hit_and_run)
        main(hit_and_run_ctrl,4)
end

发表于 2020-3-25 20:52:55 |显示全部楼层

帖子:14

符文:26

35#
楼主,你绑定的键位能把键盘的宏开关键位也绑定上么
发表于 2020-3-25 22:31:03 |显示全部楼层

帖子:39

符文:24

36#
很强大 虽然也是程序员 但是lua不熟悉 要再学一门吗?七七八八在各种项目中 学了 六种主要语言 毕业前后是c java c# 工作一些年后使用js ts python 这些年甚至为了个手机flutter项目深入学习dart。企业BI学习Clojure。综合说 广而不精 平均学到五六成 可是年龄大了 现在看什么想快点都费劲 支持楼主,等有空研究一下鼠标宏(主要楼主把这个事弄到看起来有点专业 有趣)
发表于 2020-3-26 05:15:59 来自凯恩之角App |显示全部楼层

帖子:282

符文:54

37#
奈非酋之父 发表于 2020-3-26 05:15
很强大 虽然也是程序员 但是lua不熟悉 要再学一门吗?七七八八在各种项目中 学了 六种主要语言 毕 ...

感谢支持!lua语言本质也是script,和你说的tsjs区别不大,只不过一个面向网页一个面向c。抛开lua看罗技就更简单了,阉割掉了大部分的库之后使得编程小白学两天就能熟练掌握。对于程序员来说更是看看语法就能写。并且lua相对于py.的高效和小巧,以及和c的无缝对接,我相信你学了这门语言之后工作中也会更游刃有余
发表于 2020-3-26 10:14:16 来自凯恩之角App |显示全部楼层

帖子:14

符文:26

38#
仔细看了楼主写的spring里的代码,太有美感了,楼主是真大神!
发表于 2020-3-26 13:38:19 来自凯恩之角App |显示全部楼层

帖子:282

符文:54

39#
i秦时明月 发表于 2020-3-26 13:38
仔细看了楼主写的spring里的代码,太有美感了,楼主是真大神!

谢谢支持
发表于 2020-3-26 15:13:07 来自凯恩之角App |显示全部楼层

帖子:14

符文:26

40#
我肯定是达不到楼主这种水准了,我是一个上班族,一个画机械图纸的技术员,年纪大了,自己有点简单的c c++的基础,自己做点宏娱乐下,很好玩,感谢楼主的封装,给和我这样的人省了很多事,期待楼主继续完善你这个工程,加油!
发表于 2020-3-26 17:19:28 来自凯恩之角App |显示全部楼层

帖子:14

符文:26

41#
楼主继续更新教程呀
发表于 2020-3-28 11:04:35 来自凯恩之角App |显示全部楼层

帖子:282

符文:54

42#
本帖最后由 雪落丶丿寒 于 2020-3-29 00:22 编辑

下面介绍一个框架中比较基础也比较核心的控制器——自旋器。
自旋器,顾名思义指反复的去做一件相同的事。宏本身就是为了替代人进行一些机械性的操作而存在的,而自旋器则是执行这些简单而机械的反复操作的控制器
1.此控制器是一个单独线程,所以无需担心和正常的宏出现逻辑上的冲突。
2.可以实时的获知此控制器的核心参数,此核心参数可以自定义 (比如一个计时用的自旋器,可以实时获得所记时间)
首先是自旋器所要运行的函数 1.jpg

如图,执行函数实现的是按一下q键,此函数和以往的执行函数不同在于有参数返回值
此返回值由玩家定义,返回一个控制器的核心参数。我这里要记录一共执行了几次q按键,故返回次数。
而函数的参数则是上一次运行的返回值,这样就完成了一个每次进入后次数+1的实现。
参数和返回值可以不填
2.jpg

spin函数有四个参数(要重复执行的函数,重复执行的时间间隔,传入的参数初始值,自旋中止时执行的函数)
会返回一个控制器
3.jpg

将控制器的开启和中止分别绑定到g4和g5上。
如此,则用自旋控制器实现了一个简单的连点 器的作用。
注意,自旋函数中尽量不要使用sleep函数。
因为每一次执行的自旋函数是一个单独的不可分割的元 操作,即每一次进入函数后必须执行完才能被终止,里面加入了sleep函数后,可能会导致宏无法立即停止。

自旋器由于其独立线程,可以在后台静默开启执行一些插入式的操作。
例如:

4.jpg

在刚刚的基础上,添加了一个监听器,监听刚刚的test_spin自旋控制器,若其执行到5次,则中断。
这种保持原函数独立性的同时,用外界的新函数去干预其原本逻辑的行为称为插入式。就像一个插件,需要时插上去,不需要可以关掉,不影响原本的逻辑流。
如图按下了5次q之后被监听器中断。
1.test_spin('status')返回该自旋器的运行状态(true/false)
2.test_spin('get')获取该自旋器的核心参数,图中为次数。
3.A and B or C  格式为lua中的三目运算符,指若A为真,则返回B否则返回C(有一些小瑕疵)
注意,test_spin('end')仅仅是中断自旋器,再重新调用后次数会从6开始继续计数。
那么,如果想每次点击g4后自旋器重新计数怎么办呢?
5.jpg

写一个重置的函数绑定到g4即可。
如图,输出5次q被终止后,再次开启,重新计数到5次后被终止。

最后再给一个实例,是我经常用到的自旋器实现

6.jpg

此自旋器实现了一个后台静默执行的元素戒轮转。
开启自旋后,无论在宏的任何地方调用 ys_spin("get") 方法都可以直接获取到元素戒信息,无需再花费过多的逻辑去根据运行时间计算。
之前在读别人的自动陨石宏时,卡元素的释放时间那一段总会伴随大量计算,运用这种方法后对于宏作者的后期维护,以及宏本身的可读性都是很大提升。
注释写的很详细,就不赘述了,如有不理解的欢迎楼下提问。








发表于 2020-3-29 00:06:01 |显示全部楼层

帖子:282

符文:54

43#
顺便说一下,楼上提到的自旋器是一个较为底层的方法,如果不写比较复杂的宏,可以考虑直接跳过。
发表于 2020-3-29 00:29:49 |显示全部楼层

帖子:282

符文:54

44#
i秦时明月 发表于 2020-3-28 11:04
楼主继续更新教程呀

时间不是很充裕,只能抽空慢更新,见谅
发表于 2020-3-29 00:30:33 |显示全部楼层

帖子:14

符文:26

45#
楼主太强大了,我都记下了
发表于 2020-3-29 10:16:37 来自凯恩之角App |显示全部楼层
您需要登录后才可以回帖 登录 | 注册网易通行证