找回密码
 注册
搜索
查看: 22361|回复: 389

新版本--全自动蝶梦楼11月2日更新--修复昨天出的乌龙

[复制链接]
门派:嵩山派
发表于 2018-9-2 13:16:48 | 显示全部楼层 |阅读模式
本帖最后由 marmot@tj 于 2018-11-3 14:44 编辑

大家使用中出问题的话请留言,我有时间会来看的
自己觉得有点复杂,如哪位大神可以帮忙简化就最好了。


首先需要在shujian.lua顶部加入require "diemenglou"

然后添加如下内容:(具体放哪里加大家可以随意,我是放在function check_job()里面)


  1. function check_job()
  2.    if xcexp==0 and hp.exp<100000 then
  3.       print('巡城到1M')
  4.       kdummy=0
  5.       return xunCheng()
  6.    end
  7.    if xcexp==1 and hp.exp<200000 then
  8.       print('巡城到2M')
  9.       kdummy=0
  10.       return xunCheng()
  11.    end
  12.    create_triggerex_lvl('dmlflag1','^(> )*【江湖传闻】玩家竞技活动开始了!','','dml_on',95)
  13.         SetTriggerOption('dmlflag1','group','hp')
  14.     if dmlFightCnt < 5 and (not condition.busy or condition.busy == 0) then
  15.        local fn = 'logs\\diemenglou_mark_'..score.id..'.log'
  16.            local f = io.open(fn,"r")
  17.            if not f then
  18.           ColourNote('orange','black','未检测到蝶梦楼记录,准备进行蝶梦楼竞技!')
  19.               return dml_check()
  20.            else
  21.               local s = f:read()
  22.               f:close()
  23.               if s ~= os.date("%Y%m%d%H") then                          --有log
  24.                      if os.date("%Y%m%d%H") - s >= 100 then                 --距离上一次经过了至少24小时
  25.                             ColourNote('lime','black','找到'..s..'蝶梦楼记录,日期为昨天。准备进行蝶梦楼竞技!')
  26.                         return dml_check()                     
  27.                  else
  28.                         ColourNote('white','red','找到'..s..'蝶梦楼记录,时间间隔不足【','yellow','black','24','white','red','】小时不开启蝶梦楼竞技!')
  29.                      end
  30.               end
  31.            end
  32.         end
  33.    if score.party=="桃花岛" and (hp.shen>150000 or hp.shen<-150000) then
  34.       return thdJiaohui()
  35.    end
  36.    
  37.    --if score.gold and score.gold>150 and weaponUsave and countTab(weaponUsave)>0 and math.random(1,5)==1 then
  38.       --return weaponUcheck()
  39.    --end
  40.    return check_halt(weaponUcheck)
  41. end
复制代码





修改了lua文件后请先stop,然后按下 shift + ctrl +r 重新载入脚本再start以免报错

使用此版本务必先设置一次,可以把logs文件夹里的diemenglou_mark_你的id.log文件先删除掉然后等蝶梦楼开始的时候进行设置。不然下次挑战前没及时选择模式的话会一直卡住

本次更新附带了readme文档,请大家使用前先阅读文档内的说明。或者看本帖2楼。
正在构思蝶梦楼后的自动PK功能的可能性,大家有什么想法可以提。

大家使用中碰到问题欢迎继续留言。







战斗时对手变招不克制的问题请在kezhiwugong.lua内找到

function kezhiwugongsuccess(kezhi_cmd,k_order,npci)
         for i=1,npc_num do
                 --print("kflag"..i.."="..kflag..npc_name)
                 if npc_name~=nil and kflag>0 and npc_name==npc_name[npci] then
                         kezhiwugongSetPerform(kezhi_cmd,i,npc_id)
                         npc_order=k_order
                         kflag=2
                         kezhisuccess=kezhisuccess+1
                         if i==npc_num then
                                 break
                         end
                 end
         end
         --print("kezhisuccess="..kezhisuccess.."","npc_num="..npc_num)
         if kezhisuccess>=npc_num or table.getn(npcdienum)>0 then
                 local tflag=1
                 for i=2,npc_num do
                         if npc_order~=nil and npc_order<npc_order[tflag] then
                                 print(npc_order,npc_order[tflag])
                                 tflag=i
                         end
                 end
                 if job.name~="songmoya" then
                         kezhiwugongkill(tflag)
                 end
                 if job.name~='xueshan' and job.name~='wudang' and job.name~='Dummyjob' and job.name~='songmoya' and job.name ~= 'diemenglou' then
                         kezhiwugongclose()
                 end
         end
end

并添加蓝色部分内容


-----------------------------------------------------------------------------------------------------------------------
03/09/2018 更新修正列表查询到顶还会继续向上查询
04/09/2018 我也不知道更新了什么
05/09/2018  修改了判断是否开启蝶梦楼的条件

06/09/2018  减少了top pk查询次数,大大缩减了运行时间
08/09/2018  修正了top take以及目标少于5位时会发呆的问题以及一些计数错误
10/09/2018  降低老仆对其他玩家说的话导致误触发的可能性
12/09/2018  修改上楼前内力至最大内力的1.5倍,10号的更新漏加一个老仆对话的关闭开关也修正了
16/09/2018  小修补
17/09/2018  修正昨天更新弄出来的bug     加入一个超过竞技时间却能上楼的自动结束触发
19/09/2018  修复toppk列表序号为一位数时无法正确抓取参数的问题
21/09/2018  受xiren大神的指点,更新了是否需要开启蝶梦楼挑战的判断方式以及去掉那个不知所谓的look gold指令,在此感谢大脸与一众帮忙测试的朋友!
21/09/2018  修正了top pk列表长度不同导致的格式不同无法触发的问题,自我吐槽一下:问题还真多啊
22/09/2018  昨天更新又出问题了,已经改正。统计挑战次数和获得奖励出错   应redsun要求增加了一个蝶梦楼开关版本,关闭则不去蝶梦楼。
05/10/2018  只查询一次toppk列表
06/10/2018  新版本top take又出问题,现已修改。
21/10/2018  还是toptake的问题,加了一个黑名单防止第二轮继续挑战已toptake过的目标。
27/10/2018  增加玩家自定义挑战参数设定。
30/10/2018  修改成三种模式以及修正一些bug。
01/11/2018  修复存在挑战失败log的时候robot报错的bug,以及一个table名称的拼写错误和ColourNote的显示错误
02/11/2018  昨天打包时打错文件了,不是最新的。今天才发现已经重新上传


本帖子中包含更多资源

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

×

评分

3

查看全部评分

门派:嵩山派
 楼主| 发表于 2018-9-21 17:23:06 | 显示全部楼层
本帖最后由 marmot@tj 于 2018-11-3 14:41 编辑

diemenglou.lua 使用说明:

====================================================================================================================================================

1、 shujian.lua需要修改的内容:

    打开shujian.lua,在顶部require "xxx" 处增加一行,内容为:      
            
                require "diemenglou"


====================================================================================================================================================

2、找到 check_job 函数,原始内容如下:

function check_job()
   if xcexp==0 and hp.exp<1000000 then
      print('巡城到1M')
      kdummy=0
      return xunCheng()
   end
   if xcexp==1 and hp.exp<2000000 then
      print('巡城到2M')
      kdummy=0
      return xunCheng()
   end
   
   if score.party=="桃花岛" and (hp.shen>150000 or hp.shen<-150000) then
      return thdJiaohui()
   end
   
   --if score.gold and score.gold>150 and weaponUsave and countTab(weaponUsave)>0 and math.random(1,5)==1 then
      --return weaponUcheck()
   --end
   return check_halt(weaponUcheck)
end

修改后内容如下:

function check_job()
    if xcexp==0 and hp.exp<1000000 then
       print('巡城到1M')
       kdummy=0
       return xunCheng()
    end
    if xcexp==1 and hp.exp<2000000 then
       print('巡城到2M')
       kdummy=0
       return xunCheng()
    end
   
    create_triggerex_lvl('dmlflag1','^(> )*【江湖传闻】玩家竞技活动开始了!','','dml_on',95)
    SetTriggerOption('dmlflag1','group','hp')
        if not dmlFightCnt then dmlFightCnt = 0 end
    if dmlFightCnt < 5 and (not condition.busy or condition.busy == 0) then
       local fn = 'logs\\diemenglou_mark_'..score.id..'.log'
       local f = io.open(fn,"r")
       if not f then
          ColourNote('orange','black','未检测到蝶梦楼记录,准备进行蝶梦楼竞技!')
          return dml_check()
       else
          local s = f:read()
          f:close()
          if s ~= os.date("%Y%m%d%H") then
             if os.date("%Y%m%d%H") - s >= 100 then
                ColourNote('lime','black','找到'..s..'蝶梦楼记录,已经过24小时。准备进行蝶梦楼竞技!')
                return dml_check()
             end
          end
       end
    end
   

    if score.party=="桃花岛" and (hp.shen>150000 or hp.shen<-150000) then
       return thdJiaohui()
    end
   
    --if score.gold and score.gold>150 and weaponUsave and countTab(weaponUsave)>0 and math.random(1,5)==1 then
       --return weaponUcheck()
    --end
    return check_halt(weaponUcheck)
end
====================================================================================================================================================

3、蝶梦楼的模式选择

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

①、模式一,无脑刷分模式,选择该项直接输入数字 1

自动筛选范围为等级高于玩家等级减去20级,并且按照等级从低至高排列的三名目标,对前两名进行复数挑战。
例如玩家等级为500级,那么挑战目标的范围控制在480级以上,而且只取等级最低的三个目标进行挑战,挑战时等级低的优先。前两个挑战两次,第三名挑战一次。
思路是无法风提供的,因为等级低的比较容易打,失败几率低。符合我们无脑刷分的要求。

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

②、模式二:晋级模式:选择该项直接输入数字 2

基本等同模式一,不同的是目标取等级从低到高排列的前五名。每个目标只挑战一次。
想法是战斗完成后衔接一个自动去正气堂堵人PK的模块,但暂时还没设计完成。也可以玩家在蝶梦楼结束后任意时间手动去pk战斗胜利的目标晋升top pk列表的排名。

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

③、模式三:玩家自定义模式,选择该项直接输入数字 3
  【1】初始挑战范围等级上限  ---- 第一次查询目标时,查询等级上限为该项数值加上玩家等级 ----    ----直接输入想要的数字即可----
       例:玩家等级为500级,希望挑战等级不超过550级的玩家则输入数字 50 即可

  【2】初始挑战范围等级下限  ---- 第一次查询目标时,查询等级下限为玩家等级减去该项数值 ----    ----直接输入想要的数字即可----  
       基本同上,只是上限变成下限了。
           例:玩家等级为500级,希望挑战等级480级以上的玩家则输入数字 20 即可

  备用列表就是作为备用的,当初始列表内目标不足时会自动启用。免去再次查询的功夫。

  【3】备用列表挑战范围等级上限  ---- 第一次查询目标时,查询等级上限为该项数值乘2加上玩家等级 ----    ----直接输入想要的数字即可----
       例:玩家等级为500级,希望挑战等级不超过700级的玩家则输入数字 100 即可

  【4】备用列表挑战范围等级下限  ---- 第一次查询目标时,查询等级下限为玩家等级减去该项数值乘2 ----    ----直接输入想要的数字即可----  
           例:玩家等级为500级,希望挑战等级400级以上的玩家则输入数字 50 即可
           
  【5】挑战排名顺序指定:
       输入中文: 上
       即只挑战排名在玩家排名之上的目标
           
       输入中文: 下
       只挑战排名在玩家排名之下的目标
           
  【6】是否对同一目标进行重复挑战:
       输入 yes
           即同一目标挑战两次
           
           输入 no
           即所有目标只挑战一次
           
  【7】选择是否开启自动PK
       此项功能尚未完成,暂不开放。
           
====================================================================================================================================================

logs文件夹内生成的日志文件说明:

diemenglou_mark_玩家id.log     --用以记录本次蝶梦楼挑战的起始时间,下次进行蝶梦楼挑战时间为所记录时间的24小时之后。

玩家id蝶梦楼竞技记录(1-5).log  --用以记录5次蝶梦楼竞技的情况,log内容保存时限为24小时。

diemenglou_lost_玩家id.log       --记录挑战失败的目标名字,同一名字出现两次即败给同一目标两次,下次会自动剔除该目标。

P.S.
每次战斗会自动写入对应的战斗日志方便玩家当天查看,为防止日志过于庞大所以设定为每天擦除重写。

如不在8点~22点之间开启了蝶梦楼模块,如在22点后0点前,会自动把diemenglou_mark_玩家id.log时间改为当天的早上9点。如在0点到8点之间,会自动把时间改为前一天早上9点。

如一次查询无法找到足够数量的目标会进行二次查询,二次查询时各项条件在原基础上增加或减少玩家填写的备用列表上限与下限等级

超过两次自动查询找不到合适的目标将会自动结束,选择模式三的请根据自己角色的详情正确填写各项参数。



====================================================================================================================================================
门派:嵩山派
 楼主| 发表于 2018-9-22 22:51:12 | 显示全部楼层
honglian@tj 发表于 2018-9-22 19:16
我把locl.hour >= 8删掉了就正常了。

这样,你在function checkPrepareOver() 里面加一个 exe('time')应该就没问题了。
门派:天龙寺
发表于 2018-9-2 13:27:32 | 显示全部楼层
大神水平不一般…………            
门派:昆仑派
发表于 2018-9-2 16:05:47 | 显示全部楼层
哇 这也能自动啊 感觉很难的样子啊
门派:铁掌帮
发表于 2018-9-2 16:07:21 | 显示全部楼层
我说看你早上在蝶梦楼发呆呢,原来再搞新robot,支持支持。
门派:铁掌帮
发表于 2018-9-2 16:20:57 | 显示全部楼层
土拨鼠大神失踪那么久去那里玩儿了啊   
门派:铁掌帮
发表于 2018-9-2 16:21:52 | 显示全部楼层
这个必须点赞支持并且加分啊               
门派:铁掌帮
发表于 2018-9-2 16:26:07 | 显示全部楼层
呃,报错,貌似是nowtime.hour有问题。
门派:嵩山派
 楼主| 发表于 2018-9-2 18:05:16 | 显示全部楼层
本帖最后由 marmot@tj 于 2018-9-2 18:08 编辑
tzren@tj 发表于 2018-9-2 16:26
呃,报错,貌似是nowtime.hour有问题。


exe('cond')

if locl.hour == 9 and locl.min <= 5 and not condition.busy and condition.busy == 0 then                                      --每天 9:00 - 9:05 前检查,没有处在忙碌状态则启动全自动蝶梦楼

return dml_check()

end
门派:嵩山派
 楼主| 发表于 2018-9-2 18:06:45 | 显示全部楼层
presever@tj 发表于 2018-9-2 16:21
这个必须点赞支持并且加分啊

忙啊,我也要吃饭的嘛。。。最新在策划一些事情
门派:嵩山派
 楼主| 发表于 2018-9-2 18:28:22 | 显示全部楼层
等我找个时间把这个版本改进一下,这个版本确实做得有点复杂了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-6 12:44 , Processed in 0.038337 second(s), 33 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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