找回密码
 注册
搜索
查看: 3430|回复: 24

pk-蝶梦楼-机器人

[复制链接]
门派:明教
发表于 2018-12-27 00:19:03 | 显示全部楼层 |阅读模式
本帖最后由 kkfromch@tj 于 2019-2-22 17:58 编辑

【主要功能介绍】:
1.本机器人实现了pk/蝶梦楼单独的一套pfm(与任务pfm分开)。
2.并对pfm进行分拆,包括“克制pfm”和“实际pfm”,便于战斗时的灵活组合。
3.加入了“憋合气”的功能,可以对“憋合气”的数值进行设定,只有达到并超过这个合气值后,才会释放pfm。
4.还能对不启动fpk,无法获取id的对手进行克制,调动克制模块。

【如何使用】:
1.将原有mush文件夹备份后,把所有文件复制到mush/lua文件夹下,覆盖原有文件。
2.按照论坛说明,将新的代码放入shujian.lua文件中。
3.启动mush后,输入“pkset”,按照提示完成所有设定。
4.输入"who -门派 -l",查询pk目标当前状态,例如:"who -murong -l",就是查询慕容所有玩家的状态,然后去岳不群、宋远桥、岳灵珊、长江北等处蹲坑。
5.到达目的地后,输入"pks",填入对方id,就自动启动计时器,不断发出“follow xxx;kill xxx”的指令。
6.点击右侧窗口的红色“pk憋合气-开/关”按钮,实现是否憋合气的功能(注:任务模式中该功能无效,不论按钮是否打开,都不会憋合气)。
7.蝶梦楼pk需要使用修改后的土拨鼠自动蝶梦楼文件,否则无法在蝶梦楼上使用本机器人。
http://www.sjever.net/bbs/forum.php?mod=viewthread&tid=206799
(先按照土拨鼠自动蝶梦楼安装调试完毕后,再将pk机器人经过修改后的diemenglou.lua覆盖进去,切记别搞反了啊!)

【功能展望和不足】:
1.本机器人没有对玩家的桃花岛玉箫剑法“险妙”属性进行识别,也未对其它门派的特殊武功属性进行程序判断和控制。
2.本机器人的克制模块是基于馆长的kezhiwugong.lua,比较陈旧,有些武功也许有招式缺漏或误判,例如“四象掌”和“般若掌”,我就是统统丢入“无属性”里的。
3.本机器人的战斗机制是采取公版mush的心跳模式,也就是预先将pfm alias存在服务器上,每一次心跳执行一遍,因为属性克制需要不断jifa武功,因此会有减合气的情况发生,除非将心跳模式改成客户端相应模式,比如jifa一次后,除非敌人变招,否则不进行二次jifa,这样才能最大限度不消耗合气。(此功能也许会在下一个版本中实现。)

总之,对于以上克制功能不足的改进,以及自动pk机器人的继续完善,将是下一个版本的主要内容,希望大家多提宝贵意见,谢谢!

由于本人水平有限,如有错漏之处,还望海涵。:)
(桃花岛无法风,2018年12月27日)

---------------------------------------------------

shujian.lua修改内容:

1. 在文件上边增加变量pkheqi=0的定义。

2. 在函数setAlias()里面,加入"pkset" 和"pks"两个alias及函数。

function setAlias()
    create_alias_s('stop','stop','disAll')
        create_alias_s('iset','iset','shujian_set')        
        create_alias_s('start','start','main')
        create_alias_s('pkset','pkset','setpk')
        create_alias_s('pkstart','pks','pk_start')

        create_alias_s('qu_wd','qu_wd','goto_set.wd')
        create_alias_s('qu_sl','qu_sl','goto_set.sl')
        create_alias_s('qu_xy','qu_xy','goto_set.xy')
        create_alias_s('qu_xs','qu_xs','goto_set.xs')
        create_alias_s('qu_hs','qu_hs','goto_set.hs')
        create_alias_s('qu_yz','qu_yz','goto_set.yz')
        create_alias_s('qu_lzdk','qu_lzdk','goto_set.lzdk')
        create_alias_s('qu_thd','qu_thd','goto_set.thd')
        create_alias_s('qu_dl','qu_dl','goto_set.dl')
        create_alias_s('tj','tj','jobExpTongji')
        create_alias_s('setlian','setlian','setLian')
        create_alias_s('setlearn','setlearn','setLearn')
        create_alias_s('setlingwu','setlingwu','setLingwu')
        create_alias_s('setdzxy','setdzxy','setdzxy')
        create_alias_s('duanzao','duanzao','duanzao')
        create_alias_s('zhizao','zhizao','zhizao')
        create_alias_s('xuexi','xuexi','xuepot')
        create_alias_s('xc','xc','setxcexp')
        create_alias_s('wdj','wdj','inWdj')
        create_alias_s('dolost','dolost','dolostletter')
        create_alias_s('setjob','setjob','jobSet')
        create_alias('sz','^sz(.*)$','goto("%1")')
        SetAliasOption ('sz','send_to','12')
        create_alias('dushu','^dushu(.*)$','dushu("%1")')
        SetAliasOption ('dushu','send_to','12')
        create_alias('full','^full(.*)$','fullSkill("%1")')
        SetAliasOption ('full','send_to','12')
end

3. 以下内容,放在函数function setLingwu()结束后的下边。

function pk_start()
     l_result=utils.inputbox ("你要PK的目标是(英文ID)?", "PK-Target", GetVariable("pk_target"), "宋体" , "12")
   if not isNil(l_result) then
      SetVariable("pk_target",l_result)
     end
   if l_result then
      create_timer_s('walkWait4',0.4,'pk_start1')       
   end   
end
function pk_start1()
        exe('follow '..GetVariable("pk_target"))
        exe('kill '..GetVariable("pk_target"))
end
function setpk()
         l_result=utils.inputbox ("你打算憋多少合气?(不填默认240)", "heqi_number", GetVariable("heqi_number"), "宋体" , "12")
   if not isNil(l_result) then
      SetVariable("heqi_number",l_result)
        else
          SetVariable("heqi_number","240")
     end
         l_result=utils.inputbox ("填写你的克制无属性PK-PFM(克制无)是?", "zpk_pwu", GetVariable("zpk_pwu"), "宋体" , "12")
   if not isNil(l_result) then
      SetVariable("zpk_pwu",l_result)
   end
    l_result=utils.inputbox ("填写你的克制空属性PK-PFM(克制空)是?", "zpk_pkong", GetVariable("zpk_pkong"), "宋体" , "12")
   if not isNil(l_result) then
      SetVariable("zpk_pkong",l_result)
        end
   l_result=utils.inputbox ("填写你的正属性PK-PFM是? (克制险)", "zpk_pzhen", GetVariable("zpk_pzhen"), "宋体" , "12")
   if not isNil(l_result) then
      SetVariable("zpk_pzhen",l_result)
   end
   l_result=utils.inputbox ("填写你的奇属性PK-PFM(克制妙)", "zpk_pqi", GetVariable("zpk_pqi"), "宋体" , "12")
   if not isNil(l_result) then
      SetVariable("zpk_pqi",l_result)
   end
   l_result=utils.inputbox ("填写你的刚属性PK-PFM(克制慢)", "zpk_pgang", GetVariable("zpk_pgang"), "宋体" , "12")
   if not isNil(l_result) then
      SetVariable("zpk_pgang",l_result)
   end
   l_result=utils.inputbox ("填写你的柔属性PK-PFM(克制快)", "zpk_prou", GetVariable("zpk_prou"), "宋体" , "12")
   if not isNil(l_result) then
      SetVariable("zpk_prou",l_result)
   end
   l_result=utils.inputbox ("填写你的快属性PK-PFM(克制刚)", "zpk_pkuai", GetVariable("zpk_pkuai"), "宋体" , "12")
   if not isNil(l_result) then
      SetVariable("zpk_pkuai",l_result)
   end
   l_result=utils.inputbox ("填写你的慢属性PK-PFM(克制柔)", "zpk_pman", GetVariable("zpk_pman"), "宋体" , "12")
   if not isNil(l_result) then
      SetVariable("zpk_pman",l_result)
   end
   l_result=utils.inputbox ("填写你的秒属性PK-PFM(克制正)", "zpk_pmiao", GetVariable("zpk_pmiao"), "宋体" , "12")
   if not isNil(l_result) then
      SetVariable("zpk_pmiao",l_result)
   end
   l_result=utils.inputbox ("填写你的险属性PK-PFM(克制奇)", "zpk_pxian", GetVariable("zpk_pxian"), "宋体" , "12")
   if not isNil(l_result) then
      SetVariable("zpk_pxian",l_result)
   end
   l_result=utils.inputbox ("填写你的默认PK-PFM(起手pfm或无法识别对方武功的应对,类似pfmpfm设定)是?", "pkpfm", GetVariable("pkpfm"), "宋体" , "12")
   if not isNil(l_result) then
      SetVariable("pkpfm",l_result)
        end
      l_result=utils.inputbox ("填写你的PK-PFM(只包含pfm,不包含wield武器或jifa)", "mypfm", GetVariable("mypfm"), "宋体" , "12")
   if not isNil(l_result) then
      SetVariable("mypfm",l_result)
           end
           l_result=utils.inputbox ("填写你的buff-PFM(pk时使用的buff技能)", "mybuff", GetVariable("mybuff"), "宋体" , "12")
   if not isNil(l_result) then
      SetVariable("mybuff",l_result)
           end
           l_result=utils.inputbox ("填写你的debuff-PFM(pk时使用的debuff技能)", "mydebuff", GetVariable("mydebuff"), "宋体" , "12")
   if not isNil(l_result) then
      SetVariable("mydebuff",l_result)
           end
end

-------------------
准备好了吗?让我们来一场轰轰烈烈的pk吧!

修复日志:
2018.12.27 修复合气值没有从字符转变成数字的报错。修复计时器walkwait4无法删除的报错。
2019.01.31 版本更新,添加了对玉箫剑法、五虎断门刀、空明拳、双属性般若掌、护镖伙伴出招的识别,以及pk状态下采用非心跳模式变换克制。
2019.02.21 版本更新,修复了忙状态下不能再次激发的问题。
2019.02.22 版本更新,修复了对独孤九剑等自身武功的误识别问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

2

查看全部评分

门派:明教
 楼主| 发表于 2018-12-27 00:29:55 | 显示全部楼层
关于pfm设定再解释一下,怕有些童靴不清楚——

pkpfm\\mypfm\\hp:这是默认起手的pfm,一般是无属性的pfm,以免被对方克制。

例如我的设定为:
pkpfm:get wuji xiao;get haoqi sword;unwield haoqi sword;unwield mu jian;wield wuji xiao;jifa sword jinshe-jianfa;jifa strike luoying-zhang;jiali max
(注意不需要放入真正的pfm,这部分只是做属性克制的。)

mypfm:perform dodge.wuzhuan;perform finger.xinghe;perform sword.feiying
(这里面才是真正的pfm,在不憋合气的情况下,依次释放;如果憋合气,则在合气打到规定数值后,一起释放出来。)

另外问一句,大家还需要设置buffpfm吗?如果需要的话,我会另外再增加一个的。

-----------

当对手变招的话,本机器人是调用kezhiwugong.lua中原有的克制模块,如果识别出对手武功属性,就会变成如下——

pppp1\\mypfm\\hp:具体pppp1里边放的是zpk_pgang,还是zpk_pwu等等,那就看每个人自己的设定了。

例如我的设定:
zpk_pgang: get wuji xiao;get haoqi sword;unwield mu jian;unwield haoqi sword;wield wuji xiao;jifa sword yuxiao-jian;jiali max
(也是一样的,不需要放入真正的pfm,只是个属性克制平台而已!)

最后,如果大家想研究一下这套pk机器人的原理,可以参考我之前发的技术贴——

小白学mush(第六篇)《憋合气pk机器人》
http://www.sjever.net/bbs/forum.php?mod=viewthread&tid=216500
门派:明教
 楼主| 发表于 2018-12-27 00:54:32 | 显示全部楼层
差点忘记了,还要在shujian.lua内,定义标记:

pkheqi=0

放在上边的一堆变量末尾吧!

要是没有这个,程序会报错的。
门派:嵩山派
发表于 2018-12-27 02:07:28 | 显示全部楼层
pk如何识别互搏情况下,拿武器出空手招式的属性?
门派:明教
 楼主| 发表于 2018-12-27 02:13:54 | 显示全部楼层
rooney@tj 发表于 2018-12-27 02:07
pk如何识别互搏情况下,拿武器出空手招式的属性?

这个需要大家一起讨论了,如果有结论的话,我会添加进机器人里。

我的理解空手如果是互搏带出来的,那就是空手的属性,不是兵器的属性,现有的克制模块应该可以识别的。

但是如果一下兵器,一下空手,两种属性相反,还一直在变化,还击的时候刚好对方变招了,有可能不克制。

这个看看大家有没有什么好办法?要不要临时切换成无属性还击?还是憋合气?还是如何?
门派:嵩山派
发表于 2018-12-27 02:18:51 | 显示全部楼层
拿兵器就是兵器的属性            
门派:明教
 楼主| 发表于 2018-12-27 02:27:30 | 显示全部楼层
rooney@tj 发表于 2018-12-27 02:18
拿兵器就是兵器的属性

<!-- Produced by MUSHclient v 4.84 - www.mushclient.com -->


你手中三才无极箫虚晃,倏然连劈了几下,自上而下分袭潘孟的正面及两侧,正是一招「月落曲惶」!
你抓住潘孟招式之间的破绽,蹂身而上猛攻一招!
结果在他左腿划出一道细长的血痕。
( 潘孟摇头晃脑、歪歪斜斜地站都站不稳,眼看就要倒在地上。 )

你双手分使,灵活异常,好象变成了两个人似的!

紧跟着你右臂挥动中指连弹,数个手指在身前划了一道弧线,正是「一衣带水」,射向潘孟的前胸!
潘孟被你点中了「劳宫穴」,内息大乱!
你手指微动,又点中了潘孟的「白海穴」!
潘孟只觉得头微微晕眩,精神不能集中!
结果只是轻轻地刺破潘孟的皮肉。
( 潘孟
摇头晃脑、歪歪斜斜地站都站不稳,眼看就要倒在地上。 )



你要是确定的话,互搏带出的空手有“紧跟着”这三个关键字,抓到这三个字后,克制武功不做判断就行了!

默认还是停留在上一个兵器的属性判断下。
门派:嵩山派
发表于 2018-12-27 02:47:06 | 显示全部楼层
如果是空手,就是看后面一招普通攻击的属性了。。。。
门派:明教
发表于 2018-12-27 08:57:14 | 显示全部楼层
桃花岛主厉害啊                                 
门派:昆仑派
发表于 2018-12-27 09:55:10 | 显示全部楼层
这么好的帖子怎么大神们不给通宝啊……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-6-8 23:53 , Processed in 0.056069 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表