|
楼主 |
发表于 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
首先介绍使用方法:
克制武功使用很简单,只需要下面两句代码就可以让克制武功模块生效了。
- kezhiwugong()
- kezhiwugongAddTarget(job.target,job.id)
复制代码
杀完人,调用下面的代码关闭克制就可以了。
接下来带大家进入克制模块内部去看看究竟:
克制模块文件的开头,大家可以主要关注local kezhiDesc={}表的定义部分
这里定义了武功克制的属性表,举例如下:
- kezhiDesc["正"]={
- ["慕容刀法"]={"「劈天盖地满壮志","「弯刀逆转倒乾坤","「遥看万疆千里雪","「壮志豪气满江湖","「笑指银汉摘星斗",},
- ["金刚降伏轮"]={"光明势」",},
- ["全真剑法"]={"「横行漠北","「排山倒海","剑自左而右划出一个大弧,一式「顺水推舟」","「马蹴落花","「开天辟地」,剑从上至下猛劈","「雷电交加","「人神共愤","剑影晃动,踏奇门,走偏锋,一式「分花拂柳」",},
复制代码
- kezhiDesc["刚"]={
- ["大金刚拳"]={"「礼敬如来","「遇佛传法","「幽冥搜魂","「引火炼妖","「魂散心魔","「无相法相","「攀天祥云","「超度极乐",},
- ["盘根错结斧"]={"「力劈华山","「幻影流动","「震山式","「枯树盘根","向左一个滑步,一招「高山流水」,出其不意转到",},
复制代码
这里稍作解释,武功后面的描述,是用于判断和识别这个武功的。
接下来挑主要的函数介绍下:
1. kezhiwugongStart(),这个函数中下面这个触发器很重要
- create_trigger_t('afight1'..i,'^(> )*(\\D*)'..npc_name[i]..'(\\D*)'..'!
- [b]这里有一个建议:建议大家在这个函数后面加上下面这段设置,因为这个触发器的判断范围相当大,所以可能会导致其他触发器不会被触发,所以把设置可以让其他触发器继续触发的选项打开。
- [/b]
- [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]和上面的武功描述去比较,如果发现有匹配的就返回这个武功了,武功属性自然也就返回来了。
这里多说一点,大家可以看到公版在进入武功识别以前,有一个四象掌的判断,这里就是针对一些特殊的武功招式,如果进入克制识别可能会误判,所以在判断以前进行处理和设定,大家可以根据自己战斗的过程,如果发现克制识别有问题,可能就需要在这里做一些补充,修正识别模块了。
-
- if string.find(tmpdes,"「摘星换斗」") and string.find(tmpdes,"的后背斫去") then
- return kezhiwugongValue("快",i,"四象掌")
- end
复制代码
3. function kezhiwugongsuccess(kezhi_cmd,k_order,npci), 这个函数是成功识别以后进行下一步处理的,这里需要注意一点,就是下面这段代码:
默认公版会在不是下面这几个任务:雪山,武当等之外的任务,识别成功后立即关闭克制模块,这里可能根据自己需要,做修改。
- if job.name~='xueshan' and job.name~='wudang' and job.name~='Dummyjob' and job.name~='songmoya' then
- kezhiwugongclose()
- end
复制代码
4. function kezhiwugongSetPerform(tempatt,i,targetid), 这个函数的作用是根据你识别到武功的属性,和你事先在iset里设定好的应对pfm,设定wimpy系统进行战斗攻击。
武功识别模块的代码并不多,以上就是主要大家可能需要自己修正的地方。,'','kezhiwugongcheck'..i)[/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]和上面的武功描述去比较,如果发现有匹配的就返回这个武功了,武功属性自然也就返回来了。
这里多说一点,大家可以看到公版在进入武功识别以前,有一个四象掌的判断,这里就是针对一些特殊的武功招式,如果进入克制识别可能会误判,所以在判断以前进行处理和设定,大家可以根据自己战斗的过程,如果发现克制识别有问题,可能就需要在这里做一些补充,修正识别模块了。
-
- if string.find(tmpdes,"「摘星换斗」") and string.find(tmpdes,"的后背斫去") then
- return kezhiwugongValue("快",i,"四象掌")
- end
复制代码
3. function kezhiwugongsuccess(kezhi_cmd,k_order,npci), 这个函数是成功识别以后进行下一步处理的,这里需要注意一点,就是下面这段代码:
默认公版会在不是下面这几个任务:雪山,武当等之外的任务,识别成功后立即关闭克制模块,这里可能根据自己需要,做修改。
- if job.name~='xueshan' and job.name~='wudang' and job.name~='Dummyjob' and job.name~='songmoya' then
- kezhiwugongclose()
- end
复制代码
4. function kezhiwugongSetPerform(tempatt,i,targetid), 这个函数的作用是根据你识别到武功的属性,和你事先在iset里设定好的应对pfm,设定wimpy系统进行战斗攻击。
武功识别模块的代码并不多,以上就是主要大家可能需要自己修正的地方。 |
评分
-
1
查看全部评分
-
|