szybd
发表于 2014-1-8 12:08:19
群伤玩了,来个物理的。
cjgpfmphy= {basicskill = "cuff",specialskill = "luohan-quan",perform = "luohan",weapon = "none"}--物理功夫
---------------------------------------------------------------------
function cjgpfmp(nameid)
if cjgpfmphy.basicskill == "" or cjgpfmphy.basicskill == "none" or cjgpfmphy.basicskill == nil then
return
else
Execute("unwield all")
if cjgpfmphy.weapon == "none" then
Execute("bei none")
Execute("enable "..cjgpfmphy.basicskill.." "..cjgpfmphy.specialskill)
Execute("bei "..cjgpfmphy.basicskill)
else
Execute("wbei none")
Execute("enable "..cjgpfmphy.basicskill.." "..cjgpfmphy.specialskill)
Execute("wield ".. cjgpfmphy.weapon)
end
if nameid ~= nil and nameid ~= "" then
Execute("perform "..cjgpfmphy.basicskill.."."..cjgpfmphy.perform.." "..nameid)
else
Execute("perform "..cjgpfmphy.basicskill.."."..cjgpfmphy.perform)
end
if cjgpfmphy.weapon ~= "none" then
Execute("unwield all")
end
end
end
szybd
发表于 2014-1-8 12:10:01
如果你不想用pfm,平砍也行:
cjgpingkan={basicskill ="",specialskill =""}--平砍功夫
function cjgpk()
if cjgpingkan.basicskill == "" or cjgpingkan.basicskill == "none" or cjgpingkan.basicskill == nil then
return
else
Execute("unwield all")
if cjgpingkan.weapon == "none" then
Execute("bei none")
Execute("enable "..cjgpfmche.basicskill.." "..cjgpfmche.specialskill)
Execute("bei "..cjgpfmche.basicskill)
else
Execute("wbei none")
Execute("enable "..cjgpfmche.basicskill.." "..cjgpfmche.specialskill)
Execute("wield ".. cjgpfmche.weapon)
end
end
end
szybd
发表于 2014-1-8 12:12:18
功夫按上门讲解的次序依次起作用。如果你只想平砍起作用,那就把前面的功夫都设为"".
如果你让几门功夫同时期作用,你要注意了,一旦一门功夫生效,自身busy了,后面的招就发不出来了,所以需根据自身功夫特点,确定自己采用什么功夫策略。
szybd
发表于 2014-1-8 12:14:52
功夫描述完了,那么打到什么时候,算个尽头?
当然把所有该消灭的对象消灭干净,就算完了。
怎么知道所有该消灭的对象都已经消灭了呢?look一下不就可以了吗?
look当然可以,但是效率不高,没打一次看一下,信息传递太多。我们通过其他触发来搞定。
szybd
发表于 2014-1-8 12:18:38
name = "cjg12"
match="^[>\\s]*这里没有 husi zhanglao。.*"
cmd = "cjgnozhanglao()"
addmytriggerzz(name,match,cmd)
name = "cjg13"
match="^[>\\s]*这里没有 husi sengren.*|^[>\\s]*跟随自己?.*|^[>\\s]*你要自杀吗?.*|^[>\\s]*用 suicide 指令会比较快.*"
cmd = "cjgnosengbing()"
addmytriggerzz(name,match,cmd)
name = "cjg14"
match="^[>\\s]*你决定开始跟随\\S+一起行动。.*"
cmd = "cjghaveenemy()"
addmytriggerzz(name,match,cmd)
根据这几个触发器,就可以控制战斗的过程了。
szybd
发表于 2014-1-8 12:19:56
如果战斗中内力不够怎么办?咳药呗,当然通过触发来实现。
如果中毒怎么办?嗑药呗,还是通过触发来实现。
hkyyxss
发表于 2014-1-8 13:38:21
必须要膜拜!yct23
szybd
发表于 2014-1-8 14:39:15
补充内力的处理有两处:
第一次处,战斗过程中,提醒没有内力了。则马上吃一颗回气药。触发如下:
name = "cjg15"
match="^[>\\s]*你的内力不.*|^[>\\s]*你内力不.*"
cmd = "Execute('eat huiqi yao')"
addmytriggerzz(name,match,cmd)
第二处,在当地敌人全部消灭干净时:执行hpbrief,检查内力。同时恢复气血。
name = "cjg16"
match="^[>\\s]*\\#(\\d+),(\\d+),(\\d+),(\\d+),(\\d+),(\\d+).*"
cmd = "cjghuifu(%1,%2,%3,%4,%5,%6)"
addmytriggerzzhp(name,match,cmd)
name = "cjg17"
match="^[>\\s]*\\#(\\d+[\\.\\d]*)M*,(\\d+),(\\d+),(\\d+),(\\d+),(\\d+).*"
cmd = "cjggetforce(%1,%2,%3,%4,%5,%6)"
addmytriggerzzhp(name,match,cmd)
吃解毒丸的触发如下:
name = "cjg18"
match="^[>\\s]*你身体一阵颤抖,痛苦地哼了一声。混身经脉疼痛欲裂,扭结成怪异的肉筋.*"
cmd = "Execute('eat jiedu wan')"
addmytriggerzz(name,match,cmd)
这里有个问题:吃下解读丸后,还会发作一次。
如果只是这么处理的话,可能会多吃一颗。
现在,我还不清楚,没毒的时候让不让吃,如果没毒的时候,不让吃,就这么处理就可以了。
如果没毒的时候让吃,这样处理是有问题的,浪费啊。
可以起一个定时器,延时判断。如果随后出现"你身上的毒性终于全部消失了。",就不吃,否则就吃。
暂时,先简单处理,等确认了具体情况再说。
szybd
发表于 2014-1-8 14:41:41
接下来就是战后的恢复了:触发器已经提供了。剩下的就是内力恢复和气血恢复两件事了。
function cjghuifu(fullmaxqixue,currentmaxqixue,realqixue,fullmaxjingshen,currentmaxjingshen,realjingshen)
local time1 = 1+math.floor((fullmaxqixue-currentmaxqixue)*100/fullmaxqixue/5)
Note("恢复生命力的触发")
Execute("halt")
if currentmaxqixue < fullmaxqixue then
for i = 1,time1 do
Execute("eat jinchuang yao")
end
end
if realqixue < fullmaxqixue*0.8 then
Execute("yun recover")
end
if cjgstate == "map1walk" then
cjgwalk()
elseif cjgstate == "map2bianli" then
cjgbianlicont()
else
Note(cjgstate)
end
end
mycurrentneili = 0
mymaxneili = 0
function cjggetforce(jingyan,qianneng,maxneili,currentneili,maxjingli,currentjingli)
Note("得到内力信息")
mycurrentneili = currentneili
mymaxneili = maxneili
if currentneili/maxneili <1/9 then
Execute("eat huiqi yao;eat huiqi yao;eat huiqi yao")
elseif currentneili/maxneili <4/9 then
Execute("eat huiqi yao;eat huiqi yao")
elseif currentneili/maxneili <7/9 then
Execute("eat huiqi yao")
end
end
szybd
发表于 2014-1-8 14:46:14
现在我还不知道,在藏经阁里面,普通金疮药能不能用。如果普通金疮药不能用,进去时,要注意不要带,否则会干扰。
精在爬藏经阁时,损伤不厉害,就不管它的恢复了。
恢复完,检查自己的状态,如果是在第一地图中行走"map1walk",那么就执行cjgwalk()
cjgwalk()函数我们前面已经分析过了。
如果当前状态是在第二地图中遍历"map2bianli",那么就执行继续遍历cjgbianlicont()
怎样继续遍历,等到第二个地图的处理时再展开。
页:
1
2
3
4
5
6
[7]
8
9
10