| 
 | 
 
以下只是我的理解,还请大师兄指正。 
绕指是武当最有用的技能,没有之一,武当弟子在相当长时间里(甚至可以说永远)都要用绕指进行克制,所以把绕指设置好就是武当弟子的必修课了。 
绕指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天死一次吧,已经远强于其他门派了。 
 |   
 
 
 
 |