北少室吧 关注:254,748贴子:2,949,122
  • 11回复贴,共1
相面算卦修鞋配钥匙


IP属地:山东1楼2023-01-30 00:11回复
    盒子那边不让发取色相关的,也不知道这边让不让发,先留个群,659175893


    IP属地:山东2楼2023-01-30 00:13
    回复
      既然写了就继续发了取色及其自动化按键也是一个争议的话题。
      源标题【PVE易经AI尝试(开源)】


      IP属地:山东5楼2023-02-02 00:24
      回复
        前言
        在最初的玩游戏的时候,是新奇感,那个时候大家普遍认为不好好练手法是打不高的;再后来,只练手法可能也不够了,于是研究理论搞起了数学,理论实践结合;而以后,可能会是想要打出一定的上限,要去研究代码了,哪怕是辅助性质的。
        1 为什么要使用代码
        这里代码既指游戏内的宏和也包括游戏外的各种。先说内置宏人力做不到的事情,并不是说人会犯错而宏不会,这些人力都可以尽力做到的,做不到的例子比如当前橙武特效剩余时间为1.4—1.6秒之间,GCD正好刚过且包括延迟按1.5秒算,我们需要考虑下一个技能是打韦陀还是拿云或是其他别的,如果剩余1.4下一个技能时特效是消失了可能要打别的了,如果是1.6秒那还能再打一个特效韦陀。0.1秒甚至更小的时间判断这就不是人力能做到的了。
        游戏外的按键,首先是速度上,可能越来越多的人也意识到了这里也重提一下,自己实际测过很多才真正意识到这东西对于输出的影响非常非常大,电脑性能、按键速度、网速这些甚至可以说是决定熟手间差距的主要因素,我个人电脑同天同地点同五分钟凌晨就可以比晚高峰多打两个技能。另外再补充一个例子,擒龙金身这些非GCD技能最优还是在GCD后期释放,在不影响下一个GCD技能时间自然是越往后越好,这显然也不是纯手动能比的。
        2 开源,码农行业的意思是指开放源代码,这里大部分内容还是程序相关的,主要还是面向有一定代码基础的,或者喜欢学习研究代码的,实际搞不来随便了解下原理也行,毕竟代码也是基于易经的PVE循环的逻辑。再或者实在排斥程序,也推荐下隔壁罪歌做的纯配置的易经工具并且那边还有相关讨论群。当然能搞代码还是沉心搞,源码在自己手里也就意味着自己有绝对的主动权。
        3 包括其他职业可能也都在研究本职的程序按键,当然多数可能是暗地里,这里也只是开源分享下,行业老油条表示只管挖坑不管埋(直接开源木有售后)~


        IP属地:山东6楼2023-02-02 00:25
        回复
          一流程框图
          我们先设想一下,如果是手动打输出,怎么能描述下输出循环逻辑呢。简单概括就是围绕职业能量禅那,用普渡守缺横扫攒豆,用韦陀拿云耗豆打终结技,期间还会穿插一些buff,比如目标易伤buff横扫、擒龙爆发buff、随机的橙武特效等。于是我们把这种思路想要用程序实现,先画个图就是:


          IP属地:山东7楼2023-02-02 00:26
          回复
            这个图就比较通俗易懂,说白了就是程序识别下现在是几豆,如擒龙是在开启擒龙期还是在CD还是CD已经好了,然后用程序逻辑判断下,打出对应的技能就行。这样挺好,但是如果多想点会引出两个进阶问题:
            1 程序上的优化,擒龙这种长技能CD为60秒,不需要一直监控(对,我们的程序不能看西山居看齐),也就是说擒龙一但释放,在接下来的五十多秒是不需要用我们一直盯着识别擒龙CD是否就绪,这些细节的优化对于按键速度的提升影响很大的~
            2 打法上的优化,在进阶向的输出循环手法里,把守缺更多的用在擒龙爆发期会更好即当擒龙CD临近时攒守缺,当页因临近时打空守缺,再比如金身、擒龙这些在GCD的末期开是比较好的。
            如果程序上要实现上述,在程序内部必然要维护一套变量来记录这些数值,比如擒龙二业的CD,比如GCD的时间,然后程序自己计时,要知道计算机自己算加减法比做图片识别可快太多了。
            于是进阶后的流程图为:


            IP属地:山东8楼2023-02-02 00:26
            回复

              这也就解释了这套代码为什么不是直接【判断】—【按技能】这种,而是好像多了很多变量的逻辑包括对变量的判断计数等。


              IP属地:山东9楼2023-02-02 00:27
              回复
                二程序说明
                这里用的工具是按键精灵,源码基本全程注释,就简单概括下:
                前115行,全局变量定义。
                g_ctl开头,一般为控制型变量。
                g_cd开头,记录相关CD的。
                g_buff开头,记录相关buff时间的。
                g_n,记录相关数量的。
                g_is,记录相关状态的,一般1代表是0代表否。
                126—772行,技能释放函数。
                f开头,技能按键执行函数,这里又细分了两类,非GCD类,和GCD类。
                内部逻辑为直到检测到按键成功,非GCD一般为检测到buff判断按键成功,GCD为检测到GCD条按键成功,同时修改全局变量数值。里面的注释代码为鼠标检测调试时用,可以无视。另外捉影函数做了两个,一个静态的,一个动态,也包括距离修改函数,这种单线程的东西就是不靠谱,实战还是用静态捉影的多,尤其是那些有距离补偿的boss。
                778-1033行,状态检测函数。
                fCheck开头。内部逻辑为单纯检测状态,比如守缺拿云充能,禅那数,更新到全局变量。
                1034-1414行,时间计数函数
                fTimeSub开口。内部逻辑主要是计数,如CD、buff时间的计时,并且当时间临近时,会判断buff等更新全局变量。
                1419-2166行,状态初始化函数。
                fReSet开头。主要用于程序启动时执行或中间暂停、补手动技能后执行,内部逻辑为重置全局变量值,并依据如CDbuff图片转动来近视估算剩余CD时间。
                2173-最后,循环主体。
                其他补充说明:
                1 讲道理这破东西的开发首选还是主流高级语音比如python,但是常规python我实在没调通按剑三的技能,所以被迫用按键精力语音写的,正规开发用这个不太行,如果python等语音能按,无论工作量还是调试复查等均不在一个档次上,也期待欢迎了解的小可爱补充分享下~
                2 目前还有一个尚未解决的bug就是豆的检测,豆的颜色和插件buff图片不一样,图片时静态的,仔细看这豆子是动态的,所以个别情况会有不准的时候。按键精灵能提高的,最接近的就是FindColorEx这个函数,到底哪地方的原因我也实在木的办法了。后面可能想的是换语音,或者把这些技能都放在宏里,让宏里添加一定的容错。


                IP属地:山东10楼2023-02-02 00:27
                回复
                  三配置和使用
                  1 界面说明


                  IP属地:山东11楼2023-02-02 00:28
                  回复
                    如图我这边的分辨率是1920*1080,这里面需要关注三点,右侧的插件buff(这个会附上自用的插件),技能区的键位,技能区下方禅那(茗伊可以开两份禅那一份放头顶自用一份放在了技能区下方给程序用)
                    2 插件。
                    插件也分了三块,分别是左上区目标buff监控,即普通横扫,为暗色逆时针转动;右上区的技能CD监控,均为常规技能的CD,同为暗色逆时针转动;下方的自身buff监控,其中常规的如擒龙金身等为自身持续时间监控,暗色逆时针转动,金轮:金刚日轮buff监控,即金轮循环下15秒的金刚日轮buff,金轮1:存在金轮且激活一段普渡,金轮2:存在金轮且激活一段横扫,纷纭1:千斤坠之后激活千斤坠·无取,纷纭2:千斤坠·无取之后激活千斤坠·无舍(金轮类的此文目前都用不上),拿云,固定状态buff重点是监控的层数,二业的四个,两状态加页因和果报,消为龙爪功次数,即4次消贪,贪为贪破层数。
                    3 按键
                    程序里按键这里面是用我的键位来的。所有用到的键位有:
                    【1】普渡【2】守缺【3】拿云【4】韦陀【5】横扫【R】摩诃【E】捕风【=】擒龙(这些常规在鼠标侧键为了方便按键设置的双快捷键)【-】二业【C】金身【Q】捉影。
                    4 交互性使用
                    拿云存在目标血量低于30%时的激活机制,因此这里面干脆直接把是否激活拿云做成交互式的,如程序,按住【Shift】+【1】键激活拿云,即非橙武不再打韦陀也不再预留拿云层数也就是会改变循环。之所以提这个也是后续扩展,比如把更多的内容设置成交互式的,比如是否开启距离调整、是否开启动态捉影等等,再或者把目标血量监控完全放给程序,让程序自行判断。
                    5 其他DIY
                    其实监控和执行基本也就这样了,重点还是主循环中的细节优化循环,在能稳定拿到各种状态变量的前提,就可以自行修改循环逻辑了,比如开头说的,擒龙金身这些在GCD后期开启这个已经实现了,擒龙前攒守缺果报前打空守缺这些还没做,包括【ATL】暂停、【Ctrl】默认按键等,都可以塞一些逻辑。


                    IP属地:山东12楼2023-02-02 00:28
                    回复
                      四木桩演示
                      【剑网3】-少林AI木桩演示-常规循环-20230129_剑网3_演示 (bilibili.com)
                      演示视频27.8万,门派计算器估计在26万,高于计算器有两方面原因,二段加速(计算器默认一段加速)和上等级橙武(特效计算器应该没算入),即实际数值基本也差不多。
                      演示视频中规中矩,实际波动在26-30左右,不打前置,不开腰椎,卡4尺采用静态捉影分支,装分较大属性尤其破招较差,5分钟2次橙武特效低了,保buff要好过平均值,消贪高于平均值基本不过5层,300秒共205GCD技能88破,网络和电脑一般,如程序逻辑摩诃用于金身前后捉影大部分用于消贪和擒龙期,88破肯定不高,205GCD=63拿云+42/2韦陀+50守缺+76/2普渡+50/2横扫+2捕风+12/2摩诃。


                      IP属地:山东13楼2023-02-02 00:29
                      收起回复
                        五展望
                        本来是想当攻略发出去,但是官方包括盒子默认不支持取色,也就只能这样了。
                        关于纷纭,目前还是差太多,尤其是实战,后面慢慢研究了。
                        人力终究是有限的在很多方面难以和AI抗衡,可万一后来如果真都普及并且足够智能了,那在游戏性可玩性甚至在公平经济上是否存在问题呢,可又说回来前台按键并不违法协议,这又是一个值得讨论的问题~


                        IP属地:山东14楼2023-02-02 00:30
                        回复