找回密码
 注册
搜索
查看: 4470|回复: 47

【新公版使用说明】之 颂摩崖模块设置

[复制链接]
门派:明教
发表于 2019-10-2 02:05:00 | 显示全部楼层 |阅读模式
*版权说明:本模块为无法风版上山专属版权,没有借鉴或使用任何其他人的技术,完全是个人独立研究,仅供个人使用,不得用作任何商业用途或牟利!
如有添加此技术,并将个人机器人出售的,本人保有追取牟利所得的一切权利!特此声明!


设置说明:

本模块摒弃旧公版的武士克制识别,采用动态实时判断,所有战斗控制都在kezhiwugong.lua中,下边逐一说明主要功能。

1.克制关系优先级判定。

  1. local kezhi_order={}
  2. local kezhi_order_thd={--优先级设置,数值约大优先级越高
  3.         ["正"]=9,
  4.         ["奇"]=8,
  5.         ["刚"]=7,
  6.         ["柔"]=6,
  7.         ["快"]=5,
  8.         ["慢"]=4,
  9.         ["妙"]=3,
  10.         ["险"]=2,
  11.         ["空"]=10,
  12.         ["无"]=1,
  13. }
复制代码


以上是解了倚天屠龙残的桃花岛克制优先级,按照数字由大到小为优先级由高到低,比如:正属性武士和险属性武士同时出来,两者优先级数字分别为9和2, 由于9>2,所以先打9,后打2。

如果没有解倚天屠龙残,则需要按照馆长的克制图解重新排定顺序。

其它门派可自行添加,例如:kezhi_order_tls,则是天龙寺的优先级关系。

2.克制关系调用。

  1. function pk_pfm_set()
  2.         if score.party=='桃花岛' then
  3.            kezhi_order={}
  4.            kezhi_order=kezhi_order_thd
  5.         end
  6.         if job.name=='pk' or job.name=='guanfu' or job.name=='diemenglou' or job.name=='hubiao' then
  7.            pk_valuecmd={}
  8.            pk_valuecmd=pk_valuecmd1
  9.            return
  10.         end
  11.         if job.name=='songmoya' then
  12.            pk_valuecmd={}
  13.            pk_valuecmd=pk_valuecmd3
  14.            return
  15.         end
  16. end
复制代码


在本函数中添加不同门派的判断语句即可。
例如:
        if score.party=='天龙寺' then
           kezhi_order={}
           kezhi_order=kezhi_order_tls
        end

评分

1

查看全部评分

门派:明教
 楼主| 发表于 2019-10-2 02:10:40 | 显示全部楼层
3.颂摩崖战斗pfm设置:

  1. pk_valuecmd={}
  2. pk_valuecmd1={--mush的pk变量名称,对应武功使用哪种克制
  3.         ["正"]='zpk_pmiao',--p版mush请改pmiao
  4.         ["奇"]='zpk_pxian',--p版mush请改pxian
  5.         ["刚"]='zpk_pkuai',--p版mush请改pkuai
  6.         ["柔"]='zpk_pman',--p版mush请改pman
  7.         ["快"]='zpk_prou',--p版mush请改prou
  8.         ["慢"]='zpk_pgang',--p版mush请改pgang
  9.         ["妙"]='zpk_pqi',--p版mush请改pqi
  10.         ["险"]='zpk_pzhen',--p版mush请改pzhen
  11.         ["空"]='zpk_pkong',
  12.         ["无"]='zpk_pwu',
  13. }
  14. pk_valuecmd3={--mush的pk变量名称,对应武功使用哪种克制
  15.         ["正"]='smy_pmiao',--p版mush请改pmiao
  16.         ["奇"]='smy_pxian',--p版mush请改pxian
  17.         ["刚"]='smy_pkuai',--p版mush请改pkuai
  18.         ["柔"]='smy_pman',--p版mush请改pman
  19.         ["快"]='smy_prou',--p版mush请改prou
  20.         ["慢"]='smy_pgang',--p版mush请改pgang
  21.         ["妙"]='smy_pqi',--p版mush请改pqi
  22.         ["险"]='smy_pzhen',--p版mush请改pzhen
  23.         ["空"]='smy_pkong',
  24.         ["无"]='smy_pwu',
  25. }
复制代码


pk_valuecmd1:pk pfm设置,简称zpk,通过pkset设置,官府、蝶梦楼和护镖、pk都调用这套设置。
pk_valuecmd3:上山pfm设置,简称smy,通过 smyset设置,仅供颂摩崖任务调用。

不同任务调用不同的战斗控制,目前新公版分为三套,分别是——山下任务、上山和官府pk等。

function pk_pfm_set(),实现任务判定,并调取不同克制。
门派:明教
 楼主| 发表于 2019-10-2 02:13:31 | 显示全部楼层
4.克制关系计算:

  1. function kezhiwugongsuccess(kezhi_cmd,k_order,npci)
  2.         --print('k_order='..k_order)
  3.         for i=1,npc_num do
  4.                 --print("kflag"..i.."="..kflag[i]..npc_name[i])
  5.                 if npc_name[i]~=nil and kflag[i]>0 and npc_name[i]==npc_name[npci] then
  6.                         kezhiwugongSetPerform(kezhi_cmd,i,npc_id[i])
  7.                         if npc_order[i]==nil then
  8.                            table.insert(npc_order,i,k_order)
  9.                         else
  10.                            table.remove(npc_order,i)
  11.                        table.insert(npc_order,i,k_order)
  12.                         end
  13.                         kflag[i]=2
  14.                         kezhisuccess=kezhisuccess+1
  15.                         if i==npc_num then
  16.                                 break
  17.                         end
  18.                 end
  19.         end
  20.         if job.name=='songmoya' then
  21.            if npc_order[1]~=nil then print('npc_order[1]='..npc_order[1]) end
  22.            if npc_order[2]~=nil then print('npc_order[2]='..npc_order[2]) end
  23.            print("kezhisuccess="..kezhisuccess.."","npc_num="..npc_num)
  24.         end
  25.         if kezhisuccess>=npc_num or table.getn(npcdienum)>0 then
  26.                 local tflag=1
  27.                 for i=2,npc_num do
  28.                         if npc_order[i]~=nil and npc_order[tflag]~=nil and npc_order[i]>npc_order[tflag] then
  29.                                 print(npc_order[i],npc_order[tflag])
  30.                                 tflag=i
  31.                         end
  32.                 end                       
  33.                         if job.name=='songmoya' and yptteam >= smyteam and flag.shoot then
  34.                            flag.shoot=false
  35.                            if tflag==1 then
  36.                               exe('shoot '..npc_id[2])
  37.                            end
  38.                            if tflag==2 then
  39.                               exe('shoot '..npc_id[1])
  40.                            end
  41.                     end
  42.             kflag[tflag]=2  
  43.                         kezhiwugongkill(tflag)
  44.         end
  45. end
复制代码


该函数计算武士1和武士2的克制优先级,并在最后一组时自动射杀优先级低的武士。
门派:明教
 楼主| 发表于 2019-10-2 02:30:48 | 显示全部楼层
5.战斗克制调用:

  1. function kezhiwugongSetPerform(tempatt,i,targetid)
  2.         if job.name == 'diemenglou' or job.name == 'pk' or job.name == 'guanfu' or job.name == 'hubiao' then
  3.            create_alias('kezhiwugongpfm','kezhiwugongpfm','alias pppp'..i..' '..GetVariable(pk_valuecmd[tempatt]))
  4.            exe('kezhiwugongpfm')
  5.            create_alias('mypfm_kezhi','mypfm_kezhi','alias mypfm '..GetVariable("mypfm")..' '.. targetid)
  6.        exe('mypfm_kezhi')
  7.         elseif job.name == 'songmoya' then
  8.            if score.party=='桃花岛' then
  9.                 exe('set szj 1')
  10.            if yptteam<7 then
  11.                   create_alias('kezhiwugongpfm','kezhiwugongpfm','alias pppp'..i..' '..GetVariable(kezhi_valuecmd[tempatt])..' '.. targetid)
  12.               exe('kezhiwugongpfm')
  13.                   exe('set 兰花手 蝶舞式;jiali max')
  14.            end
  15.            if yptteam>6 and yptteam<19 then
  16.                   create_alias('kezhiwugongpfm','kezhiwugongpfm','alias pppp'..i..' '..GetVariable(pk_valuecmd[tempatt])..';'..GetVariable("smybuff")..';'..GetVariable("smy_pfm1")..' '.. targetid)
  17.               exe('kezhiwugongpfm')
  18.                   exe('set 兰花手 蝶舞式;jiali max')
  19.            end
  20.            if yptteam>18 and yptteam<23 then
  21.                   exe('jiali 1;set jybgz 1;set hmg 逆转')
  22.                   create_alias('kezhiwugongpfm','kezhiwugongpfm','alias pppp'..i..' '..GetVariable(pk_valuecmd[tempatt])..';'..GetVariable("smybuff")..';'..GetVariable("smy_pfm3")..' '.. targetid)
  23.               exe('kezhiwugongpfm')
  24.                   exe('unset debuff_boost')
  25.            end
  26.            if yptteam>22 and yptteam<26 then
  27.                   exe('jiali 1;set jybgz 1;set hmg 逆转')
  28.                   create_alias('kezhiwugongpfm','kezhiwugongpfm','alias pppp'..i..' '..GetVariable(pk_valuecmd[tempatt])..';'..GetVariable("smybuff")..';'..GetVariable("smy_pfm2")..' '..targetid..';'..GetVariable("smy_pfm3")..' '.. targetid..';jiali 1')
  29.               exe('kezhiwugongpfm')
  30.                   exe('unset debuff_boost')
  31.            end
  32.           end
  33.         else
  34.            create_alias('kezhiwugongpfm','kezhiwugongpfm','alias pppp'..i..' '..GetVariable(kezhi_valuecmd[tempatt])..' '.. targetid)
  35.            exe('kezhiwugongpfm')
  36.         end
  37. end
复制代码


前文说的三套克制,都是在这个函数里判定,并切换相应克制。

这里重点解释一下山上克制的策略(以本人桃花大号为例)——

1-6组,由于可以刷im,则依然采用山下克制,有些高手,比如本敌,可以用山下克制直接打到19组,则这里可以调整为19。
7-18组,smybuff+smypfm1,这个相对容易,以桃花为例,dodge.wuzhuan+finger.xinghe+leg.fengwu+9d auto足矣。smypfm1是低合气物理,一般100-320左右合气即可。
19-22组,考验来了,这一阶段没有15万声望是打不赢的,要想站得稳起码要20万以上声望,策略为:smybuff+smypfm3,smypfm3是门派大招,桃花就是狂风绝技了。
23-25组,真正的考验,这一阶段感觉要想躺赢起码要30万以上声望,策略为:smybuff+smypfm2+smypfm3,smypfm2是门派控制或debuff大招,桃花就是奇门了。

以上所有pfm组合都有严格的格式,所有非指向技的可以多个排列在一起,比如perform dodge.wuzhuan;perform finger.xinghe。

而指向技则必须末位接npc id,这样才能确保这一个pfm是打向这个npc的,否则就有可能打到另外那个npc头上。假如你的克制是优先打A,如果B有了合气,很可能B会直接秒掉你,所以一定要确保指向技的目标正确。

假如perform leg.fengwu;perform leg.fengwu npc id,则前一个pfm就会随即乱打了。
jiali max;perform leg.fengwu;jiali 1 npc id,这个格式也是错误的,因为jiali 1会导致指向格式不正确。

低组直接jiali max,高组则预先写好了jiali 1,添加在格式末尾了。

换句话说,前边可以写一堆,例如:set ciqu_hit 5;jiali max;perform finger.ciqu,但后边什么都不能写。

门派:明教
 楼主| 发表于 2019-10-2 02:37:14 | 显示全部楼层
本帖最后由 kkfromch@tj 于 2019-10-2 02:52 编辑

6.出招策略:

本机器人不采用憋合气方式,合气到了就直接出招,通过克制关系,打击对手而获得合气增长,优先击杀克制关系高的,再杀克制关系低的,所以战斗效率较高。

其它打敌人武功的,例如总诀、擒拿或打武器的都可以使用,打掉之后敌人没了武功就是无,没有了威胁就优先打另外那个武士,换空手就重新判定克制关系,所以非常灵活。

不必担心敌人变招后,像老公版无法识别,这就是动态克制的先进之处。

7.其它设定:

默认设定是死衰不上山,这个在 shujian.lua的理相判定函数里——

  1. score_check_xy=function(n,l,w)
  2.         score.xiangyun=Trim(w[1])  --六个状态,生、旺、败、平、衰、死
  3.         score.xiangyunvalue=tonumber(w[2])
  4.         if not score.xiangyunvalue then
  5.            score.xiangyunvalue=0
  6.         end
  7.         if scorexy==false then
  8.            scorexy=smyteam*1
  9.         end
  10.         if SMY_ID[score.id] then
  11.           if score.xiangyun=='死' then
  12.          smyteam=scorexy-2
  13.           elseif score.xiangyun=='衰' and score.xiangyunvalue>10 then
  14.          smyteam=scorexy-2
  15.           elseif score.xiangyun=='衰' and score.xiangyunvalue<=10 then
  16.          smyteam=scorexy-1
  17.           elseif smyteam<scorexy then
  18.          smyteam=scorexy
  19.       end
  20.         else
  21.           if score.xiangyun=='衰' or score.xiangyun=='死' then
  22.                  if job.zuhe["songmoya"] then job.zuhe["songmoya"]=nil end
  23.           else
  24.                  if smyteam<scorexy then
  25.                     smyteam=scorexy*1
  26.                  end
  27.                  if go_on_smy~=0 and job.zuhe["songmoya"]==nil then job.zuhe["songmoya"]=true end
  28.           end
  29.         end
  30. end
复制代码


如果想死衰降组的话,则在songmoya.lua里,添加自己的id——

  1. SMY_ID={--这里出现的id,死衰不下山,而是降低组数,其它id死衰直接下山。
  2. ["wudi"]=true,
  3. ["yuyan"]=true,
  4. ["wuji"]=true,
  5. }
复制代码


由于精力缺口很大,而吃玉肌丸太费,但吐纳的效率比打坐高,所以目前山上17组前都是吐纳,17组往后则改为set 积蓄 dazuo,如果吐纳满,则自动切换打坐。

旧版的战斗后yun heal被去掉,改为气血低于95%吃蝉蜕药,天龙寺自动yun liao,其它门派有疗伤的pfm,也可以自己添加。

战斗后切换恢复武器在这个函数里——

  1. function yptheal()
  2.    weapon_unwield()--换下普通武器。
  3.    weapon_wield()--换上恢复性武器。
  4.    exe('hp')
  5.         if score.party=='天龙寺' then
  6.            exe('yun liao;yun liao;yun liao')
  7.         end
  8.         if hp.qixue_per<95 and cty_cur>0 then
  9.        exe('eat chantui yao')
  10.     end
  11.     exe('unset 积蓄')
  12.     check_bei(ypttuna_desc,3)
  13. end
复制代码


找到weapon.lua,在weapon_unwield和weapon_wield里添加自己的主武器卸载和添加自己的恢复武器。
门派:明教
 楼主| 发表于 2019-10-2 02:40:45 | 显示全部楼层
本帖最后由 kkfromch@tj 于 2019-10-2 02:54 编辑

8.不上山设定:
理相死衰、武器或护具丢失、每周四重启前1小时内、距离上次上山时间间隔小于40分钟的——这四种情况都不上山。

9.其它说明:

目前放出的code不包括无相劫指、莲花掌等特殊敌人的应对,还有补刀等功能也不包括,真正的智能化控制大概还要添加2000多行code,这些都在定制版机器人里,想长期挂机山上,目标是躺赢25组的朋友,可以私下联系我。
门派:丐帮
发表于 2019-10-2 08:22:37 | 显示全部楼层
我觉得这个模块放出来,值得重奖!     
门派:武当派
发表于 2019-10-2 09:24:01 | 显示全部楼层
哇喔 光看我就看了十分钟 别说得花多大精力写了
门派:天龙寺
发表于 2019-10-2 10:10:21 来自手机 | 显示全部楼层
必须大大大大奖励,版主为什么没给奖励?
门派:明教
 楼主| 发表于 2019-10-2 10:13:57 | 显示全部楼层
alphadog@tj 发表于 2019-10-2 09:24
哇喔 光看我就看了十分钟 别说得花多大精力写了

这个上次我专门在我们群里讲课,就是解释上山模块原理和设定的,足足讲了快1个小时,其实到了个人使用,多少还得自己加不少东西的,不懂原理是很难修改的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-4 20:06 , Processed in 0.042905 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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