新人学mush,想求指教
哪位高手写个打坐机器人和hp之后能自动显示血量的机器人,最好能注明 “发送给”哪里选哪个北大侠客行MUD,中国最好的MUD 自己写的那个
匹配 ^[>]*\s*【 气血 】\s+(\d+)\s+/\s+(\d+)\s+\[\s*(\d+)\%]\s+【 内力 】\s+(\d+)\s+./\s+(\d+)\s+.*$
发送 say %1 %2 %3 %4 %5
发送到:选脚本解释器
但是无法触发到 自己写的那个
匹配 ^[>]*\s*【 气血 】\s+(\d+)\s+/\s+(\d+)\s+\[\s*(\d+)\%]\s+【 内力 】\s+(\d+)\s+./\s+(\d+)\s+.*$
发送 say %1 %2 %3 %4 %5
发送到:选脚本解释器
但是无法触发到 回复 2# canglan
发送到选第一个(默认的那个) 本帖最后由 dnd 于 2012-11-18 01:51 AM 编辑
require "wait"
-- ------------------------------------------------- 初始化一些必要的数据-- -----------------------------------------------function init () wait.make (function() while true do cmd_count = 0 cmd_count_start = GetInfo (232) wait.time (1) end end)end
-- ------------------------------------------------- 防止输入指令过快-- -----------------------------------------------function anti_toofast() local t cmd_count = cmd_count + 1 if cmd_count < 15 then return end cmd_count_end = GetInfo (232) t = cmd_count_end - cmd_count_start t = 1 - (t - t%0.1) + 0.1 if t < 0.1 then t = 0.1 end print ("输入指令速度控制:等待"..t.."秒...") wait.time (t)end
-- ------------------------------------------------- 执行函数,加入了anti_toofast()-- -----------------------------------------------runre = rex.new ("([^;*\\\\]+)")function exe (str) if str == "" or str == nil then return end _cmds = {} local i = 0 n = runre:gmatch (str, function (m, t) i = i + 1 _cmds = m end) if (_cmds == nil) then return end for i, cmd in pairs (_cmds) do anti_toofast() Queue (cmd, 0) Note (cmd) endend
-- -----------------------------------------------
-- 获取hp信息
-- -----------------------------------------------
function get_hpinfo()
local m={}
exe("hpbrief")
l,w=wait.regexp("#(.*),(\\d+),(\\d+),(\\d+),(\\d+),(\\d+)")
m.exp=w
m.pot=w
m.neili_max=w*1
m.neili_cur=w*1
m.jingli_max=w*1
m.jingli_cur=w*1
l,w=wait.regexp("#(.*),(\\d+),(\\d+),(\\d+),(\\d+),(\\d+)")
m.qixue_max=w*1
m.qixue_percent=w*1
m.qixue_cur=w*1
m.jingshen_max=w*1
m.jingshen_percent=w*1
m.jingshen_cur=w*1
m.qixue_zb=m.qixue_cur*100/m.qixue_max
m.neili_percent=m.neili_cur*100/m.neili_max
m.hpb=m.qixue_cur*10/(m.neili_cur+1)
return m
end
-- -----------------------------------------------
-- dazuo到双倍内力,误差小于26内力小点
-- -----------------------------------------------
function dazuo()
while true do
hp=get_hpinfo()
if hp.qixue_cur>=hp.qixue_max*0.9 then
if hp.jingshen_cur>=hp.jingshen_max*0.9 then
if hp.neili_cur>=(hp.neili_max*2-26) then
print("打坐双倍内力完毕!")
break
else
if (hp.neili_max*2-hp.neili_cur-10) > (hp.qixue_cur*0.91-1) then
exe("dazuo "..(hp.qixue_cur*0.91-1)/1.3)
l,w=wait.regexp("你运功完毕,深深吸了口气,站了起来。|你将真气在体内沿脉络运行了一圈,缓缓纳入丹田,放下手,长吐了一口气。|你只觉神元归一,全身精力弥漫,无以复加,忍不住长啸一声,徐徐站了起来。")
else
exe("dazuo "..(hp.neili_max*2-hp.neili_cur-10)/1.3)
l,w=wait.regexp("你运功完毕,深深吸了口气,站了起来。|你将真气在体内沿脉络运行了一圈,缓缓纳入丹田,放下手,长吐了一口气。|你只觉神元归一,全身精力弥漫,无以复加,忍不住长啸一声,徐徐站了起来。")
end
end
else
exe("exert regenerate")
end
else
exe("exert recover")
end
end
end
这个可以做成插件,比如上述代码作为mylib.lua,插件代码为:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE muclient>
<!-- Saved on 星期五, 十一月 09, 2012, 8:48 上午 -->
<!-- MuClient version 4.84 -->
<!-- Plugin "dazuo" generated by Plugin Wizard -->
<muclient>
<plugin
name="dazuo"
id="b6a5dab140f604c9559af393"
language="Lua"
date_written="2012-11-09 08:46:53"
requires="4.84"
version="1.0"
>
</plugin>
<!--Get our standard constants -->
<include name="constants.lua"/>
<!--Aliases-->
<aliases>
<alias
name="dazuo_start"
script="main"
match="#dazuo"
enabled="y"
sequence="100"
>
</alias>
</aliases>
<!--Script-->
<script>
<![CDATA[
require "mylib"
require "wait"
DeleteTemporaryAliases ()
DeleteTemporaryTimers ()
DeleteTemporaryTriggers ()
function main()
init()
wait.make(function()
dazuo()
end)
end
AddAlias("dazuo_start","#dazuo","",alias_flag.Enabled + alias_flag.Replace,"main")
]]>
</script>
</muclient>
把F12的宏设置成#dazuo,
这样以后按F12就会自动打坐到双倍内力。 额。。排版乱了,凑乎看吧yct63. 本帖最后由 labaz 于 2012-11-18 12:03 AM 编辑
额。。排版乱了,凑乎看吧
dnd 发表于 2012-11-17 09:50 PM http://pkuxkx.com/forum/images/common/back.gif
少了一堆函数,你这插件给谁用啊yct7 少了一堆函数,你这插件给谁用啊
labaz 发表于 2012-11-17 04:01 PM http://pkuxkx.com/forum/images/common/back.gif
我封装了一下,你可能没有仔细看,没关系,我解释一下:
插件require wait和mylib。wait是lua线程封装库,mylib是自己写的库,实现dazuo()函数。
dazuo()用的是get_hpinfo()提取hp信息,exe()是发送命令,支持分号,自动防止一次性指令过长,自动断点停顿。
工作很正常啊,dazuo到双倍内力,误差小于26内力小点,缺点没有疗伤,自己加上就好。我9号写好用到现在,还没有出现问题。 附上插件,函数库编译过。用法:
1,把mylib.lua放到mush根目录,或根目录里的lua文件夹下。
2,载入插件dazuo.xml
3,游戏中输入#dazuo
4,为了方便,按键F12可以设置成#dazuo,以后按下F12就自动打坐双倍内力。 回复 9# dnd
没想到啊,yct43.童童居然是技术流选手……赶紧开发全自动机器人~