找回密码
 注册
搜索
查看: 5231|回复: 21

【公版介绍】小猪猪给你讲解公版机器人

[复制链接]
门派:古墓派
发表于 2019-2-23 17:25:11 | 显示全部楼层 |阅读模式
本帖最后由 joyce@tj 于 2019-2-23 17:41 编辑

以前玩mud都是zmud4.62版本,一开始接触mush的公版简直就是一脸懵逼。{:2_37:}

相信第一次接触的同学一定有跟我一样的体会,我当初是把公版的代码好一顿研究,费了不少周折和时间。{:2_38:}

所以想把自己对公版的一些了解在这里集中给大家介绍一下,方便大家快速了解公版的基本功能模块,这样出问题,或者针对自己ID的特点也能快速找到对应的模块做检查。

当然,我对公版的了解也肯定有盲点,如果有错误的地方,欢迎大家拍砖。

论坛里有很多大神级的人物,如袭人,相神,岛主,土拨鼠,小风神等等,都是机器人高手中的高手,土拨鼠和岛主都给与过我很多帮助,非常感谢两位老师!!{:2_42:}

我也是馆长新人武器计划的受益者,最后必须要感谢一下馆长大人!

评分

2

查看全部评分

门派:古墓派
 楼主| 发表于 2019-2-23 17:25:47 | 显示全部楼层
本帖最后由 kkfromch@tj 于 2019-2-23 17:51 编辑

下面进入正题。

你可以在下面的网址找到公版的下载地址:

http://www.sjever.net/bbs/forum. ... &extra=page%3D1

可以参照馆长大人帖子中的指导,完成下载,并开始尝试使用。

公版机器人主要文件介绍(下面用MushHome来代替你你把mushclient放在哪里)

  • MushHome/shujian.lua:shujian.lua是公版机器人的主要文件,非常的重要
  • MushHome/tj.sjever.net.MCL: 这个文件是保存你当前游戏中所有触发器,alias,触发器,变量等等信息的地方,你ID的用户名和密码就保存在这里面,所以上传到论坛的时候,请记得把自己的密码处理好哈。
  • MushHome/log.mcl:是游戏中用于记录日志信息的窗口,这个窗口会保存任务相关日志信息。
  • MushHome/locate.mcl:是游戏中用于全球定位系统的输出日志的窗口,如果走路遇到问题不妨到这里看看有什么提示。
  • MushHome/chat.mcl:这是聊天窗口,不必多说。
  • MushHome/lua:lua是一个目录,公版除shujian.lua以外所有的文件都在这个目录下面。
  • MushHome/logs:logs也是一个目录,如果游戏中打开了日志记录功能,可以放到这个下面,用于自己后续排查问题用。


      

评分

1

查看全部评分

门派:古墓派
 楼主| 发表于 2019-2-23 17:26:25 | 显示全部楼层
本帖最后由 joyce@tj 于 2019-2-23 21:31 编辑

shujian.lua内容简介,之所以叫简介,是因为这个文件的内容实在是太多了。我挑主要的结合自己的理解给大家说说。

Line1 ~ Line 25: require 这一堆,代表shujian文件引用的其他lua文件,例如require "wudang",就表示引用了./lua/wudang.lua的内容。

其中,主要需要提几个点:
require "wait" -- wait函数的源文件,就是大家用到的wait 几秒钟那个            
  1. wait.make(function()
  2.             wait.time(0.1)
  3.             --EnableTriggerGroup("wudangFind",false)
  4.             return go(wudangFangqi,"武当山","三清殿")
  5.             end)
复制代码

require "tprint" --这里引入了一个很有用的函数tprint,有什么用呢?

比如我在mushclient命令中打入/tprint(score),就可以看到score表中当前存放的内容,是不是很方便呢。
<!-- Produced by MUSHclient v 4.84 - www.mushclient.com -->


"str"=xx
"yb"=xx
"str_t"=xx
"xiangyun"="平"
"con"=xx
"int"=xx
"gold"=xx
"dex"=xx
"level"="震古铄今"
"con_t"=xx
"jjb"=xxx
"id"="joyce"
"gender"="女"
"age"=xx
"party"="古墓派"
"master"="小龙女"
"name"="小猪猪"
"title"="沧海桑田"
"dex_t"=xxx
"goldlmt"=xxx
"int_t"=xx
"tb"=xxx



require "lujing" --这个是传说中的路径文件,全球定位重要文件之一
require "chat"  --不需要太关注
require "job" --这个是任务中公共用到的一些功能
require "rooms" --这个是传说中的地图文件,全球定位重要文件之二
require "xuncheng" --巡城job模块
require "skill" --有关skills的文件,里面还有fpk的入口函数哦。
require "weapon" --有关武器的文件
require "show_switch" --右上角开关相关的,不用太关注
require "dummy" --大米任务的模块
require "husong" --少林护送任务的模块
require "xueshan" --雪山任务模块
require "wudang" --武当任务模块
require "clb" --长乐帮任务
require "huashan" --华山任务
require "songmoya" --颂摩崖上山任务模块
require "tdh" --天地会任务
require "songxin" --送信任务模块
require "hqgzc" --洪七公做菜模块
require "dolost" --失落信笺模块
require "kezhiwugong" --战斗相关,克制武功识别模块
require "armor" --防具处理模块
require "diemenglou" --土神的蝶梦楼模块


Line29 ~ Line 90: 一些公用常用函数在这里定义,如:create_trigger_t等。


Line91 ~ Line 270: 一些公用的全局变量在这里定义,并做初始化设置。

Line270 ~ 后面:就是各种功能函数的定义了。

上面是shujian.lua文件的大体结构,其他的lua文件大致也会分为这几部分


----------------------------------------------------我是分割线----------------------------------------------------敲字真的好累

下面讲讲shujian.lua中比较重要的功能函数:
  • function main(),为了便于大家搜索,我把全名列出来,大家可以直接copy关键字找到函数。
    第一个函数是main()函数,他是整个公版机器人的入口函数,登陆进来以后,第一个执行的就是main(),大家比如需要登陆后做一些什么事情,就可以写在这里面了。在该函数中,主要是做基础触发器的初始化工作,获取一些基本信息,如:hp,score等
  • shujian_set(),顺着main()函数的调用关系走下去的第一个函数,如果你第一次调用公版,会调用这个函数来设置你机器人的一些信息,大家用iset也可以调用这个函数来设置机器人。
  • check_bei(hp_dazuo_count),顺着main()函数调用关系走下去的第二个函数,check_bei函数是用来做忙碌检测的,整个代码的意思是,忙碌检查->不忙以后执行hp_dazuo_count函数(这个函数是计算打坐数值的),后面就不按照调用关系介绍了,挑选主要的来说说,大家有个印象。
  • function dis_all(),这个函数使用频率很高,主要的功能是:disable所有触发器,删除所有的计时器,大家在机器人运行过程中用sz能暂停机器人,就是因为sz调用了这个函数的缘故;所以这个函数可以暂停机器人的运行,常用于:任务开始前和结束后,重置机器人状态;任务找到人以后,专心杀npc以前重置一下机器人,避免杀人过程中被误触发乱跑啥的。总之,这个函数功能很强大,可以暂停你的机器,让他专心干你想让他干的事儿。
  • function hp_trigger(),这个函数在main()函数中调用,用来初始化hp触发器,hp群组触发器在公版机器人中,一般是保持长期打开状态的,所以如果你想有一些触发器在机器人中始终打开,可以考虑加在这个里面,当然,这个函数里已经加入了一些和hp,score等无关的内容了,大家感兴趣可以自行查看。
  • function checkfood():这个函数是公版任务循环过程中会调用的一个转换函数,如果你手动在中断了机器人,可以用/check_food()来让机器人重新运行。
  • function lingwu():这个函数是达摩院领悟的函数,可以/lingwu()去领悟,领悟过程都定义在这个函数系列中。
  • function xuexi():这个函数是跟师傅学习技能的函数,可以/xuexi()去学习。
  • function literate():同样的,这个是读写的函数。
  • function checkPrepare():这个任务转换过程中的一个函数,公版中是在checkfood()函数流程中调用到,用于检查任务物品的函数。
  • function letterLost():这个是做失落信笺的入口函数。
  • function check_job():这个是任务函数,确定你下一个任务去做哪个任务就是这个函数的功能。
  • function check_busy(func,p_cmd):这个是忙碌检测函数。
  • function check_halt(func):这个是忙碌检测函数。
  • function check_bei(func,p_cmd):这个是忙碌检测函数。
  • function checkWait(func,sec):这个函数的作用是等sec秒钟执行func。
  • function idle_set():这个就是反发呆的函数了,超时后重新链接就是这个函数的作用。
  • function checkBags(func):检查背包函数,执行后可以让机器人获取到身上和背囊里物品。
  • function check_xue():找薛慕华疗伤的函数。
  • function Ronglian():熔炼的函数。
  • function check_pot(p_cmd):这个是跟师傅学习技能,学习读写,去领悟的入口函数,确认pot,然后去干活。
  • function wudang_eat():这个是武当茶亭吃喝的函数,如果肚子饿了可以/wudang_eat()一下。



上面就是shujian中主要功能的入口函数,相信大家熟悉这些后,哪个遇到问题就可以有针对性的去检查对应的代码。

评分

1

查看全部评分

门派:古墓派
 楼主| 发表于 2019-2-23 17:26:59 | 显示全部楼层
本帖最后由 joyce@tj 于 2019-2-23 23:25 编辑

在公版机器中,最大的一个区别就是全球定位系统,这个系统比zmud的路径文件要好一些。

mush中的全球定位不需要去一个集结点,比如武馆大门/当铺之类的去中转,而是点到点,从出发点直接到目的地,计算最短路径,然后走过去。

下一个文件,一起了解一下全球定位里面的两个文件:lujing.lua和rooms.lua

lujing.lua

这个文件中定义了所有路经相关的函数,首先说说相关的数据结构:

road表,用于保存走路过程中需要的信息。

  1. road={}
  2. road.sour='当铺_襄阳城'
  3. road.city='襄阳城_襄阳城'
  4. road.dest='襄阳城_当铺'
  5. road.where='襄阳城当铺'
  6. road.test={}
  7. road.detail={}
  8. road.act=nil
  9. road.i=0
  10. road.temp=0
  11. road.find=0
  12. road.wipe_id=nil
  13. road.wipe_who=nil
  14. road.wipe_con=nil
  15. road.resume=nil
  16. road.wait=0.2
  17. road.steps=7
  18. road.cmd=nil
  19. road.cmd_save=nil
  20. road.maze=nil
复制代码


最重要:就是下面这两个参数,这两个参数控制了走路的步子和步频,初始的设置是比较保守的,可以根据自己的网速等做一些调整,来加快走路的速度。
  1. road.wait=0.2
  2. road.steps=7
复制代码


locl表用于保存定位信息
  1. locl={}
  2. locl.area='襄阳城'
  3. locl.room='当铺'
  4. locl.where='襄阳城当铺'
  5. locl.time='子'
  6. locl.id={}
  7. locl.exit={}
复制代码


函数只说说三个主要的函数:一个locate定位函数,一个是go函数,一个是find函数

定位函数:locate=function()

这个函数用于定位当前房间信息,让机器人知道你目前处在什么位置。

主要执行了下面这几个命令,其中id是用来判断locate房间的npc是否存在,因为有的房间名称重复,可能会用到id去判断确定是某个房间,还有我们去这个房间可能是找某个npc,所以要获取id信息;time是用来获取当前时间,因为有的路径是跟时间相关联的。

  1.     exe('id here')
  2.     exe('set look;l;time')
复制代码


function fastLocate()

fastlocate函数是精简版的定位函数,取消了id here和time两个命令,快速定位。

  1. exe('set look;l')
复制代码


走路函数:function go(job,area,room,sId)


sz这个命令其实调用的就是go这个函数,从A点走到B点。

这个函数的大致逻辑,我概要介绍一下,有助于大家去调试自己的程序。

首先输入参数,job是走到目的地后的动作,area是目的地区域,room是目的地房间名称,sid是你起始地的room id。

拿wudang任务文件中一个调用作为例子:go(wudangFindAct,dest.area,dest.room),含义是走到dest目的地,然后执行wudangFindAct这个动作。

再举一个例子,刚刚写道这里,看到被花花pk了,中断了一下,继续继续。

/go(nil,"city/dangpu") ,这个用法会更精准的去到某个房间。

第四个参数sId并不是必须的,因为go函数会在走路前先获取当前房间信息。

下面说一说走路的大致逻辑:
1. go函数会调用go_locate=function()函数,来确认当前房间信息。
2. 然后调用path_consider函数,来生成路径,生成路径的前提是确定当前房间在哪里,有重名房间的可能,因此需要考虑几种情况:
        a. 如果输入了参数sId,直接作为起点
        b. 如果没有参数sId,有重名房间,用locl.room_relation房间关联关系确定房间
        c. 用locl.id,也就是npc id的信息来确定房间
        d. 用房间的出口来判断房间唯一性,确定房间
        e. 如果是迷宫,调用roomMaze表来走迷宫
        f. 上述方法都不能确定房间信息,随机移动,然后再判断房间信息
        g. 生成路径,准备开始行走
3. function path_create(),确定了出发地和目的地以后,调用这个函数根据步长和步频 来创建走路的具体路径
4. function path_start(),开始走路
5. function go_confirm(), path_create创建的路径全部走完,确定是否走到目的地

function find(l_area,l_room) find函数介绍,这个函数用于搜索任务npc

大致逻辑如下:
1. function search(), find会调用search函数,在这个search函数中,首先会调用searchPre()函数
2. searchPre()函数, 作用是做一些准备工作,如:设置搜索的范围,根据搜索的范围,确定需要搜索的房间和搜索房间的顺序,公版的搜索,用到的是深度优先搜索算法,中间还创建了一个链表的数据结构来保存房间关系,里面挺复杂的。
3. searchStart()函数,确定好需要搜索的房间后,就开始用searchStart函数进行搜索了,这里的搜索方式有两种,华山任务,find过程中走路是一段一段走,一种是非华山任务,如wudang,一步一步走。这个区分的原因是huashan npc会主动busy你,所以你遇到他就停住了,其他任务则不行。但是这里有一些地点比较特殊,npc即使busy了你,你仍然可以移动到下一个地点,因此需要特殊处理,具体不多说,大家可以参考我写的这个帖子:

http://www.sjever.net/bbs/forum. ... d=221412&extra=

4. 如果需要搜索的房间都走完了,仍然没有找到npc,会调用find_nobody()函数,find_nobody()函数会根据每个任务自己设置的搜索失败策略,继续搜索,一共应该是搜索3次/或者4次(记不清了),3次搜索完毕还找不到,放弃任务,宣告任务失败。


以上就是lujing文件中主要的几个函数,在这个文件中,你仔细看的话,后面还有很多函数,那些函数都是用于处理特殊房间或者特殊动作的,比如武当后山,渡河渡江啊等等

-----------------------------------------------------我是分割线,好久没打这么多字了-----------------------------------------------------

下面介绍rooms.lua文件

这个文件是全球定位系统真正的核心文件,书剑地图中所有的房间信息都保存在这个文件中,并且全球定位底层的函数都在这个文件中。

这里对于全球定位底层函数不做介绍,主要介绍实用的,也就是房间的描述,方便大家自己添加修改房间信息:

举例1:
  1. Room {
  2.         id = "changan/southjl1", --这个是房间的id,这个id在地图数据中是唯一标识房间的id,不能重复。
  3.         name = "箭楼",  -- 这个是房间名称,对应书剑中房间的名字
  4.         ways = {        --这里是房间的出口信息。
  5.                 ["east"] = "changan/southchl",
  6.                 ["west"] = "changan/southchq3",
  7.         },
  8.         room_relative="南城墙-----箭楼-----南门城楼箭楼", --这个是房间的关联关系,公版中地图的房间关联关系并不全,如果你发现你有某些房间因为名字重复,定位有问题,可以考虑自己加入房间关联关系。
  9. }
复制代码


举例2:
  1. Room {
  2.         id = "changan/southjie3",
  3.         name = "南大街",
  4.         ways = {
  5.                 ["south"] = "changan/southmen",
  6.                 ["north"] = "changan/southjie2",
  7.                 ["east"] = "changan/changjie1",
  8.                 ["west"] = "changan/jinghu",
  9.         },
  10.         room_relative="南大街|镜湖----南大街----长街|永宁门南大街",
  11.         lengths ={
  12.             ["east"] = "if job.name and job.name=='husong' then return 10 else return 1 end",  --这个是路径的长度,这个长度主要和find搜索函数的搜索范围相关联,默认相邻房间的路径长度为1,如果某些房间比较特殊,就要考虑自己设置一下长度了。
  13.         },
  14. }
复制代码


举例3:
  1. Room {
  2.         id = "lanzhou/houyuan",
  3.         name = "后院",
  4.         ways = {
  5.                 ["south"] = "lanzhou/zhenting",
  6.         },
  7.         postcmds = {
  8.                 ["south"] = "#walkBusy", --postcmds选项,用于定义该方向走路走完以后执行的动作,对应的还有precmds选项
  9.         },
  10. }
复制代码


举例4:
  1. Room {
  2.         id = "village/caidi",
  3.         name = "菜地",
  4.         ways = {
  5.                 ["#hscaidi"] = "village/zhongxin", --这里#号开头,代表这个路径是一个函数,例子中的函数,用于从菜地走到村中心,这类函数一般都在lujing.lua文件中进行定义。
  6.         },
  7.         nolooks = {
  8.                 ["#hscaidi"] = true,
  9.                 ["south"] = true,
  10.                 ["north"] = true,
  11.                 ["east"] = true,
  12.                 ["west"] = true,
  13.         },
  14.         lengths = {
  15.                 ["#hscaidi"] = 500,
  16.         },
  17. }
复制代码


rooms.lua大家可能用到的基本也就是这些房间信息的修改,其他底层函数大家有兴趣可以研究,但这些函数的改动要慎重,因为随便改一点都会影响全球定位系统,不建议新手尝试。

评分

1

查看全部评分

门派:古墓派
 楼主| 发表于 2019-2-23 17:27:30 | 显示全部楼层
本帖最后由 joyce@tj 于 2019-2-23 23:59 编辑

后面我想想啥比较重要的,哦,对了,kezhiwugong.lua

这个文件是战斗必备的,每个门派的技能都不同,因此估计大家都会跟他打交道。

天玑站的特色是武功克制,这个特色最早是从天枢站的某个news开始实行的。news的时间大概是2012年年初,当时的天枢就是现在天玑的情况,大家基本都在天枢一起玩,当时这个news是一记重磅炸弹,大家挂机做任务都是死去活来的。记得我当时的id是unix@ts, 下面的链接是我曾经针对这个克制news做的一个zmud插件,用于克制武功识别,当时基本人手一份吧:

http://www.sjever.net/bbs/forum. ... p;extra=&page=1

回想好多年都过去了。

------------------------------------------------------------我是分割线,继续打字------------------------------------------------------------

好了,上面都是废话,回到正题,介绍mush的武功克制识别模块: kezhiwugong.lua

首先介绍使用方法:

克制武功使用很简单,只需要下面两句代码就可以让克制武功模块生效了。

  1. kezhiwugong()
  2. kezhiwugongAddTarget(job.target,job.id)
复制代码


杀完人,调用下面的代码关闭克制就可以了。
  1. kezhiwugongclose()
复制代码


接下来带大家进入克制模块内部去看看究竟:

克制模块文件的开头,大家可以主要关注local kezhiDesc={}表的定义部分
这里定义了武功克制的属性表,举例如下:

  1. kezhiDesc["正"]={

  2.         ["慕容刀法"]={"「劈天盖地满壮志","「弯刀逆转倒乾坤","「遥看万疆千里雪","「壮志豪气满江湖","「笑指银汉摘星斗",},

  3.         ["金刚降伏轮"]={"光明势」",},

  4.         ["全真剑法"]={"「横行漠北","「排山倒海","剑自左而右划出一个大弧,一式「顺水推舟」","「马蹴落花","「开天辟地」,剑从上至下猛劈","「雷电交加","「人神共愤","剑影晃动,踏奇门,走偏锋,一式「分花拂柳」",},
复制代码

  1. kezhiDesc["刚"]={

  2.         ["大金刚拳"]={"「礼敬如来","「遇佛传法","「幽冥搜魂","「引火炼妖","「魂散心魔","「无相法相","「攀天祥云","「超度极乐",},

  3.         ["盘根错结斧"]={"「力劈华山","「幻影流动","「震山式","「枯树盘根","向左一个滑步,一招「高山流水」,出其不意转到",},
复制代码


这里稍作解释,武功后面的描述,是用于判断和识别这个武功的。

接下来挑主要的函数介绍下:

1. kezhiwugongStart(),这个函数中下面这个触发器很重要
  1. create_trigger_t('afight1'..i,'^(> )*(\\D*)'..npc_name[i]..'(\\D*)'..'!

  2. [b]这里有一个建议:建议大家在这个函数后面加上下面这段设置,因为这个触发器的判断范围相当大,所以可能会导致其他触发器不会被触发,所以把设置可以让其他触发器继续触发的选项打开。
  3. [/b]

  4. [code]SetTriggerOption("afight1"..i,"keep_evaluating","y")
复制代码


2. function kezhiwugongcheck(i,n,l,w),大家看到afght1这个系列触发器,他会用npc的名字作为关键字,获取名字前面的字符(后文用w[2]代替),名字后面的字符(后文用w[3]代替),在kezhiwugongcheck函数中,会对w[2]进行判断,如果w[2]中包含“你”这个字,那么认为是自己出招,不进行识别,否则是npc出招,把w[2]和w[3]合并起来进行武功识别。这里识别的依据就是拿w[2]+w[3]和上面的武功描述去比较,如果发现有匹配的就返回这个武功了,武功属性自然也就返回来了。

这里多说一点,大家可以看到公版在进入武功识别以前,有一个四象掌的判断,这里就是针对一些特殊的武功招式,如果进入克制识别可能会误判,所以在判断以前进行处理和设定,大家可以根据自己战斗的过程,如果发现克制识别有问题,可能就需要在这里做一些补充,修正识别模块了。
  1.        
  2.         if string.find(tmpdes,"「摘星换斗」") and string.find(tmpdes,"的后背斫去") then
  3.                 return kezhiwugongValue("快",i,"四象掌")
  4.         end
复制代码


3. function kezhiwugongsuccess(kezhi_cmd,k_order,npci), 这个函数是成功识别以后进行下一步处理的,这里需要注意一点,就是下面这段代码:

默认公版会在不是下面这几个任务:雪山,武当等之外的任务,识别成功后立即关闭克制模块,这里可能根据自己需要,做修改。

  1.                 if job.name~='xueshan' and job.name~='wudang' and job.name~='Dummyjob' and job.name~='songmoya' then
  2.                         kezhiwugongclose()
  3.                 end
复制代码


4. function kezhiwugongSetPerform(tempatt,i,targetid), 这个函数的作用是根据你识别到武功的属性,和你事先在iset里设定好的应对pfm,设定wimpy系统进行战斗攻击。

武功识别模块的代码并不多,以上就是主要大家可能需要自己修正的地方。,'','kezhiwugongcheck'..i)[/code]

这里有一个建议:建议大家在这个函数后面加上下面这段设置,因为这个触发器的判断范围相当大,所以可能会导致其他触发器不会被触发,所以把设置可以让其他触发器继续触发的选项打开。


  1. SetTriggerOption("afight1"..i,"keep_evaluating","y")
复制代码


2. function kezhiwugongcheck(i,n,l,w),大家看到afght1这个系列触发器,他会用npc的名字作为关键字,获取名字前面的字符(后文用w[2]代替),名字后面的字符(后文用w[3]代替),在kezhiwugongcheck函数中,会对w[2]进行判断,如果w[2]中包含“你”这个字,那么认为是自己出招,不进行识别,否则是npc出招,把w[2]和w[3]合并起来进行武功识别。这里识别的依据就是拿w[2]+w[3]和上面的武功描述去比较,如果发现有匹配的就返回这个武功了,武功属性自然也就返回来了。

这里多说一点,大家可以看到公版在进入武功识别以前,有一个四象掌的判断,这里就是针对一些特殊的武功招式,如果进入克制识别可能会误判,所以在判断以前进行处理和设定,大家可以根据自己战斗的过程,如果发现克制识别有问题,可能就需要在这里做一些补充,修正识别模块了。
  1.        
  2.         if string.find(tmpdes,"「摘星换斗」") and string.find(tmpdes,"的后背斫去") then
  3.                 return kezhiwugongValue("快",i,"四象掌")
  4.         end
复制代码


3. function kezhiwugongsuccess(kezhi_cmd,k_order,npci), 这个函数是成功识别以后进行下一步处理的,这里需要注意一点,就是下面这段代码:

默认公版会在不是下面这几个任务:雪山,武当等之外的任务,识别成功后立即关闭克制模块,这里可能根据自己需要,做修改。

  1.                 if job.name~='xueshan' and job.name~='wudang' and job.name~='Dummyjob' and job.name~='songmoya' then
  2.                         kezhiwugongclose()
  3.                 end
复制代码


4. function kezhiwugongSetPerform(tempatt,i,targetid), 这个函数的作用是根据你识别到武功的属性,和你事先在iset里设定好的应对pfm,设定wimpy系统进行战斗攻击。

武功识别模块的代码并不多,以上就是主要大家可能需要自己修正的地方。

评分

1

查看全部评分

门派:古墓派
 楼主| 发表于 2019-2-23 17:28:04 | 显示全部楼层
本帖最后由 joyce@tj 于 2019-2-24 00:16 编辑

后面些什么呢,可能挑选一个任务写一些任务的lua文件结构吧,好像其他也没有什么了。

好像有人再写了,大家可以先看看下面这个关于任务流程的介绍哈。

http://www.sjever.net/bbs/forum. ... &extra=page%3D1

公版真是一个庞大的体系,佩服当初的作者。
门派:天龙寺
发表于 2019-2-23 18:21:50 | 显示全部楼层
搬好小板凳,开始吃瓜
门派:武当派
发表于 2019-2-23 21:47:35 | 显示全部楼层
前排就座 拿小本本准备听讲   
门派:明教
发表于 2019-2-23 22:32:20 | 显示全部楼层
这个真心不错!新人看mush的机器人一头雾水,有这个讲解就容易多了!

为什么早半年没人写这个出来啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-15 23:19 , Processed in 0.044533 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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