|
以下只是我的理解,还请大师兄指正。
绕指是武当最有用的技能,没有之一,武当弟子在相当长时间里(甚至可以说永远)都要用绕指进行克制,所以把绕指设置好就是武当弟子的必修课了。
绕指buff持续时间8秒,cd2秒,在buff持续期间可重复覆盖,可通过set设定快,正,奇,刚,柔,妙,险,空,太极剑300级开始,每增加100级太极剑,增加一个设定,以上是对绕指一般性的认识。
现有的机器,无论是公版还是各种定制版,kezhiwugong的框架基本是同一个,在应对敌人不同属性武功时,根据任务不同调用不同系列的克制变量,比如pzheng这一系列,或者是zpk这一系列,等等。如果把绕指的pfm直接加入到这些变量里,会出现反复raozhi导致合气积攒不起来的问题,因为上面的这些克制变量都是被kezhiwugongpfm调用,然后每次心跳都要执行一遍,为了应对这个问题,之前有一些解决方案,比如
如版的
http://www.sjever.net/bbs/forum. ... hlight=%C8%C6%D6%B8
井冈山的
http://www.sjever.net/bbs/forum. ... hlight=%C8%C6%D6%B8
我以前写的
http://www.sjever.net/bbs/forum. ... hlight=%C8%C6%D6%B8
这些都有不同程度的问题,基本上总结起来就是两大问题
1、使用unset 绕指;jifa sword taiji-jian,或者使用jifa sword none;jifa sword taiji-jian来实现切换太极剑慢属性的问题。这里有一个误区,经过我多次观察再加上请教大师兄,在绕指buff持续期间,这些方法是没办法切换到慢属性的,只能等绕指buff消失,如果想强行取消raozhibuff只能用清除所有buff的那个set,那就得不偿失了。因为有这样的问题,所以在用太极剑做任务时,不要使用慢属性进行克制,除非npc是不变招的,否则一定出问题。
2、当npc连续快速变招时,无法准确及时切换克制,释放绕指,最明显的就是应对官府任务npc时,经常会克制混乱。前面的3个版本都有这个问题。
针对第一个问题,很容易解决,就是不使用慢属性,使用raozhi里有的属性进行替代进行克制,具体用什么,要根据太极剑的等级而定,如果是900级以上的太极剑,那当然就是用险来代替慢了。
针对第二个问题,可以把以往填写在pzheng或者zpk这些克制变量里的命令分成三个独立的部分,每部分用单独的代码控制:
第一部分是战斗指令部分,这部分是现有机器自带的,心跳执行,不需要修改,只是在设置pzheng或者zpk时,填写除了set 绕指和perform sword.raozhi之外的所有用到的命令。
第二部分是set 绕指 部分,这部分需要增加新的函数进行控制。把set 绕指和perform sword.raozhi分开来写,是有很多好处的,既方便编写程序,又可以应对与游戏服务器交互的延迟所带来的影响,具体自行体会。多说一句,set这个指令很有意思,可以set xxx yyy,这里的xxx和yyy可以是任意的东西,可以用set这里指令作很多有用的触发。
第三部分是perform sword.raozhi部分,这部分要用timer控制,保证及时发出raozhi,在合气不足或者npc处于不能应战状态(多条命)也要继续发raozhi,直到发出来为止(除非战斗已经完全结束)。
具体解决方法如下:
-----------------------------------------------------------
kezhi_valueraozhi={--应对npc不同属性时,set 绕指 的属性,这个要根据太极剑等级设置,这个表是1000级太极剑的,具体按自己需要修改
["正"]='妙',
["奇"]='险',
["刚"]='快',
["柔"]='险',
["快"]='柔',
["慢"]='刚',
["妙"]='奇',
["险"]='正',
["空"]='空',
["无"]='快',
}
function setraozhi_trigger()--增加raozhi的触发判断语句
create_trigger_t('raozhi1','^(> )*你施展出太极剑法中的绕指柔剑,剑势陡然变(\\D*)手中\\D*','','raozhi_on')
create_trigger_t('raozhi2','^(> )*你剑意一滞,又恢复到原来的攻势','','raozhi_off')
create_trigger_t('afight_raozhi','^(> )*设定环境(\\D*)','','raozhi_go')
SetTriggerOption("raozhi1","group","afightRZ")
SetTriggerOption("raozhi2","group","afightRZ")
end
function raozhi_on(n,l,w)
if score.party=='武当派' and job.name~='pk' and job.name~='hubiao' and job.name~='songmoya' then
EnableTimer('walkWait22',false)
DeleteTimer("walkWait22")
EnableTimer('walkWait33',false)
DeleteTimer("walkWait33")
flag.raozhibuff=true
raozhi_tmp=nil
raozhi_tmp=tostring(w[2])
print("绕指柔剑开启!")
EnableTrigger('afight_raozhi',true)
end
end
function raozhi_off()
if score.party=='武当派' and job.name~='pk' and job.name~='hubiao' and job.name~='songmoya' then
flag.raozhibuff=false
print("绕指柔剑关闭!")
raozhi_start_a()
end
end
function raozhi_start_a()
EnableTimer('walkWait22',true)
if score.party=='武当派' and flag.raozhibuff==false and flag.raozhibutton==true then
print("打开绕指!")
exe('perform sword.raozhi')
end
create_timer_s('walkWait22',0.5,'raozhi_start_a')
end
function raozhi_start_b()--似乎是不需要用这个函数,可以都用raozhi_start_a(),最初写这部分的时候是考虑了定时器未正常关闭的问题,懒得改了,谁测试一下只用raozhi_start_a()有没有问题。
EnableTimer('walkWait33',true)
if score.party=='武当派' and flag.raozhibuff==false and flag.raozhibutton==true then
print("打开绕指!")
exe('perform sword.raozhi')
end
create_timer_s('walkWait33',0.5,'raozhi_start_b')
end
function raozhi_restart(kzValue) --根据npc变招重新设定绕指
local raozhi_sx=kezhi_valueraozhi[kzValue]
print(raozhi_sx)
EnableTimer('walkWait33',false)
DeleteTimer("walkWait33")
exe('set 绕指 '..raozhi_sx..'')
end
function raozhi_go(n,l,w)
if string.find(w[2],"绕指") then
raozhi_set=nil
if string.find(w[2],"快") then
raozhi_set="快"
elseif string.find(w[2],"正") then
raozhi_set="正"
elseif string.find(w[2],"奇") then
raozhi_set="奇"
elseif string.find(w[2],"刚") then
raozhi_set="刚"
elseif string.find(w[2],"柔") then
raozhi_set="柔"
elseif string.find(w[2],"妙") then
raozhi_set="妙"
elseif string.find(w[2],"险") then
raozhi_set="险"
elseif string.find(w[2],"空") then
raozhi_set="空"
elseif string.find(w[2],"无") then
raozhi_set="无"
else
print("绕指设定识别失败!")
end
else
return
end
if score.party=='武当派' and job.name~='pk' and job.name~='hubiao' and job.name~='songmoya' then
if raozhi_set~=nil and raozhi_set~=tostring(raozhi_tmp) then
flag.raozhibuff=false
raozhi_start_b()
print("判断成功!")
end
end
end
--------------------------------------
上面是增加的函数,直接写到kezhiwugong文件的后面,以下是需要在现有代码里增加的部分
1、function kezhiwugongAddTarget(t_name,t_id)
函数里增加代码,加到kezhiwugongStart()前面即可
if job.name~='pk' and job.name~='hubiao' and job.name~='songmoya' then
exe('set 绕指 空')--这里是为了进入战斗盲打一个空属性绕指,如果太极剑不足1000,可以把空改成快
end
2、function kezhiwugongStart()里for循环前面加入
if job.name~='pk' and job.name~='hubiao' and job.name~='songmoya' then
raozhi_start_a()
end
在一系列settriggeroption的最后增加
if job.name~='pk' and job.name~='hubiao' and job.name~='songmoya' then
setraozhi_trigger()
end
在EnableTriggerGroup('afight',true)后面增加
EnableTriggerGroup('afightRZ',true)
EnableTrigger('afight_raozhi',false)
3、在function kezhiwugongSetPerform(tempatt,i,targetid)最后一个end前增加
if job.name~='pk' and job.name~='hubiao' and job.name~='songmoya' then
raozhi_restart(tempatt)
end
4、在function kezhiwugong()增加
raozhi_tmp=nil
flag.raozhibuff=false
flag.raozhibutton=true
5、在function kezhiwugongclose()增加
EnableTriggerGroup('afightRZ',false)
DeleteTriggerGroup("afightRZ")
EnableTrigger('afight_raozhi',false)
DeleteTrigger("afight_raozhi")
flag.raozhibuff=false
flag.raozhibutton=false
EnableTimer('walkWait22',false)
DeleteTimer("walkWait22")
EnableTimer('walkWait33',false)
DeleteTimer("walkWait33")
6、在wudang.lua文件的function wudangBack(n,l,w)中增加
flag.raozhibutton=false
在huashan.lua文件的huashan_getget=function()函数中增加
flag.raozhibutton=false
在guanfu.lua文件的function guanfuSuspectDie()函数中增加
flag.raozhibutton=false
这里把经常需要作的3个任务改了一下,雪山任务,蝶梦楼任务,可以自行修改,把flag.raozhibutton=false加到类似的函数里,也就是判断npc被打死或者任务结束的函数,避免在战斗结束到执行kezhiwugongclose之间的这一段时间还在不断的发perform sword.raozhi指令。
---------------------------------------------
以上是代码,其中进入战斗盲打一个raozhi是沿用井冈山的思路,你也可以不盲打,根据npc出招进行判断再出raozhi,或者更进一步买了vpearl,l npc直接看到npc的武功属性,直接出对应克制的绕指,不过这就需要自己修改代码了。
再有上面的是用在1vs1战斗里的,pk被我排除了,pk肯定要自己另外写的,再有排除的就是护镖和颂摩崖,这两个是1vs n的战斗肯定不能直接用上面的,需要增加一个函数,比如颂摩崖加一个raozhiset函数,根据两个npc的属性确定set 绕指的属性。
以上代码最好在太极剑等级500级以后使用,这样克制就比较全了,用来做官府任务最好太极剑要有700级以上,否则比较危险,官府任务我小号的最低配置是,武器伤害450,镶嵌4级合气宝石,quest解满左右互博,内力不要太低7、8万还是要有的,zpk里除了get、jifa之类的就只用perform sword.lian来打,目前小号150M还是可以随便打的,120、130的圣阶克制在防御上还是很猛的,基本可以无视npc的攻击,如果被npc busy了导致无法及时切换raozhi那确实没办法,只能等以后声望够了解个凌波微步疾,那就更稳妥了,不过前期来看,基本死亡率很低,2、3天死一次吧,已经远强于其他门派了。
|
|